为提升业务系统连续性,基于现有硬件资源,使用两套一体机资源部署两套数据库,互为Oracle主、备库角色,简要架构示例如图:
某客户报表系统、经分系统经过系统架构调整后,报表系统主库运行于集群A、备库运行于集群B,经分系统主库运行于集群B、备库运行于集群A。架构调整稳定运行数月后,在某个周五的深夜,运维小哥收到了集群A主库A1实例宕机、备库B1实例宕机的告警、主机无法PING通告警,小哥第一时间开机接入环境,经过检查,发现“一体机1”主机发生重启,重启恢复后,在连续2天多次出现实例重启等情况。为保障业务稳定运行,随即决策停止一体机A-节点1数据库实例及集群,由一体机2单点提供数据库服务,保障业务运行。
[ 分析过程 ]通过分析故障时间段的主机系统日志、数据库日志,相关信息如下:
故障时段主机进程状态变为“D”
主机内核参数启用hung状态自动重启机制
初步确认主机重启原因是因进程转变为“D”,触发内核重启重启机制。
排查进程状态转变原因
通过分析“D”状态进程种类,用户等信息,不仅仅是Oracle用户进程状态转变为“D”。排除数据库进程本身引发的“D”僵尸进程,并重点检查IO情况。
VBS共享存储无明显异常:
经过分析“D”状态进程存在共性,均与/u01(sda、sda8)本地磁盘相关,随即排查本地磁盘的IO性能情况。
发现本地磁盘使用率持续偏高,存在性能瓶颈;存在/u01读写慢,引发进程僵死的可能性。
排查Oracle trc、trm异常输出原因
因为/u01目录仅作为Oracle软件安装目录,使用类型比较单一,我们的排查重点又再次回到了Oracle软件层面,因为该套主机上部署了2套数据库实例,数据库日志、集群日志、trc、trm等文件输出频率较单实例资源更高、IO压力更大;随即分析目录大小、文件数量,更新频率等信息,发现Oracle实例trc、trm跟踪文件持续高频率异常输出。
BUG排查
通过查阅OracleMOS支持文档、疑似命中Bug29039510 - drm messages are continuously generated with kjqghd() andkjshash() (Doc ID 29039510.8),描述信息如下:
检查当前数据库应用补丁应用情况
-- Log File -- File Name or Source ------------------------- opatch output Description -------------- Relevant Information Collection --------------------------------------- Interim patches (3) : Patch 29774415 : applied on Wed Nov 27 00:56:04 CST 2019 Unique Patch ID: 22954229 Patch description: "OJVM RELEASE UPDATE: 12.2.0.1.190716 (29774415)" Created on 19 Jun 2019, 22:08:05 hrs PST8PDT Bugs fixed: 25811105, 25890046, 26023042, 26570134, 27000702, 27461740, 27952586 27642235, 27539876, 28502098, 28915870, 29254623, 29774362 Patch 29770040 : applied on Wed Nov 27 00:53:05 CST 2019 Unique Patch ID: 22917824 Patch description: "OCW JUL 2019 RELEASE UPDATE 12.2.0.1.190716 (29770040)" Created on 19 Jun 2019, 13:36:44 hrs PST8PDT Bugs fixed: 12816839, 13250991, 18701017, 20559126, 20674742, 21477269, 21679331 21887932, 22144696, 22322021, 22734786, 22900591, 22986384, 22999793 23087119, 23170674, 23297046, 23301767, 23340259, 23346234, 23706534 23722215, 23760401, 23762756, 23840305, 24330981, 24