一、rman备份脚本
RUN {
allocate channel c1 device type disk ;
configure retention policy to redundancy 3 ;
configure archivelog backup copies for device type disk to 3;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
delete noprompt obsolete ;
backup database format 'g:\backup\db_%T_%U'
plus archivelog format 'g:\backup\arch_%T_%U' ;
crosscheck backup ;
delete noprompt obsolete ;
delete noprompt expired backup;
crosscheck archivelog all;
delete expired archivelog all;
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
host 'copy /y D:\oracle\product\10.2.0\oradata\orcl\control*.ctl g:\backup';
host 'copy /y D:\oracle\product\10.2.0\db_1\database\PWDorcl.ora g:\backup';
release channel c1;
}
其中crosscheck archivelog all;可以用change archivelog all crosscheck; 代替,区别见文档最后说明。
二、Rman备份恢复步骤
1、备份现有spfile ,避免新的配置文件无法启动。
sqlplus / as sysdba;
sql> shutdown immediate
SQL> startup nomount;
sql> create pfile='d:\inipfile.txt' from spfile='D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ora';
利用备份产生新的spfile文件语法:sql >create spfile='D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ora' from pfile='d:\inipfile.txt';
2、d:> rman target /
3、Rman>shutdown immedaite;
4、rman> startup nomount pfile='d:\inipfile.txt'
5、Rman> set dbid 1286861270;
6、恢复控制文件。 rman> restore controlfile from 'G:\backup\CTL_SP_C-1286861270-20200803-00';
7、恢复spfile。 rman>restore spfile to 'D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ora' from 'G:\backup\CTL_SP_C-1286861270-20200803-00';
8、装载数据库. rman>alter database mount;
9、注册备份目录 rman>catalog start with 'G:\backup\';
10、恢复数据文件 rman>restore database;
11、删除过期备份,避免找不到原有文件导致后续备份失败;
rman>crosscheck backup;
rman>delete noprompt expired backup;
rman>change archivelog all crosscheck;
rman>delete expired archivelog all;
rman>exit
12、重新进入 d:>sqlplus / as sysdba;
13、利用新的spfile启动并设置相关参数
sql> shutdown immediate;
SQL> startup mount;
sql> alter system set "_allow_resetlogs_corruption"=true scope=spfile; --关键语句,否则打不开数据库
14、打开数据库
sql>shutdown immediate;
sql>startup mount; -- 使新修改的参数起作用
sql> alter database open resetlogs;
15、重新关闭数据库,然后打开测试是否正常。
sql>shutdown immediate;
sql>startup;
16、查看相关参数,并设置归档和归档目录。参数在v$parameter动态参数视图中
查看结构 desc v$parameter;
sql> select log_mode from v$database;
sql> show parameter log_archive;
若未归档,设置 sql>alter database archivelog;
查看归档sql>archive log list ;
设置归档路径 SQL>alter system set log_archive_dest_1='location=e:\archive' scope=spfile;
切换日志,看归档结果SQL>alter system switch logfile;
若没有改变,重启数据库使spfile发挥作用后再试。
17、退出sqlplus,恢复完成。
rosscheck archivelog all; -- 检查归档日志是否过期,过期后标示expired 状态,手工删除日志不满足过期则不处理
change archivelog all crosscheck; -- 检查归档日志是否过期,同时对手工删除的日志标示过期状态
本文详细介绍了如何使用RMAN进行数据库备份以及在不同机器上进行恢复的步骤,包括配置备份脚本、创建新的spfile、恢复控制文件和数据文件、设置相关参数、归档和清理过期备份等关键操作。

1311

被折叠的 条评论
为什么被折叠?



