首页 > 数据库 > Oracle > Oracle 备库实例异常宕机案例分析
1、故障描述
某日02:02 左右,数据库突发异常宕机。此时业务系统正处于日常低峰时段,备库业务受短暂影响。
某日02:17左右,手工启动数据库,并启动mrp进程,业务正常。
深入(alert.log、集群后台进程日志等)进行溯源分析,发现宕机时刻存在library cacha lock,此时有LGWR报错,通过将日志信息与 My Oracle Support(MOS)数据库中的 bug 库进行比对,确认此次异常由 Oracle 某特定版本数据库的已知 bug 导致,从而引发实例短暂宕机后自动恢复,与本次事件的时间节点、现象特征完全匹配。目前已记录该 bug 编号及对应修复方案,后续将在测试环境验证补丁兼容性,计划在业务低峰期实施修复,避免同类故障再次发生。
2、根因分析
从本次故障日志与已知 Bug 信息可高度匹配:触发进程为 LGWR 进程,核心错误为 ORA-04020(死锁),结合 Bug 描述可推断 LGWR 正等待 library cache lock,调用栈预期包含 kglLockInstance,死锁发生在 Namespace=DBINSTANCE 的实例锁上,且故障发生在 Active Data Guard 物理备库环境,与 Bug 18515268 的影响范围完全一致。因此,本次故障的根本原因为 Oracle Bug 18515268:在 ADG 备库场景下,LGWR 进程尝试获取实例锁时与其他进程形成死锁,触发 ORA-04020 错误,最终导致实例崩溃。
(1)、数据库日志
(2)、mos 匹配信息
(3)、补丁应用情况
3、 解决方案
(1)、建议调整_adg_parselock_timeout=3000,延长LGWR 等待取得 X parselock 的时限减少ADG hang 或者宕机。
(2)、建议ADG端安装补丁11.2.0.4.201020(包含Bug 18515268)减少BUG引起的ADG hang 或者宕机。
(3)、建议生产端安装补丁11.2.0.4.201020减少BUG引起的hang 或者宕机。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30310891/viewspace-3181477/ ,如需转载,请注明出处,否则将追究法律责任。