故障现象
最近给一套核心数据库做主备切换时,由主库切换到备库后,新主库日志中报ORA-O1578、ORA-01110、ORA-26040,提示多个块有损坏,且块使用了NOLOGGING选项。

故障分析
根据平时操作记录,有时在创建索引时会使用nologging选项。但这套adg环境应该是强日志同步的,即使用nologging选项也不应该丢数据,导致数据出现不一致的情况。我们在mos上也搜索了一些资料,随后去核查相关参数,结果发现主库的force_logging属性是打开,但备库是没有打开。那大致可以猜测这套adg库在搭建的时候force_logging可能没开,后来运行一段时间主库开启了force_logging属性,这期间有nologging操作导致备库出现了nologging的块。受影响的块可以通过v$nonlogged_block来查看:
解决方案
如果是12.2以后的版本,可以停掉备库的日志应用,在rman客户端中执行命令RECOVERDATABASENONLOGGEDBLOCK,它会扫描全部的datafile,遇到有nologging的块就进行修复。
如果是12c以前的版本,可以先确认哪些数据文件受影响,在生产中备份这些数据文件,然后在备库中进行还原恢复。
如果是主库有nologging的块可以参考mosORA-1578/ORA-26040CorruptblocksbyNOLOGGING-Errorexplanationandsolution(DocID794505.1)来解决,大致解决思路是找到这些nologging块对应的对象,以logging的方式重建。
本文作者:小本本(本际云服务器推荐网)
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6524.html
