Oracle Rman备份及异机恢复
环境:oracle11g 需要os相同,数据库版本相同,实例名相同,备份路径相同,文件路径相同,如果可以,将目标库的参数文件,控制文件,数据文件,闪回区清空
1.oracle rman备份,该方法单独压缩备份了数据库,归档日志,控制文件,参数文件,清理超期备份集,检查并清理已经注册实际并不存在的备份
run { allocate channel ch1 type disk; allocate channel ch2 type disk; sql 'alter system archive log current'; backup as compressed backupset database format '/u01/app/oracle/rmanbak/full_%d_%T_%s_%p.bak'; sql 'alter system archive log current'; backup as compressed backupset archivelog all format '/u01/app/oracle/rmanbak/%d_arc_%T_%U'; backup current controlfile format '/u01/app/oracle/rmanbak/%d_control_%T_%U'; backup spfile format '/u01/app/oracle/rmanbak/%d.%s.%p.%T.SPFILE'; crosscheck backup; delete noprompt expired backup; release channel ch1; release channel ch2; }
2.通过scp将/u01/app/oracle/rmanbak下的文件拷贝到目标机器
3.在目标机器上登入rman
rman target / #挂载到nomount'阶段 startup nomount #恢复参数文件 restore spfile from 'spfile具体路径文件' #登入sqlplus sqlplus / as sysdba #根据spfile 创建pfile create pfile from spfile #清空闪回区的路径信息 vi $ORACLE_HOME/dbs/initorcl.ora #把控制文件路径中在闪回区路径的信息删除 #关闭数据库 shutdown immediate; #创建动态参数文件 create spfile from pfile='$ORACLE_HOME/dbs/initorcl.ora'; #启动到nomount阶段 startup nomount
4.还原控制文件
rman target / #还原控制文件 restore controlfile from '控制文件所在具体路径'; #更改数据库到mount阶段 alter database mount; #检查并标记控制文件中存在,但是实际已经不存在的备份文件 crosscheck backup #清理控制文件中存在,但是实际已经不存在的备份文件 delete noprompt expired backup;
5.将备份注册到catalog
catalog backuppiece '控制文件路径'
6.确定要恢复的seq号
list backup of archivelog all;
7.根据第6步确定的seq号,一般用最大的
run { set until sequence seq号 thread 1; restore database; switch datafile all; recover database; }
8.打开数据库
alter database open resetlogs;