高可用 & 容灾5 分钟阅读
【故障案例】RAC 节点驱逐 — 心跳超时与 votedisk 故障处理全过程
真实案例:Oracle RAC 集群一个节点突然被驱逐(node eviction),业务中断。从 CRS 日志、网络心跳、votedisk 三个维度排查,定位到交换机端口协商问题。附 RAC 集群健康检查清单。
2026年4月26日阅读—点赞—收藏—
oraclerac节点驱逐集群故障案例
在知识库中专注阅读,并随时返回相关工具与课程
真实案例:Oracle RAC 集群一个节点突然被驱逐(node eviction),业务中断。从 CRS 日志、网络心跳、votedisk 三个维度排查,定位到交换机端口协商问题。附 RAC 集群健康检查清单。
本文是「每周一个 Oracle 故障案例」系列第 3 篇。RAC 节点驱逐是企业级 DBA 最怕遇到的故障之一——它意味着集群保护机制被触发,某个节点被强制隔离。
某公司核心业务系统运行在 Oracle 19c RAC 双节点集群上。周四上午 10:15,监控告警:节点 2(rac2)被驱逐,其上运行的实例 2 宕机,所有连接被转移到节点 1。
影响:
RAC 故障排查的第一步永远是看 Grid Infrastructure 的日志:
1# CRS Alert Log(最重要的日志)23> **本章目标**:掌握本章核心知识点4> **前置要求**:完成前序章节学习5> **预计时长**:60 分钟67tail -500 /u01/app/grid/diag/crs/rac2/crs/trace/alert.log89# 或者用 ocrcheck10$GRID_HOME/bin/crsctl query crs activeversion日志中发现关键信息:
12026-04-24 10:15:03.4562CRS-1607: The Oracle High Availability Services have been started on node rac2.3...42026-04-24 10:14:58.1235CRS-1606: The Oracle cluster is being reconfigured. Node rac2 is being removed.6CSS-1013: Voting file heartbeat not renewed by 1 seconds关键线索:Voting file heartbeat not renewed — 节点 2 无法更新 votedisk 上的心跳信号。
RAC 有两种心跳机制:
1# 检查私网接口状态2ifconfig eth1 # 或 bond13ip addr show eth145# 检查私网连通性(从 rac1 ping rac2 的私网地址)6ping -c 10 192.168.1.2ping 测试结果:10 个包中丢了 4 个,丢包率 40%——私网连通性有问题!
1# 检查网卡错误统计2ethtool -S eth1 | grep -i error34# 输出:5# rx_crc_errors: 15236# rx_frame_errors: 877# tx_errors: 089# 检查交换机端口速率协商10ethtool eth11112# 输出:13# Speed: 100Mb/s ← 应该是 1000Mb/s!14# Duplex: Half ← 应该是 Full!根因定位:节点 2 的私网网卡与交换机端口的速率协商出了问题——从千兆全双工降级到了百兆半双工。
这导致了:
1# 检查 votedisk 状态2$GRID_HOME/bin/crsctl query css votedisk34# 输出应该显示所有 votedisk 的状态1-- 检查集群互联状态2SELECT * FROM gv$cluster_interconnects;34-- 检查实例状态5SELECT inst_id, instance_name, status, host_name6FROM gv$instance;1# 在 rac2 上强制千兆全双工2ethtool -s eth1 speed 1000 duplex full autoneg off34# 确认速率5ethtool eth1 | grep -E "Speed|Duplex"6# Speed: 1000Mb/s ✓7# Duplex: Full ✓1# 启动 CRS2$GRID_HOME/bin/crsctl start crs34# 确认节点已加入集群5$GRID_HOME/bin/crsctl stat res -t67# 启动数据库实例8srvctl start instance -d orcl -i orcl21# 编辑网卡配置文件(RHEL/CentOS)2vi /etc/sysconfig/network-scripts/ifcfg-eth134# 添加:5ETHTOOL_OPTS="speed 1000 duplex full autoneg off"同时联系网络团队检查交换机端口配置。
RAC 节点驱逐的网络、存储与系统排查路径
以下检查项建议每周执行一次:
1# 1. 集群状态2crsctl stat res -t3crsctl check crs45# 2. 节点状态6olsnodes -n -s78# 3. Votedisk 状态9crsctl query css votedisk1011# 4. OCR 状态12ocrcheck1314# 5. 私网连通性15ping -c 100 <其他节点私网IP> | tail -31617# 6. 网卡状态18ethtool eth1 | grep -E "Speed|Duplex|Link"19ethtool -S eth1 | grep error2021# 7. ASM 磁盘组22asmcmd lsdg2324# 8. 监听器25srvctl status listener26lsnrctl status LISTENER_SCAN11# Cluster Verification 工具2$GRID_HOME/bin/cluvfy comp nodecon -n rac1,rac23$GRID_HOME/bin/cluvfy comp ssa -n rac1,rac2核心教训:RAC 的可用性不仅取决于软件配置,网络和存储的稳定性同样关键。一个交换机端口协商问题就能让整个节点被驱逐。
这是「每周一个 Oracle 故障案例」系列的第 3 篇。关注公众号 DBA学习之路 获取完整系列。RAC 高可用的系统学习请看 DBA 学习之路 Day 31-40 →