许玉晨 数据和云
墨墨导读:底层超融合故障导致数据库产生较多坏块,最终导致数据库宕机。
某客户数据由于底层超融合故障导致数据库产生有大量的坏块,最终导致数据库宕机,通过数据抢救,恢复了全部的数据。
下面是详细的故障分析诊断过程,以及详细的解决方案描述:
故障现象
数据库宕机之后,现场工程师开始用rman备份恢复数据库,当数据库alert日志提示控制文件有大量坏块。
并且提示无法访问在线日志。
恢复过程
客户只restore了数据,通过编写脚本recover数据库。
recover失败提示控制文件有坏块
发现控制文件已经损坏,开始重建控制文件
然后重新recover database
发现归档也居然有损坏,通过allow 10 corruption处理。
恢复发现有少量坏块
并且dbv未发现物理坏块,都是逻辑坏块,影响不大,可控。
重建控制文件,并且必须确保redo都recover完成后再resetlogs。
查看x$kcvfh.afs,发现都为0,不需要介质恢复。
通过添加参数尝试打开
尝试打开数据库。
打开报undotbs2出现坏块。我们来尝试通过设置10046 event来诊断
发现访问14号回滚段后出现故障,_corrupted_rollback_segments来屏蔽回滚段。
再次尝试打开,发现又报192号block出现坏块
决定通过一条shell脚本屏蔽所有回滚段,烦不了了!
成功打开
后台日志出现undotbs2有坏块,尝试重建undo
新建undo,并且删掉老的undo表空间
然后对系统进行validate校验,发现两个对象有坏块,还好不是业务数据,truncate搞定。
墨天轮原文链接:https://www.modb.pro/db/24652(复制到浏览器或者点击“阅读原文”可打开)。