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

0    51    1

👉 本文共约1916个字,系统预计阅读时间或需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

12.1恢复

对于这种情况,在12.1版本中,RMAN提供了一种便捷的方式让我们不需要在主库上进行数据文件的备份传输而可以在备库使用 restore database (or datafile ) from service去从主库进行恢复。

当然,Oracle的RMAN是足够聪明的:如果数据文件是正常的状态,RMAN可以根据它们的数据文件头进行跳跃恢复。如果,由于nologging操作导致某些块被标记为损坏的,那么这部分数据文件就是需要恢复的,然后怎么办?在恢复命令中有FORCE选项。但我们可能并不需要它。因为有些时候数据文件是同步的,实时日志应用进程还是在运行的。这个时候,为了恢复,我们需要停止应用。

一旦我们停止了应用,那么我们就不需要执行RESOTORE DATABASE FORCE操作,因为现在数据文件的状态是过旧的,就算你不加FORCE选项RMAN也是不会跳过这些数据文件的。

步骤一

备库关掉实时日志应用,并开启至mount状态。

步骤二

备库登陆RMAN,使用restore database (or datafile ) from service进行恢复

当然要记得去起库并开启实时日志应用进程!

12.2恢复

而在12.2中,Oracle提供了一种更方便的方式去进行恢复主库会将未记录的块的列表发送至备库,并记录在备库控制文件中,我们可以从备库的v$nonlogged_block这个视图查看到相关信息。不需要发送主库的整个数据文件,而是在RMAN执行一个简单的命令来恢复它们:

RECOVER DATABASE NONLOGGED BLOCK

步骤一

停止备库实时日志应用

步骤二

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

备库登陆RMAN执行

RECOVER DATABASE NONLOGGED BLOCK

注意执行此步骤前请确认主备库的log_archive_config参数已经设置

最后别忘了开启实时日志应用进程。

综上来看,12.2中这个特性在数据仓库等一些场景是可以尝试的。以往我们开启force logging造成大量的redo日志并且影响一部分dml语句的执行效率。在12.2我们可以尝试使用nonlogging操作去节省大量数据插入的时间,然后在系统空闲时间进行备库恢复操作。但是注意这种操作也存在弊端,这样你的备库的可用性就大大降低了。凡事总有取舍!

参考

挽救DG中主库的nologging操作的块

标签:

头像

小麦苗

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

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

17 − 3 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部