原文:Steps to perform for Rolling forward a standby database using RMAN incremental backup when datafile
用于解决物理备库丢失或损坏归档重做数据,或存在无法解决的归档缺口的问题。
1、检查备库上缺失情况
sql
--备库停止mrp进程
RECOVER MANAGED STANDBY DATABASE CANCEL;
--查看
set num 20
SELECT CURRENT_SCN FROM V$DATABASE;
select min(checkpoint_change#) from v$datafile_header;
选出最小的scn号,假设这里是123
2、主库上执行备份
sql
--登录主库查在这个scn后创建的文件
SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 123;
假设这里是 7、8、9三个文件
--发起 rman 增量备份
backup as compressed backupset datafile 7,8,9 format '/tmp/ForStandby_%U' tag 'FORSTANDBY';
backup incremental from SCN 123 database format '/tmp/ForStandby_%U' tag 'FORSTANDBY';
backup current controlfile for standby format '/tmp/ForStandbyCTRL.bck';
传输到备库
scp /tmp/ForStandby* standby:/tmp
3、备库执行 rman 恢复
sql
shutdown
startup nomount
restore standby controlfile from '/tmp/ForStandbyCTRL.bck';
alter database mount;
CATALOG START WITH '/tmp/ForStandby';
run
{
set newname for datafile 7 to '/data/7.dbf';
set newname for datafile 8 to '/data/8.dbf';
set newname for datafile 9 to '/data/9.dbf';
restore datafile 7,8,9;
}
CATALOG START WITH '/data'; --备库的文件位置目录
SWITCH DATABASE TO COPY;
RECOVER DATABASE NOREDO;
sqlplus / as sysdba
ALTER DATABASE FLASHBACK OFF; --按需
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE GROUP 2;
ALTER DATABASE CLEAR LOGFILE GROUP 3;
RECOVER MANAGED STANDBY DATABASE DISCONNECT;
4、检查恢复进度
sql
col name for a30
col value for a30
select name,value from v$dataguard_stats;