根本原因是备份引发的I/O延迟或资源争用导致磁盘心跳超时(CRS-1614)与网络心跳丢失(CRS-1611)并发,触发递进式驱逐告警链;须结合ocssd.log中CRS-1611/1614/1610时间序列及lmon trace中reason 3交叉验证。

Oracle 11g RAC节点在备份时触发驱逐,根本原因不是备份本身,而是备份引发的资源争用或I/O延迟,导致ocssd.bin进程无法按时完成心跳(尤其是磁盘心跳),从而触发CRS-1611→CRS-1610→CRS-1607告警链。
ocssd.log里出现CRS-1614说明磁盘心跳已超时
备份期间如果ocssd.log中同时出现CRS-1611(网络心跳丢包)和CRS-1614(disk I/O timeout),基本可锁定是磁盘心跳失败。因为ocssd.bin每秒发网络心跳,但磁盘心跳依赖对voting disk的定期写入——RMAN全库备份会显著抬高存储I/O负载,若ASM磁盘组响应变慢(例如平均IO等待 > 500ms),voting disk写入就可能超时。此时集群认为该节点“失联”,不是因为它收不到包,而是它“写不出心跳”。
-
CRS-1614不会单独出现,一定伴随CRS-1611或CRS-1610,这是交叉验证的关键信号 - 检查voting disk所在磁盘组的IO性能:
asmcmd lsdg看failgroup状态,iostat -x 1 5抓备份时段的%util和await - 不要只盯着备份进程本身,要查
ocssd.bin是否因CPU调度延迟而错过写盘窗口(misscount默认30秒,但实际写盘间隔远小于1秒)
备份引发的IPC send timeout会间接导致驱逐
当RMAN备份大量读取数据文件时,会加剧全局缓存争用,lms进程忙于传输数据块,lmd/lmon进程响应变慢。这时alert.log可能出现IPC send timeout,而ocssd.log虽不直接打印该错误,但lmon与ocssd通信受阻会导致心跳上报延迟——集群误判为节点僵死,最终触发驱逐(原因码常为reason 3)。
- 确认方法:在驱逐时间点前后1分钟内,检查所有节点的
lmon_*.trc日志,搜索kjxgrrcfgchk:Initiating reconfig, reason 3 - 典型诱因:备份期间
Global Cache Blocks Lost指标陡增,或gc cr block busy等待事件飙升 - 这不是网络配置问题,所以调
cluster_interconnects或改MTU没用;重点应压降备份并发度、避免热点块集中读取
为什么alert.log只写ORA-29740却不提备份?
alert.log里的ORA-29740: evicted by member只是结果快照,它不记录上下文。真正决定驱逐的是ocssd.bin的判断逻辑,而该进程的所有输入都来自ocssd.log。如果你只查alert.log,就会错过CRS-1614这种磁盘层关键线索,误以为是网络问题去调交换机,实际该换存储策略。
- 必须三日志比对:以驱逐时间戳为中心,同步拉取各节点的
ocssd.log、lmon_*.trc、crsd.log(注意crsd.log只管资源启停,不参与驱逐决策) - 备份脚本里加
sleep 30间隔,避免连续发起多个高IO任务;对大表备份启用section size分片,降低单次IO压力 - 禁用
_gc_affinity_time这类参数来“掩盖”问题,只会让驱逐更难预测——ocssd的判断依据是真实心跳,不是参数
真正危险的不是备份本身,是备份期间磁盘心跳和IPC通信同时承压。这两个通道任何一条断掉,ocssd都会执行驱逐。排查时别被“备份”这个动作带偏,盯住ocssd.log里CRS-1611/1614/1610的时间序列,以及lmon trace里的reason code,才是定位根因的唯一路径。


















