如何使用 RMAN 增量备份恢复 data guard log gap(日志

主库查询最小scn 信息:
SQL> col current_scn for 999999999999999
SQL>  SELECT CURRENT_SCN FROM V$DATABASE;
 
 select min(fhscn) from x$kcvfh;
 
 select min(f.fhscn) from x$kcvfh f, v$datafile d
      where f.hxfil =d.file#
        and d.enabled != 'READ ONLY'    ;
    CURRENT_SCN
----------------
  12614205226673
 
MIN(FHSCN)
----------------
12614205076072
 
MIN(F.FHSCN)
----------------
12614205076072
 
+++++++++++++++++++++++++++++++++++++++++++++++=


1.----备库取消归档应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;


2.----备库确定 lowest scn
col current_scn for 99999999999999
 SELECT CURRENT_SCN FROM V$DATABASE;

select min(fhscn) from x$kcvfh;

select min(f.fhscn) from x$kcvfh f, v$datafile d
      where f.hxfil =d.file#
        and d.enabled != 'READ ONLY'    ;

取上述查询中的最小值

SQL> col current_scn for 999999999999999999
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
 
        CURRENT_SCN
-------------------
    12611050666604
 
SQL> select min(fhscn) from x$kcvfh;
 
MIN(FHSCN)
----------------
12611050666605
 
SQL>  select min(f.fhscn) from x$kcvfh f, v$datafile d
      where f.hxfil =d.file#
        and d.enabled != 'READ ONLY'    ;  2    3 
 
MIN(F.FHSCN)
----------------
12611050666605


3.-----on primary db 端根据第2步中获取的最小scn 来进行增量备份
BACKUP INCREMENTAL FROM SCN 12611050666604 DATABASE FORMAT '/lixora/ForStandby_%U' tag 'FORSTANDBY';


4.-----拷贝备份到 备库
$scp ForStandby_07pqprm4_1_1 192.168.0.10:/tmp


5.----on standby db 在备库端注册备份片,注意用户属主,权限
RMAN> CATALOG START WITH '/lixora/ForStandby';


6.----执行恢复
RMAN> RECOVER DATABASE NOREDO;


7.-----on primary db 生成新的standby 控制文件
RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/lixora/ForStandbyCTRL.bck';

8.----把主库端生成的standby 控制文件拷贝到备库,注意用户属主,权限

RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/lixora/ForStandbyCTRL.bck';
 
scp /lixora/ForStandbyCTRL.bck 192.168.0.10:/tmp


9.------备份备库数据文件信息,用于在恢复新的standby 控制文件后比对
spool datafile_names_step8.txt
set lines 200
col name format a60
select file#, name from v$datafile order by file# ;
spool off


10.------on standby Db 恢复新的standby  控制文件

RMAN> SHUTDOWN IMMEDIATE ;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/ForStandbyCTRL.bck';


11.-----更新控制文件中的数据文件信息
使新的standby 控制文件生效
RMAN> SHUTDOWN;
RMAN> STARTUP MOUNT;

CATALOG START WITH '+DATA/zhglptdg/datafile/';


12.------on primary db。确保在备库发生日志gap 后,主库没有添加过新的数据文件。
SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 12611050666604;

如果有记录,则不能进行witch 操作,可以参考一下文档来恢复:
Note 1531031.1 Steps to perform for Rolling forward a standby database using RMAN incremental backup when datafile is added to primary


13.-----重命名数据文件
RMAN> SWITCH DATABASE TO COPY;
 
 
14.-----再次确认在恢复增量备份片后主库和备库scn 差距没有太大
 SQL> col current_scn for 99999999999999
 SELECT CURRENT_SCN FROM V$DATABASE;
 
 select min(fhscn) from x$kcvfh;
 
 select min(f.fhscn) from x$kcvfh f, v$datafile d
      where f.hxfil =d.file#
        and d.enabled != 'READ ONLY'    ;
       
 CURRENT_SCN
---------------
 12614205662375
 
MIN(FHSCN)
----------------
12614205076072
 
MIN(F.FHSCN)
----------------
12614205076072
 

15.------ On standby database, 清理standby 日志组
select * from v$standby_log;

SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;


16.------启动redo data apply
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

如果遇到一些由于设置 nologgling 而导致部分数据丢失,可以安装下述方法来进行恢复
To resolve NOLOGGING operations only, see Note 958181.1. 
In addition to this information, see the online documentation:
10.2:  Oracle.com/docs/cd/B19306_01/server.102/b14239/scenarios.htm#CIHIAADC
11.1:  #SBYDB00759
11.2: #CIHIAADC


后记
如果要启用实时应用,需要在备库添加standby redo log,大小应和主库一样,且比主库多一组;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c88fe849b11983a5355b1ce050ca3877.html