Phone:18180207355 提供专业Oracle&MySQL数据恢复、性能优化、迁移升级、紧急救援等服务

某客户的一套11gR2 dataguard环境出现异常,检查发现是备库出现文件损坏,且无法正常情况,已经超过1个多月没同步了。 我们先来看下备库的日志:

你会看到,当你手工发起recover managed standby database disconnect from session后,会出现上述的错误。我们也可以清楚
的看到,之所以MRP经常无法正常启动,是因为有文件存在坏块。对于数据文件坏块,通过dbv检查你会发现是这么一种情况:

我这里检查了2个报错的文件,发现sysaux的文件有一个坏块,然而另外一个数据dbv检查并没有提示坏块,但是为什么会报错呢?
这里的错误基本上都是类似ORA-10567: Redo is inconsistent with data block 的问题,这可能不是block本身的问题,可能是
日志写的内容和块的内容不一致了。

开始我看只有3个文件有报错,那我就想,能否直接从主库scp 这3个文件到备库,然后直接recover就行了呗? 大概是这样一个操作:

这种操作本身没有问题,然而有问题的是,这3个文件处理了之后,恢复发行又报错其他的数据文件了,我檫。

整个数据库一共2.2TB,80个30g的文件。 我不可能给他全库scp过去。

那么怎么弄呢 ?
其实很简单,我很早之前也讲过利用rman增量的方式来恢复dataguard环境中缺少日志导致gap的情况。 我们也可以使用类似
这个方法来做,下面是我的基本操作:

—定位备库同步的scn

—主库进行增量备份(基于scn)

—-将主库的备份文件scp到备库,并注册到catalog

—进行recover备库

如果你这个时候去看alert log,你会发现类似这样的信息:

你会发现Oracle仍然会去检查,并跳过这部分差了1个多月的归档,这个过程很快的,不到10分钟完成了。

当然,这个case就算over了。
备注:oracle 11gR2(准确的说是11.2.0.2)开始,active dataguard引入了Automatic Block Repair 机制。然后该机制

需要满足的一定的条件,如下是官方文档的说明:

实际上,可能还存在一些特殊的情况,当然客户这里是没有使用real-time模式。

 

    分享到:
  • william019

    roger 大量思路很清晰,方法较独特。

18180207355
加Q咨询