Oracle RAC 故障案例详解

Oracle RAC 故障案例详解

适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

RAC 实战故障案例[1]:

详细见:Oracle RAC 故障诊断详解


2. 案例 1:节点驱逐

2.1 现象

- 节点 2 被驱逐
- 集群重配置
- 业务影响

2.2 诊断

- CHM 数据
- cssd.log
- 节点驱逐前 OS 资源

2.3 原因

- Private 网络中断
- 心跳失败
- 超时

2.4 修复

- 修复网络
- 重启节点
- 重新加入集群

2.5 验证

olsnodes -n -s -t
crsctl stat res -t

3. 案例 2:Voting Disk 故障

3.1 现象

- 多数 Voting Disk 故障
- 集群停止
- 节点驱逐

3.2 诊断

crsctl query css votedisk

3.3 修复

# 添加新盘
crsctl add css votedisk /dev/newvote

# 删除坏盘
crsctl delete css votedisk /dev/badvote

3.4 验证

crsctl query css votedisk

4. 案例 3:OCR 损坏

4.1 现象

- OCR 损坏
- 集群配置丢失
- 资源异常

4.2 诊断

ocrcheck
# 失败

4.3 修复

# 停止集群
crsctl stop crs -all

# 恢复
ocrconfig -restore /u01/app/grid/cdata/backup00.ocr

# 启动
crsctl start crs -all

4.4 验证

ocrcheck
crsctl stat res -t

5. 案例 4:ASM Disk Group Dismount

5.1 现象

- Disk Group dismount
- 数据库不可用
- 磁盘故障

5.2 诊断

SELECT group_number, name, state FROM v$asm_diskgroup;
-- DISMOUNTED

5.3 修复

-- 检查磁盘
SELECT group_number, disk_number, mount_status, state 
FROM v$asm_disk;

-- Mount
ALTER DISKGROUP DATA MOUNT;

5.4 验证

SELECT group_number, name, state FROM v$asm_diskgroup;
-- MOUNTED

6. 案例 5:实例崩溃

6.1 现象

- 实例崩溃
- ORA-00600
- 业务切换

6.2 诊断

- alert log
- trace 文件
- ORA-00600 参数

6.3 修复

- 收集诊断
- 联系 Oracle Support
- 临时:重启实例
- 永久:Patch

6.4 验证

srvctl status database -d prod

7. 案例 6:Cache Fusion 性能

7.1 现象

- gc 等待高
- 性能下降
- 节点间传输多

7.2 诊断

SELECT event, time_waited FROM v$system_event 
WHERE event LIKE 'gc%' ORDER BY time_waited DESC;

7.3 修复

- 服务隔离
- 分区
- 节点亲和
- 优化 SQL

7.4 验证

SELECT event, time_waited FROM v$system_event 
WHERE event LIKE 'gc%';
-- 降低

8. 案例 7:Listener 故障

8.1 现象

- 连接失败
- ORA-12541
- 应用无法连接

8.2 诊断

lsnrctl status
srvctl status listener
srvctl status scan_listener

8.3 修复

# 启动
srvctl start listener
srvctl start scan_listener

# 或
lsnrctl start

8.4 验证

lsnrctl status
sqlplus sys/xxx@prod as sysdba

9. 案例 8:VIP 故障

9.1 现象

- VIP 故障
- 应用连接慢
- TAF 失败

9.2 诊断

srvctl status vip -n node1
ifconfig -a

9.3 修复

# 重启 VIP
srvctl stop vip -n node1
srvctl start vip -n node1

9.4 验证

srvctl status vip -n node1
ping node1-vip

10. 经验总结

10.1 预防

- 监控
- 冗余
- 演练

10.2 响应

- 快速
- 诊断
- 修复

10.3 改进

- 根因
- 优化
- 文档

11. 最佳实践

  1. CHM:启用
  2. TFA:使用
  3. 监控:实时
  4. 冗余:全栈
  5. 日志:检查
  6. 演练:故障
  7. 文档:记录
  8. 自动化:告警
  9. 根因:分析
  10. 改进:持续

12. 参考资料

[1] Oracle Clusterware Administration and Deployment Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/cwali/