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;

 

posted @ 2022-08-12 08:56  BlackData  阅读(919)  评论(0编辑  收藏  举报