通过增量rman备份前滚备库 修复adg差异较大或新增文件情况

原文: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;