首页 > Oracle > ora-xxxxx > 主库丢失archive log,恢复DG日志正常应用!
2013
11-26

主库丢失archive log,恢复DG日志正常应用!

生产环境中,如果放archivelog file的磁盘坏了怎么办,有归档还没有应用,DG不同步了怎么办?当然可以通过duplicate重建一下,这种只需要一个命令就可以,但如果库比较大,duplicate需要一定比较长的时间,可通过如下方法重新配置。

1. 首先我们模拟一个故障环境,先查看主备库的日志序列,应用情况

可以看到日志都是实时应用的。

2. 设置主库不发送日志 ,我们把log_archive_dest_state_n设置延迟发送,我这里设置的是log_archive_dest_state_2

3. 在主库进行DML操作,产生日志

可以看到如上的归档,主库的50和51号归档没有传送

4. 在主库把50和51号归档删除,模拟环境

5. 启动主库传送日志

6. 在主库进行DML操作,产生日志

7. 查看主备库的归档日志文件情况

可以看到产生的第二次产生的归档虽然发送了,但是没有应用,备库丢失了50和51两个归档文件,我们可以查看alert日志看到明细的错误

可以在日志中看到,产生了GAP:gap sequence 50-51

 

下面开始正文了,如果库小,可以直接使用duplicate,另外还可以使用如下办法:

1.停止备库的Redo Apply

2. 查看备库的SCN值

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

4. 拷贝备份集到备库目录

5. 查看备库数据文件的情况

6. 还原备库控制文件,并执行恢复操作,由于这里产生了2个备份集,我们要确定控制文件在哪个备份集中,首先要在主库list一下

可以看到控制文件在/opt/oracleforstandby_08opraa6备份集中,然后在备库执行如下操作

7. 接下来就是验证了,验证数据文件等情况,然后启动备份的redo apply

然后可以看到备库重新开始应用

打开备库后,可以在备库查看到之前创建的2张表,jerrytest和jerrytest2,说明所有的应用完毕,jerrytest是在丢失的50和51那2个归档文件中,jerrytest2是在之后传送了没有应用的归档文件中

大概的步骤就差不多,不过生产库还是要注意后备方案。

最后编辑:
作者:Jerry
一个积极向上的小青年,热衷于分享--Focus on DB,BI,ETL