DataGuard GAP问题解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataGuard GAP问题解决相关的知识,希望对你有一定的参考价值。

某天下午打开DG备库时发现无法open只能到mount状态。

Alter database open; 总是提示如下错误:

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01196: file 1 is inconsistent due to a failed media recovery session
ORA-01110: data file 1:
‘/oracle/app/oracle/oradata/PROD1_ST/datafile/o1_mf_system_0qrb37o0_.dbf‘

提示需要recovery,于是立马查看gap以及日志应用情况。

select name,sequence#,archived,applied from v$archived_log;

结果sequence#从905到973之前大片的归档日志applied状态为NO,看了下备库的归档目录确实少了很多归档日志。

 

悲剧,于是决定采用备份主库日志的解决办法来恢复。

1.停止备库的Redo Apply

SQL> alter database recover managed standby database cancel;

2.查询备库的当前SCN 值

SQL> SELECT CURRENT_SCN FROM V$DATABASE;

3.在主库使用RMAN 基于SCN 的增量备份

RMAN> backup incremental from scn 1579945 database format ‘/u01/backup/forstandby_arch‘ tag ‘forstandby‘;

4.将备份copy 到备库,还原备库控制文件并执行恢复操作

RMAN> STARTUP FORCE NOMOUNT;
RMAN> RESTORE STANDBY CONTROLFILE FROM ‘/home/oracle/backup/forstandby_arch‘;
RMAN> ALTER DATABASE MOUNT;
RMAN> CATALOG START WITH ‘/home/oracle/backup/‘; --注册下新的备份集
RMAN> RECOVER DATABASE NOREDO; --应用新的增量备份集
RMAN> ALTER DATABASE OPEN;

5.最后开启MRP进程

SQL> alter database recover managed standby database using current logfile disconnect from session; --打开real time apply

 

以上是关于DataGuard GAP问题解决的主要内容,如果未能解决你的问题,请参考以下文章

DataGuard主备归档存在gap的处理办法

oracle dataguard archive gap后恢复

Oracle DataGuard出现GAP如何修复?看这一篇就够了(附详细操作步骤)

实战篇:Oracle DataGuard出现GAP如何修复?看这一篇就够了(附详细操作步骤)

Oracle数据库容灾解决方案:Oracle DataGuard部署实录

网络隔离? 没问题! 用 Artifactory Air Gap 模式来解决!