恢复DG环境中由于主库nologging操作导致的坏块

0    312    1

Tags:

👉 本文共约1900个字,系统预计阅读时间或需8分钟。

简介

众所周知我们的Data Guard数据同步是基于日志流的。所以在主库执行nologging操作是不被允许的。这也就是为什么我们需要在配置Data Guard阶段需要使用Force Logging。但是这也会带来很多问题(SQL执行效率),例如:当我们使用数据泵进行迁移时我们希望最少停机时间完成,这时候我们就可能会考虑到以最小日志导入的方式以加快导入速度,然后重新同步备库。

在一些场景中,我们会去使用nologging操作去节省大量数据插入的时间,而这种操作所带来的问题就是,如果该库在有备库的情况下,因为主库的nologging插入操作不会生成redo,所以不会在备库上传输和应用,这会导致备库的数据出现问题。

11g恢复

在Oracle 11g,如果遇到这样的问题,可以通过在备库恢复有问题的数据文件来解决问题,示例如下:

在一个具有主备关系的主库上将force_logging设置为nologging模式,随后创建一张表,设置为nologging模式

之后使用/ +append/插入数据并提交

这时候在备库对该表进行查询会看到如下报错信息

而要修复这个问题,需要将包含缺少的数据的数据文件从主库复制到物理备库。

步骤一

1、查询主库

2、查询备库

3、比较主数据库和备用数据库的查询结果

在两个查询结果中比较UNRECOVERABLE_CHANGE#列的值。如果主库中UNRECOVERABLE_CHANGE#列的值大于备库中的同一列,则需要将这些数据文件在备库恢复。

步骤二

将主库对应的数据文件拷贝至备库

步骤三

备库将旧的数据文件rename至新的数据文件

之后就可以在备库查询到实例表DEMO

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复