记一次DataGuard Corrupt block修复

近日,应用人员反馈数据库备库(Read only with apply)只读查询时报出如下错误:

坏块1报错内容很明显:13号文件出现文件坏块,并且该数据库块为NOLOGGING,也就是主库该数据库文件在加载时使用了NOLOGGING选项,很有可能是该操作数据行为对时间要求比较高,但是数据库主库没有开启FORCE LOGGING选项,导致备库恢复时出现坏块。

 

修复过程:

修复大概思路为:

(1)备库执行backup validate datafile 13 / backup validate check logical datafile 13 确认备库坏块影响范围,理论NOLOGGING选项加载数据,不止造成这一个坏块问题。

(2)主库执行backup validate datafile 13 / backup validate check logical datafile 13 确认主库数据文件是否正常

(3)关闭备库,停止日志应用,主库执行backup as copy datafile 13 format ‘******’;进行数据文件备份

(4)将主库文件SCP至备库进行恢复,RECOVER完成后进行database open操作

**************************************************************************************************************

(1) 备库执行validate后查询v$database_block_corruption进行确认坏块个数

backup validate check logical datafile 13;

backup validate datafile 13;

坏块2-2

(2)停止备库实时应用,shudtdown dg备库,进入数据文件目录下将13号文件mv 13.dbf.bak

(3)主库执行backup copy工作

backup as copy datafile 13 format ‘/opt/app/ora11g/datafile13.dbf’

(4)将主库备份文件COPY至备库datafile

(5)备库执行startup mount并进行alter database recover managed database using current logfile disconnect from session开启实时应用

(6)alter database open;

备库再次校验文件Corrupt block信息,Marked Corrupt均为0,修复完毕。

坏块3