CRS-1611→CRS-1610→CRS-1607连续出现表明网络心跳超时触发驱逐,需查ocssd.log中对应错误及时间戳;HAIP启动失败主因是GPnP配置未同步更新私网接口,须用oifcfg setif重设并停启集群。
CRS-1611→CRS-1610→CRS-1607 连续出现,基本就是网络心跳超时触发的驱逐,不是硬件崩了,而是集群判定该节点“失联”后投票踢出。
怎么看ocssd.log里是不是真丢了网络心跳
别翻 alert.log 或 /var/log/messages ——那些是结果,不是根因。直接查:/oracle/11.2.0/grid/log/<hostname>/cssd/ocssd.log</hostname>。
- 搜
CRS-1611:连续丢失 75% 心跳,后面带的时间值(如in 6.512 seconds)越小,说明恢复窗口越窄,问题越紧急 - 搜
CRS-1610:丢失 90%,已逼近驱逐阈值;若只有一侧报这个、另一侧没报对应CRS-1612(“this node was evicted by node X”),大概率是本端收包异常,比如网卡rx_discards非零、中断风暴 - 搜
CRS-1607:驱逐已触发,节点即将重启;此时crsctl stat res -t会失败,但crsctl stat res -t -init还能看到底层资源状态
多节点同一时间段密集打出这些日志,基本可排除单点故障,指向底层网络抖动或配置错位。
为什么改了私网网卡名或IP后HAIP起不来
从 11.2.0.2 起,RAC 用 HAIP 替代传统 bonding,它不认你手动配的 IP,只认 GPnP 里注册的私网接口。你把 eth1 换成 eth2,但没同步更新 GPnP 配置,HAIP 就找不到可用网卡,直接卡在启动阶段。
- 先确认当前识别的私网接口:
$GRID_HOME/bin/oifcfg getif -global,输出应含cluster_interconnect标记 - 若显示旧网卡(如
eth1/100.100.100.0:cluster_interconnect),必须重设:$GRID_HOME/bin/oifcfg setif -global eth2/10.10.10.0:cluster_interconnect -
HAIP地址段固定为169.254.0.0/16,不能手动指定;它会在激活的私网接口上自动分配 1–4 个地址;绑定失败时ifconfig里看不到169.254.x.x别名 - 修改后必须停集群再启:
crsctl stop crs→ 等所有进程退出 →crsctl start crs;不能只重启ohasd
ORA-29740 是结果,不是原因
ORA-29740 出现在 alert.log 里,只是集群层 CSS 主动驱逐节点的信号,总伴随 evicting instance x from cluster 或 this node was evicted by node y。它说明节点已被判定“失联”,但没告诉你为什么失联。
- 常见诱因包括:
IPC Send timeout detected(网络 IPC 超时)、disk heartbeat failed(磁盘心跳失败)、Oracle 已知 Bug(如11.2.0.4在高负载 Linux 下的ocssd.bin竞争)、底层资源瓶颈(如共享存储iostat -x 1显示%util > 50或await > 50ms) - 私网交换机丢包、端口震荡、MTU 不一致(尤其 VMware 中混用
e1000/vmxnet3)、防火墙误拦截 UDP(默认端口12500–12600)都可能被误判为心跳丢失 - 时间不同步也会引发连锁反应:CTSS 日志出现异常返回值、
ntp offset超过秒级,就可能让ocssd对心跳延迟判断失准
容易被忽略的底层细节
很多排查止步于“网络通了”“IP配对了”,但真正卡住的是更细的链路行为。比如:
-
rx_discards非零却没被监控到——这往往意味着网卡驱动或中断处理能力已达上限,不是丢包,是主动丢弃 - HAIP 启动后没看到
169.254.x.x,第一反应是配置错,但实际可能是oifcfg指向的子网掩码与物理网卡不匹配(如配了/24,但网卡是/23) -
ocssd.log报错时间晚于节点重启时间?说明日志写入本身已受阻,得往前翻至少 5 分钟以上的段落找最早异常











