rman备份异机恢复
前提条件:两台机器数据库版本相同,备份路径相同,文件路径相同。目标库可以将数据文件,控制文件,闪回区,参数文件等清空,以方便后期恢复。(不删除也行,我习惯的是删除)ps:注意目录权限第一步:rman整库备份run {allocate channel ch1 type disk;allocate channel ch2 type disk;sql 'alter system archive log
前提条件:两台机器数据库版本相同,备份路径相同,文件路径相同。目标库可以将数据文件,控制文件,闪回区,参数文件等清空,以方便后期恢复。(不删除也行,我习惯的是删除)
ps:注意目录权限
第一步: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/rmanbak/testdb_%T_%U';
sql 'alter system archive log current';
backup as compressed backupset archivelog all format '/u01/rmanbak/testarc_%T_%U';
backup current controlfile format '/u01/rmanbak/testcon_%T_%U';
backup spfile format '/u01/rmanbak/%d.%s.%p.%T.SPFILE';
crosscheck backup;
delete noprompt expired backup;
release channel ch1;
release channel ch2;
}
第二步:在目标库建立相同的备份路劲,将源库备份scp传到目标库相同的路径下
第三步:在目标库上,还原spfile文件:
rman target /
startup nomount; --这里会报错,主要是没有静态参数文件,可以先忽略
restore spfile from'/u01/rmanbak/ORCL.106.1.20210716.SPFILE';
动态参数文件spfile恢复完成
第四步:利用spfile生成pfile,然后编辑pfile修改对应路径:
sqlplus / as sysdba
create pfile from spfile;
exit;
vi $ORACLE_HOME/dbs/initorcl.ora
由于闪回区被我们清空了,所以pfile中的这一段要删除,否则会报错 。其他路径与目标库路径相同即可。
sqlplus / as sysdba
shutdown immediate --先关闭数据库,否则rman会进入DUMMY模式
create spifle from pfile='$ORACLE_HOME/dbs/initorcl.ora'; --利用修改过的pfile重新生成spfile
startup nomount;
第五步:还原控制文件
rman target /
restore controlfile from'/u01/rmanbak/testcon_20210716_39043ija_1_1';
alter database mount;
检查并标记控制文件中存在,但是实际已经不存在的备份文件。
RMAN>crosscheck backup;
清理控制文件中存在,但是实际已经不存在的备份文件。
RMAN>delete noprompt expired backup;
将备份注册到rman
catalog backuppiece'/u01/rmanbak/testarc_20210716_36043ij8_1_1'
catalog backuppiece'/u01/rmanbak/testarc_20210716_37043ij8_1_1'
catalog backuppiece'/u01/rmanbak/testarc_20210716_38043ij9_1_1'
catalog backuppiece'/u01/rmanbak/testcon_20210716_39043ija_1_1'
catalog backuppiece'/u01/rmanbak/testdb_20210716_32043ii2_1_1'
catalog backuppiece'/u01/rmanbak/testdb_20210716_33043ii2_1_1'
catalog backuppiece'/u01/rmanbak/testdb_20210716_34043ij5_1_1'
catalog backuppiece'/u01/rmanbak/testdb_20210716_35043ij5_1_1'
确定需要恢复的Seq号:
RMAN> list backup of archivelog all;
第六步:根据备份信息,恢复数据文件及数据库
run {
set until sequence 50 thread 1;
restore database;
switch datafile all;
recover database;
}
一般是恢复到seq号最大的位置,如果数据文件路径改变需要重新定义文件路径
report schema; --查询数据文件号
SET NEWNAME FOR DATAFILE 1 to 'xxxxxxxxxxxxxxxxxxx';
恢复完成
最后alter database open resetlogs;
数据库成功打开
搞定,下课
ps:如果数据库前后版本不一致的,需要重新编译一下无效对象
SQL> startup upgrade
SQL>@?/rdbms/admin/catupgrd.sql
---Creates data dictionary views.重新编译一下一些无效的对象
SQL>@?/rdbms/admin/utlrp.sql
SQL>shutdown immediate
SQL>startup
更多推荐
所有评论(0)