游乐游手机版
首页/数据库/文章详情

Oracle 11g RAC节点频繁自动重启驱逐原因分析

时间:2026-07-19 20:47
Oracle11gRAC节点频繁自动重启驱逐,根因通常为网络心跳超时,ocssd log中CRS-1611 1610 1607连续出现可确认。私网网卡变更后需同步GPnP配置,否则HAIP无法启动。ORA-29740仅表示驱逐结果,需排查网络丢包、时间不同步等底层问题。

如何快速判断ocssd.log中是否真的丢失了网络心跳

不要只查看alert.log/var/log/messages,这些日志记录的是最终结果而非根本原因。正确的排查路径是直接分析ocssd.log文件,路径为:/oracle/11.2.0/grid/log//cssd/ocssd.log

为什么Oracle 11g RAC节点会频繁发生自动重启驱逐现象?

  • 搜索 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无法启动

这是很多运维人员容易踩的坑。从Oracle 11.2.0.2版本开始,RAC采用HAIP替代传统的bonding技术。HAIP不识别手动配置的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 clusterthis 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 > 50await > 50ms)。
  • 私网交换机丢包、端口震荡、MTU不一致(尤其在VMware中混用 e1000vmxnet3 网卡时)、防火墙误拦截UDP数据包(默认端口范围 12500–12600)等都可能导致心跳被误判为丢失。
  • 时间不同步也会引发连锁反应:CTSS日志中可能出现异常返回值,ntp offset 超过秒级时,ocssd 对心跳延迟的判断就会失准。

容易被忽略的底层网络与配置细节

许多排查工作止步于“网络通了”“IP配对了”,但真正导致问题的往往是更细微的链路层行为。例如:

  • rx_discards 非零但未被监控到——这通常意味着网卡驱动或中断处理能力已达上限,这不是丢包,而是网卡主动丢弃。
  • HAIP启动后看不到 169.254.x.x 地址,第一反应是配置错误,但实际原因可能是 oifcfg 指向的子网掩码与物理网卡不匹配(例如配置了 /24,而网卡实际是 /23)。
  • ocssd.log 中的报错时间晚于节点重启时间?这说明日志写入本身已受阻,需要向前翻至少5分钟以上的日志内容,寻找最早的异常记录。
来源:https://www.php.cn/faq/2809701.html
上一篇PostgreSQL 16存储过程中利用并行查询提升效率的方法 下一篇Redis 7.0增量持久化解决大数据量RDB快照生成慢
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
MyISAM索引文件与数据文件分离存储的原因解析
数据库 · 2026-07-20

MyISAM索引文件与数据文件分离存储的原因解析

MyISAM将索引与数据分离存储,索引文件存磁盘地址,数据文件为堆表。该设计源于不支持事务、行锁及崩溃恢复,实现简单但代价较高:随机I O增加、表锁阻塞写入、无法利用覆盖索引,适合读多写少场景。

分布式系统全局防御SQL注入攻击的完整方案
数据库 · 2026-07-20

分布式系统全局防御SQL注入攻击的完整方案

全局防御SQL注入需在数据流转各节点设防:所有数据库访问强制参数化查询,禁用动态拼接;每个微服务使用独立最小权限账号;中间件拦截DDL关键词作兜底;ORM及分库分表组件防范隐性缺口,使拼接SQL难以隐藏。

Navicat连接Redis查看不同Slot槽位分布的方法
数据库 · 2026-07-20

Navicat连接Redis查看不同Slot槽位分布的方法

NavicatforRedis不显示槽位分布,需在命令行执行CLUSTERSLOTS查看连续槽段映射,或使用CLUSTERKEYSLOT定位特定key的槽号。节点列表仅反映拓扑发现,不包含真实槽范围信息,手动查槽才能避免被误导。

phpMyAdmin导入CSV时NULL关键字识别失败原因
数据库 · 2026-07-20

phpMyAdmin导入CSV时NULL关键字识别失败原因

phpMyAdmin导入CSV时,默认不将NULL文本或空单元格转为SQLNULL,需手动勾选“空字符串转为NULL”并填写NULL标识符,同时确保字段允许NULL、关闭引号,否则会存为字符串 NULL 或空字符串。

SQL查询嵌套层数过多导致执行计划失效的原因
数据库 · 2026-07-20

SQL查询嵌套层数过多导致执行计划失效的原因

嵌套超过3层时优化器放弃代价估算与条件下推,导致预估行数偏差三个数量级以上,MATERIALIZE和TableSpool高频出现。视图本质是文本模板,子查询被复制执行。CTE可能强制物化。扁平化关键在于让优化器准确估算行数并实现条件穿透。