确认是否真驱逐需查ocssd.log中“eviction initiated for node x”或“lost 2 disk heartbeats”,有则确为cssd触发的节点级驱逐,无则可能为假死或实例级异常;再结合iostat与私网诊断定位根因。

先看 ocssd.log 里有没有 “Lost 2 disk heartbeats” 或 “Eviction initiated for node X” —— 没这两条,基本不是真驱逐;有,立刻查存储 I/O 和私网连通性。
确认是不是真被驱逐,而不是假死或日志误报
很多人一看到 alert.log 里 ORA-29740: evicted by instance number X 就认定是驱逐,但实际可能是实例级 member kill(比如 ASM 实例挂了),节点本身没重启。关键要看:
- 被“驱逐”节点的
$GRID_HOME/log/<hostname>/cssd/ocssd.log</hostname>中是否出现Eviction initiated for node X或node eviction initiated—— 这才是 CSSD 启动节点级驱逐的铁证 - 是否伴随
IPC Receiver dump detected或大量minact-scn: useg scan erroring out—— 这类报错说明实例已卡死,驱逐只是结果,不是原因 - 检查系统日志:
dmesg | grep -i "killed process"或journalctl -b | grep -i "oom\|kill",排除 OOM Killer 杀进程导致的伪驱逐
查存储延迟:voting disk I/O 是第一怀疑对象
存储延迟触发驱逐是刚性逻辑:只要 voting disk 的心跳写入超时(超过 disktimeout),CSSD 就强制驱逐,不看网络。
- 用
crsctl query css votedisk确认投票盘在哪个 ASM 磁盘组(比如+VOTE),再用asmcmd lsdg和asmcmd ls -l查清它落在哪几块物理盘上 - 在对应节点跑
iostat -x 1 5,重点盯:%util > 95、await > 50ms、r_await/w_await持续飙升 —— 这些比平均值更有意义 - VMware 环境必须验证:
disk.EnableUUID=true是否启用、共享磁盘是否设为 “multi-writer”、控制器类型是否为 LSI Logic SAS(非 IDE 或 BusLogic)
查私网通信:Packet Reassembles Failed 是高危信号
Packet Reassembles Failed 不是警告,是网络栈已无法处理分片包,Cache Fusion 和集群心跳都会断。它常被忽略,因为不直接写在 alert.log 里。
- 在节点系统层查:
netstat -s | grep -i "reasm"或cat /proc/net/snmp | grep -i "Reasm",看ReasmFails计数是否持续增长 - 私网 MTU 必须统一且 ≥1500(VMware 虚拟网卡易混用 e1000/vmxnet3,导致一端 MTU=1500、另一端=1472)
- 抓包验证:
tcpdump -i bond0 -nn 'ip[6:2] > 576' -c 10(捕获分片包),再看接收端能否完整重组;若tcpdump显示大量IP fragment但无对应完整包,就是重组失败 - 防火墙必须放行 UDP 12500–12600 端口(RAC 私网默认走 UDP,不是 TCP)
别跳过 _lm_tickets 和 HugePages 配置
这两个参数不显眼,但一旦出问题,症状就是“重配置卡住 → lms/lmd 等待超时 → 相互驱逐”,和网络/存储无关。
-
_lm_tickets建议值 =SGA_MAX_SIZE(GB) × 50(例如 SGA=120GB → 设为 6000),小于 5000 在大内存场景下极易耗尽 ticket 导致 LMS 发送队列挂起 - HugePages 必须禁用
transparent_hugepage(改/etc/default/grub+grub2-mkconfig+ reboot),否则use_large_pages=only会 fallback 失败,表现为 PMON 反复崩溃、实例启动卡在 “Starting background process VKRM” - 验证 HugePages:运行
$ORACLE_HOME/rdbms/install/hugepages_settings.sh(必须在实例已启动后执行),输出值要加 5% 余量,且sysctl -p后检查vm.nr_hugepages是否生效
真正难排查的驱逐,往往不是单一原因。比如 iostat 看上去正常,但 await 波动剧烈(20ms → 200ms → 15ms);或者 ocssd.log 里同时出现磁盘心跳丢失和 IPC Send timeout detected —— 这时候得同步比对三份日志的时间戳:ocssd.log、oclsomon.log、对应节点的 alert.log,毫秒级对齐才能锁定根因。











