一、故障概述与系统环境#
1.1 故障概述#
2026 年 7 月 12 日至 7 月 14 日,Oracle RAC 数据库节点 sydb2 在运行期间多次突然失联并自动重启。
节点重新启动后,Oracle Clusterware 和数据库实例曾短暂恢复,但随后又出现以下异常:
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event ManagerClusterware 初始化资源曾出现以下两类状态:
第一类:
ora.cssd ONLINE
ora.asm ONLINE
ora.ctssd ONLINE
ora.crsd INTERMEDIATE
ora.evmd INTERMEDIATE第二类:
ora.cssd OFFLINE
ora.asm OFFLINE
ora.ctssd OFFLINE
ora.crsd OFFLINE
ora.evmd OFFLINE经 Oracle 数据库告警日志、Linux 启动记录、审计日志、kdump、vmcore、vmcore-dmesg.txt、Oracle Clusterware 日志以及 Lenovo BMC/XCC 硬件事件综合分析,最终确认:
sydb2服务器 CPU1/Socket1 处理器子系统发生不可纠正的 Machine Check Exception。Linux 内核检测到处理器上下文已经损坏后触发 Kernel Panic,kdump 保存 vmcore,随后系统自动重启。
Oracle 数据库、ASM、Clusterware 和 RAC 服务均为硬件故障发生后的被动中断对象。
重启后出现的 CSSD 网络心跳缺失、CRSD Policy Engine 无法初始化等问题,属于服务器多次异常复位及硬件不稳定背景下的次生故障现象。
1.2 系统环境#
| 项目 | 信息 |
|---|---|
| 系统名称 | XXX |
| 数据库架构 | Oracle RAC 双节点 |
| 数据库版本 | Oracle Database 11.2.0.4 |
| Grid Infrastructure | Oracle GI 11.2.0.4 |
| 故障节点 | sydb2 / infodb2 |
| 正常节点 | sydb1 / infodb1 |
| 操作系统 | CentOS Linux 7 |
| 内核版本 | 3.10.0-1160.el7.x86_64 |
| 服务器型号 | Lenovo ThinkServer SR660 V2 |
| BIOS 版本 | XWE108K-1.92 |
| CPU 型号 | Intel Xeon Gold 5318N |
| CPU 架构 | 双路、96 个逻辑 CPU |
| 内存 | 约 512GB |
| Oracle SGA | 约 248GB |
| 公网接口 | ens9f0 |
| 私网接口 | ens9f3 |
| 节点 1 私网 | 100.1.1.1/24 |
| 节点 2 私网 | 100.1.1.2/24 |
| OCR/Voting | ASM 磁盘组 +OCRVOTE |
二、故障现象#
2.1 节点在短时间内多次自动重启#
通过 last -x、who -b、uptime -s 以及 /var/crash 目录核对,发现 sydb2 在不到 25 小时内至少发生 9 次异常重启。
| 序号 | 内核异常及 vmcore 时间 | 主机后续启动时间 |
|---|---|---|
| 1 | 2026-07-12 14:49:04 | 2026-07-12 14:51 |
| 2 | 2026-07-12 17:10:11 | 2026-07-12 17:12 |
| 3 | 2026-07-12 18:02:29 | 2026-07-12 18:04 |
| 4 | 2026-07-12 19:44:40 | 2026-07-12 19:46 |
| 5 | 2026-07-13 06:28:03 | 2026-07-13 06:30 |
| 6 | 2026-07-13 10:29:44 | 2026-07-13 10:31 |
| 7 | 2026-07-13 11:46:08 | 2026-07-13 11:48 |
| 8 | 2026-07-13 12:13:44 | 2026-07-13 12:15 |
| 9 | 2026-07-13 15:06:55 | 2026-07-13 15:08 |
每次 vmcore 生成后约两分钟,服务器完成重新启动,符合 kdump 保存内存转储后自动重启的特征。
2.2 Oracle 实例随主机重启反复启动#
alert_infodb2.log 中发现 9 次:
Starting ORACLE instance (normal)对应时间为:
2026-07-12 14:53:48
2026-07-12 17:16:10
2026-07-12 18:08:15
2026-07-12 19:50:34
2026-07-13 06:33:53
2026-07-13 10:35:36
2026-07-13 11:52:14
2026-07-13 12:19:36
2026-07-13 15:12:46每次 Oracle 实例启动均发生在 Linux 主机启动后约 3~4 分钟。
实例启动前未发现对应的:
Shutting down instance
Database closed
Database dismounted
Instance shutdown complete说明数据库进程不是通过正常关闭流程退出,而是随操作系统突然中断。
2.3 Linux 没有正常关机记录#
Linux Audit 中存在连续的:
SYSTEM_BOOT但在相应时间之前没有对应的:
SYSTEM_SHUTDOWN同时未发现管理员执行以下命令的审计记录:
reboot
shutdown
poweroff
halt
init 6
systemctl reboot现场表现为非正常系统中断,而不是人工重启或正常操作系统关机。
2.4 每次异常重启前均生成 vmcore#
/var/crash 中存在 9 组完整的:
vmcore
vmcore-dmesg.txt单个 vmcore 大小约为 1.9~2.2GB。
该现象说明系统经历了以下过程:
运行内核发生致命异常
↓
Kernel Panic
↓
进入 kdump crash kernel
↓
保存 vmcore
↓
系统自动重启如果只是突然断电,通常无法连续完整保存多份约 2GB 的 vmcore。
2.5 vmcore 中出现明确的 CPU 致命错误#
不同 vmcore-dmesg.txt 中反复出现两类硬件错误。
第一类为 CPU 直接上报的 Machine Check Exception:
CPU 38: Machine Check Exception: 5 Bank 0
Bank 0: f2000040000f040a
PROCESSOR 0:606a6
SOCKET 1
APIC 5c
microcode d0003d1
Machine check: Processor context corrupt
Kernel panic - not syncing: Fatal machine check第二类为 BIOS/固件通过 APEI/GHES 上报:
Hardware error from APEI Generic Hardware Error Source
event severity: fatal
fru_text: Socket1
section_type: general processor error
error_type: 0x08
micro-architectural error
processor_id: 0x5c
Kernel panic - not syncing: Fatal hardware error!多次事件均集中在:
Socket1
APIC 0x5c / 0x5d
Bank 0
micro-architectural error
Processor context corrupt2.6 BMC/XCC 记录 CPU1 不可纠正错误#
Lenovo BMC/XCC 的 System Event Log 中记录:
CPU1_Status
Critical
Configuration Error
System_MCERR
Critical
State Asserted
CPU1_Status
Critical
Machine Check Exception (Uncorrectable)BMC 中的 CPU1_Status 与 Linux vmcore 中的 Socket1 完全对应。
2.7 重启后 Clusterware 无法完整恢复#
主机启动日志显示操作系统、ASMLib、网络服务及 Oracle High Availability Services 能够启动。
但后续 Clusterware 曾出现:
Oracle High Availability Services is online
Cluster Synchronization Services is online
Cannot communicate with Cluster Ready Services
Cannot communicate with Event Manager对应资源状态为:
ora.crsd INTERMEDIATE
ora.evmd INTERMEDIATE另一次启动后,CSSD 也无法加入集群,导致 ASM、CRSD 和数据库资源全部保持 OFFLINE。
三、排查过程#
3.1 从 Oracle 告警日志确认数据库不是重启源头#
首先检查 infodb2 实例告警日志中的启动记录:
grep -n "Starting ORACLE instance" alert_infodb2.log共发现 9 次实例启动。
继续检查是否存在正常关闭:
grep -nE \
"Shutting down instance|Instance shutdown complete|Database closed|Database dismounted|ALTER DATABASE CLOSE" \
alert_infodb2.log结果显示,多次启动之前没有对应的正常关闭记录。
继续检索 Oracle 内部致命错误:
grep -nE \
"ORA-00600|ORA-07445|ORA-29740|ORA-29702|terminating instance|Instance terminated|PMON terminating|LGWR terminating" \
alert_infodb2.log未发现能够解释整台服务器自动重启的 Oracle 内部错误。
告警日志中虽存在以下信息:
ORA-28545
ORA-02063
Fatal NI connect error 12170
Checkpoint not complete但这些分别属于数据库链路、远端连接、网络连接超时及日志切换压力问题,无法触发 Linux 整机重启。
该阶段确认:
Oracle 实例是随主机异常中断的受影响对象,而不是导致操作系统重启的源头。
3.2 核对主机启动时间与 Oracle 启动时间#
执行:
uptime -s
who -b
last -x | head -50其中一次输出为:
uptime -s
2026-07-13 15:09:00
who -b
system boot 2026-07-13 15:08last -x 显示:
reboot system boot Mon Jul 13 15:08
reboot system boot Mon Jul 13 12:15
reboot system boot Mon Jul 13 11:48
reboot system boot Mon Jul 13 10:31
reboot system boot Mon Jul 13 06:30
reboot system boot Sun Jul 12 19:46
reboot system boot Sun Jul 12 18:04
reboot system boot Sun Jul 12 17:12
reboot system boot Sun Jul 12 14:51将主机启动时间与 Oracle 启动时间比对后发现,两者逐一对应,Oracle 均在主机启动后约 3~4 分钟自动拉起。
因此不是 Oracle 进程反复崩溃后由 Clusterware 单独重启,而是整台主机反复重新启动。
3.3 检查 Linux 审计日志,排除人工重启#
查询管理员命令:
ausearch -m USER_CMD \
-ts 07/12/2026 14:00:00 \
-te 07/13/2026 15:20:00 -i \
| egrep -i \
'reboot|shutdown|poweroff|halt|init 6|systemctl reboot|systemctl poweroff'结果:
<no matches>查询启动和关机事件:
ausearch -m SYSTEM_BOOT,SYSTEM_SHUTDOWN \
-ts 07/12/2026 14:00:00 \
-te 07/13/2026 15:20:00 -i结果中存在多条:
type=SYSTEM_BOOT但对应时间之前没有:
type=SYSTEM_SHUTDOWN进一步检查 Oracle Clusterware Lastgasp:
ls -lah --full-time /etc/oracle/lastgasp
file /etc/oracle/lastgasp/*
strings /etc/oracle/lastgasp/* 2>/dev/null结果显示文件时间仍为 2024 年,未留下本次故障时间的 Clusterware 主动重启记录。
该阶段排除了:
- 常规人工 reboot;
- 正常 systemd shutdown;
- 有明确 Lastgasp 证据的 Clusterware 主动重启。
3.4 检查 kdump 状态和 vmcore#
检查 kdump:
systemctl status kdump -l
kdumpctl status输出显示:
kdump.service - Crash recovery kernel arming
Active: active (exited)
kexec: loaded kdump kernel
Starting kdump: [OK]以及:
Kdump is operational检查 ABRT:
abrt-cli list其中一次记录为:
Directory:
/var/spool/abrt/vmcore-127.0.0.1-2026-07-13-15:06:55检查 /var/crash:
find /var/crash -maxdepth 3 -type f -ls发现 9 组 vmcore,与 9 次系统重启逐一对应。
| vmcore 时间 | 下一次启动时间 | 时间差 |
|---|---|---|
| 07-12 14:49:04 | 07-12 14:51 | 约 2 分钟 |
| 07-12 17:10:11 | 07-12 17:12 | 约 2 分钟 |
| 07-12 18:02:29 | 07-12 18:04 | 约 2 分钟 |
| 07-12 19:44:40 | 07-12 19:46 | 约 2 分钟 |
| 07-13 06:28:03 | 07-13 06:30 | 约 2 分钟 |
| 07-13 10:29:44 | 07-13 10:31 | 约 2 分钟 |
| 07-13 11:46:08 | 07-13 11:48 | 约 2 分钟 |
| 07-13 12:13:44 | 07-13 12:15 | 约 2 分钟 |
| 07-13 15:06:55 | 07-13 15:08 | 约 2 分钟 |
时间关系证明每次都是生产内核先崩溃,kdump 保存现场后主机才重新启动。
3.5 分析 vmcore-dmesg.txt#
以最新一次 vmcore 为例:
F=/var/crash/127.0.0.1-2026-07-13-15:06:55/vmcore-dmesg.txt
grep -nEi -B30 -A120 \
'Kernel panic|not syncing|Machine Check|MCE|Hardware Error|APEI|GHES|Socket1|Processor context corrupt|Fatal' \
"$F"输出中明确出现:
event severity: fatal
fru_text: Socket1
section_type: general processor error
error_type: 0x08
micro-architectural error
processor_id: 0x5c
Kernel panic - not syncing: Fatal hardware error!对全部 vmcore 进行批量检查:
for f in /var/crash/*/vmcore-dmesg.txt
do
echo "===== $f ====="
grep -nEi \
'Kernel panic|Machine Check|MCE|Hardware Error|APEI|GHES|Socket1|Processor context corrupt|Fatal' \
"$f" | tail -100
done多份 vmcore 中重复出现:
CPU 38
Bank 0
Socket1
APIC 0x5c 或 0x5d
CPUID 0x606a6
microcode 0xd0003d1
Processor context corrupt
Fatal machine check部分转储中 RIP 位于:
huge_pmd_share
huge_pte_alloc但同时被标记为:
RIP !INEXACT!这表示 Machine Check 可能异步上报,RIP 只是错误被检测到时正在执行的代码位置,不能据此判断 HugePages 是根因。
真正跨多次事件稳定重复的是:
Socket1
Bank 0
APIC 0x5c / 0x5d
micro-architectural error
Processor context corrupt3.6 使用 BMC/XCC 进行硬件侧交叉验证#
检查 Lenovo BMC/XCC System Event Log,发现:
CPU1_Status
Critical
Configuration Error
System_MCERR
Critical
State Asserted
CPU1_Status
Critical
Machine Check Exception (Uncorrectable)BMC 记录中的 CPU1 与 Linux 中的 Socket1 相互对应。
因此形成以下证据闭环:
BMC/XCC
CPU1 Machine Check Exception (Uncorrectable)
↓
Linux vmcore
Socket1 / APIC 0x5c、0x5d / Bank 0
↓
Processor context corrupt
↓
Kernel panic
↓
kdump 保存 vmcore
↓
系统自动重启3.7 核对重启后的 Clusterware 状态#
主机重启后执行:
export GRID_HOME=/u01/app/11.2.0/grid
export PATH=$GRID_HOME/bin:$PATH
crsctl check crs
crsctl stat res -t -init曾出现:
CRS-4638: Oracle High Availability Services is online
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4529: Cluster Synchronization Services is online
CRS-4534: Cannot communicate with Event Manager对应资源状态:
ora.asm ONLINE
ora.cssd ONLINE
ora.ctssd ONLINE
ora.crsd INTERMEDIATE
ora.evmd INTERMEDIATE进程虽存在:
ps -ef | egrep \
'ohasd.bin|ocssd.bin|octssd.bin|asm_pmon_\+ASM2|crsd.bin|evmd.bin' \
| grep -v grep但 crsd.bin 长时间无法完成初始化。
检查 CRSD 日志:
tail -300 \
/u01/app/11.2.0/grid/log/sydb2/crsd/crsd.log关键输出:
Initializing OCR
proprioo: for disk 0 (+OCRVOTE)
id match (1)
need recover (0)
Master host name [sydb1]
Attempting to connect to master at address [sydb1:...]
gipcretKeyNotFound
Policy Engine is not initialized yet!说明:
- 本地 OCRVOTE 可以读取;
- OCR 不需要恢复;
- CRSD 在连接节点 1 OCR Master 时未能完成 GIPC 初始化;
- Policy Engine 长时间保持未初始化状态。
3.8 检查 CSSD 网络心跳异常#
后续一次启动时,CSSD 无法加入现有集群。
检查:
egrep -in \
'has a disk HB|no network HB|Local Join|sending join|takeover aborted' \
/u01/app/11.2.0/grid/log/sydb2/cssd/ocssd.log \
| tail -500反复出现:
node 1, sydb1, has a disk HB, but no network HB同时:
Node sydb1, number 1, is in an existing cluster with disk state 3
takeover aborted due to cluster member node found on disk
sending join msg to all nodes这说明 sydb2 可以正常读取 sydb1 写入 Voting Disk 的磁盘心跳,但当时未能建立 CSS 网络心跳。
3.9 对私网、防火墙和网卡进行验证#
节点 2 的私网配置:
ip addr show ens9f3
ip route show
ip route get 100.1.1.1 from 100.1.1.2
ip neigh show dev ens9f3结果:
ens9f3 UP
100.1.1.2/24
100.1.1.0/24 dev ens9f3
src 100.1.1.2
100.1.1.1 dev ens9f3
100.1.1.1
lladdr d4:04:e6:0f:27:97
REACHABLE节点 1 的 Oracle 私网定义:
oifcfg getif结果:
ens9f0 138.20.1.0 global public
ens9f3 100.1.1.0 global cluster_interconnect双向 Ping 正常:
0% packet loss
延迟约 0.2~0.3msARP 正常:
Unicast reply from 100.1.1.1
[D4:04:E6:0F:27:97]检查防火墙:
systemctl is-active firewalld
systemctl is-enabled firewalld结果:
unknown
disabled检查 iptables:
iptables -L -n -v
iptables -t raw -L -n -v
iptables -t mangle -L -n -v结果均为:
policy ACCEPT无 DROP 或 REJECT 规则。
检查网卡:
ethtool -S ens9f3 | egrep -i \
'error|drop|miss|crc|frame|fifo|timeout|reset|fault|buffer'结果:
rx_fcs_errors: 0
rx_align_errors: 0
rx_frame_too_long_errors: 0
rx_in_length_errors: 0
rx_out_length_errors: 0
tx_mac_errors: 0
tx_carrier_sense_errors: 0
tx_errors: 0
rx_errors: 0检查 UDP:
nstat -az | egrep -i \
'Udp|InErrors|RcvbufErrors|SndbufErrors|InCsumErrors'关键结果:
UdpInDatagrams 107982
UdpOutDatagrams 50805
UdpInErrors 0
UdpRcvbufErrors 0
UdpSndbufErrors 0
UdpInCsumErrors 0因此检查时点未发现:
- 防火墙阻断;
- 持续性二层或三层网络中断;
- 网卡 CRC 或物理层错误;
- UDP 缓冲区溢出;
- UDP 校验错误;
- 私网 IP 或路由错误。
CSSD 日志中的网络心跳缺失是真实发生的,但现有检查无法证明存在持续性的网络设备故障。
结合服务器已经确认的 CPU1/Socket1 不可纠正硬件错误,更合理的判断是:
CSSD、GIPC 和 CRSD 初始化异常属于主机硬件不稳定、多次 Kernel Panic 和异常复位后的次生表现。
四、根因结论#
4.1 主根因#
本次故障的主根因为:
sydb2服务器 CPU1/Socket1 处理器子系统存在不可纠正硬件故障。
主要证据包括:
Machine Check Exception
Machine Check Exception (Uncorrectable)
System_MCERR
Socket1
CPU1
APIC 0x5c / 0x5d
Bank 0
micro-architectural error
Processor context corrupt
Fatal machine check
Fatal hardware error4.2 故障机制#
完整故障过程为:
CPU1/Socket1 发生不可纠正硬件错误
↓
CPU MCE 或 BIOS APEI/GHES 上报错误
↓
Linux 判断 Processor context corrupt
↓
Kernel panic - Fatal machine check
↓
kdump 保存 vmcore
↓
服务器自动重启
↓
Oracle Clusterware、ASM 和数据库实例被动中断
↓
部分启动过程中出现 CSSD/GIPC/CRSD 初始化异常4.3 根因判断边界#
现有证据能够明确证明 CPU1/Socket1 是主机反复重启的根因。
CSSD 日志中的:
has a disk HB, but no network HB说明当时 Clusterware 网络心跳确实没有建立,但后续检查未发现持续性私网、防火墙、网卡或 UDP 协议栈异常。
因此,本报告不将网络问题列为本次事故的主根因,而将其归类为硬件不稳定及多次异常复位后的次生故障现象。
五、影响范围及处置建议#
5.1 影响范围#
本次故障造成以下影响:
sydb2节点多次非计划退出。infodb2数据库实例多次突然中断。- RAC 服务发生漂移,客户端连接可能出现短时间中断。
- Clusterware 资源曾长时间处于
OFFLINE或INTERMEDIATE。 - 节点重启后 CSSD、ASM、CRSD 无法稳定恢复。
- 多次 Kernel Panic 增加文件系统、Clusterware 本地状态及数据库恢复风险。
- 在硬件修复前,节点仍存在随时再次重启的风险。
5.2 立即处置建议#
确认 sydb1 上数据库和业务服务正常:
crsctl stat res -t
srvctl status database -d infodb
srvctl status service -d infodb停止并禁用节点 2 数据库实例:
srvctl stop instance \
-d infodb \
-i infodb2 \
-o immediate
srvctl disable instance \
-d infodb \
-i infodb2在 sydb2 停止并禁用 Clusterware:
crsctl stop crs -f
crsctl disable crs硬件未修复前,不应再让 sydb2 承载生产数据库实例。
5.3 保留故障现场#
保留以下材料:
/var/crash/*/vmcore
/var/crash/*/vmcore-dmesg.txt
Oracle alert_infodb2.log
Grid Infrastructure 日志
Linux audit 日志
/var/log/messages*
BMC/XCC System Event Log
XCC FFDC由于 ABRT 存在容量限制,可能自动清理旧 vmcore,应及时备份:
mkdir -p /backup/sydb2_vmcore
cp -a /var/crash/* /backup/sydb2_vmcore/5.4 硬件处置建议#
向 Lenovo 提交硬件工单,要求重点检查:
- Socket1/CPU1;
- CPU 插槽;
- 主板;
- CPU 供电模块;
- CPU 散热系统;
- BIOS/UEFI;
- XCC/BMC;
- CPLD;
- CPU microcode;
- CPU 与主板之间的信号链路。
工单中应提供以下关键词:
CPU1 Machine Check Exception (Uncorrectable)
System_MCERR
Socket1
APIC 0x5c / 0x5d
Bank 0
Processor context corrupt
Fatal machine check优先由 Lenovo 根据 XCC FFDC、SEL 和硬件诊断结果决定更换:
Socket1 CPU
或
系统主板5.5 修复后的验证要求#
硬件维修或更换完成后,应进行以下验证:
- 导出并保留维修前 BMC SEL 和 FFDC。
- 运行 CPU、内存及主板硬件诊断。
- 检查是否仍出现 MCE、APEI、GHES 或 MCERR。
- 进行至少 24~72 小时 CPU 和内存压力测试。
- 检查
/var/crash是否新增 vmcore。 - 启动 Clusterware,验证 CSSD 双节点成员关系。
- 验证两节点私网和 HAIP。
- 验证 Voting Disk 和 OCR。
- 验证 ASM 磁盘组。
- 验证数据库实例启动和 RAC 服务漂移。
- 稳定观察后再恢复生产承载。
六、最终结论#
本次故障通过多层日志形成完整证据链:
Oracle 告警日志
确认数据库实例突然中断,无正常关闭记录
↓
Linux 启动记录
确认主机在短时间内多次重新启动
↓
Linux 审计日志
排除人工 reboot 和正常 shutdown
↓
kdump 和 vmcore
确认每次重启前均发生 Kernel Panic
↓
vmcore-dmesg
确认 Socket1/CPU1 Fatal Machine Check
↓
Lenovo BMC/XCC
确认 CPU1 Machine Check Exception (Uncorrectable)最终定性为:
Oracle RAC 节点
sydb2多次异常重启,是由 Lenovo 服务器 CPU1/Socket1 处理器子系统不可纠正硬件错误引起。Linux 内核检测到处理器上下文损坏后触发 Kernel Panic,kdump 保存转储并自动重启。Oracle RAC、ASM、Clusterware 和数据库实例均为被动中断。
重启后出现的 CSSD 网络心跳缺失、GIPC 连接失败和 CRSD Policy Engine 无法初始化,属于服务器持续硬件不稳定及多次异常复位后的次生故障表现,不应作为本次事故的首要根因。
在 CPU1/Socket1 相关硬件完成维修、更换并通过稳定性测试之前,sydb2 不应重新承载生产业务。
