Oracle RAC 故障诊断详解

Oracle RAC 故障诊断详解

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


1. 概述

RAC 故障诊断保证集群稳定[1]:

详细见:Oracle RAC 架构深度解析Oracle Cluster Health Monitor 详解


2. 常见故障

2.1 节点驱逐

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

2.2 网络故障

- Private 网络中断
- Cache Fusion 影响
- 性能

2.3 存储故障

- ASM 磁盘故障
- Voting/OCR
- 集群停

2.4 资源故障

- 数据库
- 实例
- 服务
- 监听器

3. 诊断工具

3.1 crsctl

crsctl check crs
crsctl check cluster -all
crsctl stat res -t

3.2 srvctl

srvctl status database -d prod
srvctl status nodeapps
srvctl status asm

3.3 TFA

tfactl diagcollect -oreason "rac"

详细见:Oracle Trace File Analyzer 详解


4. 节点驱逐

4.1 原因

- 网络心跳失败
- 磁盘心跳失败
- 节点 hang
- 资源不足

4.2 分析

- CHM 数据
- alert log
- cssd.log
- ocssd.log

4.3 修复

- 修复根因
- 重启节点
- 重新加入

5. 网络故障

5.1 Private

- HAIP 故障
- 网卡故障
- 交换机

5.2 诊断

# 检查
ifconfig -a
ping node2-priv
crsctl stat res -t | grep haip

5.3 影响

- Cache Fusion
- gc 等待
- 性能

6. 存储故障

6.1 ASM

- 磁盘故障
- Disk Group
- Voting/OCR

6.2 诊断

SELECT group_number, name, state FROM v$asm_diskgroup;
SELECT group_number, disk_number, mount_status, state 
FROM v$asm_disk;

6.3 修复

- 替换磁盘
- Rebalance
- 恢复

7. Voting Disk

7.1 故障

- 少数故障:继续
- 多数故障:集群停

7.2 诊断

crsctl query css votedisk

7.3 修复

crsctl add css votedisk /dev/newvote
crsctl delete css votedisk /dev/badvote

8. OCR

8.1 故障

- OCR 损坏
- 集群配置丢失

8.2 诊断

ocrcheck
ocrconfig -showbackup

8.3 恢复

ocrconfig -restore /u01/ocr.bak

9. 数据库故障

9.1 实例

- 实例崩溃
- 自动重启
- 服务切换

9.2 诊断

srvctl status database -d prod
srvctl status instance -d prod -i prod1

9.3 alert log

- $ORACLE_BASE/diag/rdbms/...
- 检查错误
- 分析

10. 性能诊断

10.1 Cache Fusion

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

10.2 AWR

@?/rdbms/admin/awrrpt.sql

10.3 ASH

SELECT * FROM v$active_session_history WHERE ...;

详细见:Oracle RAC 性能调优


11. 日志

11.1 Clusterware

- $GI_HOME/log/node1/crsd/crsd.log
- $GI_HOME/log/node1/cssd/cssd.log
- $GI_HOME/log/node1/evmd/evmd.log

11.2 ASM

- $GI_HOME/log/node1/asm/asm.log

11.3 数据库

- $ORACLE_BASE/diag/rdbms/.../trace/alert_*.log

12. CHM 分析

12.1 节点驱逐前

$GI_HOME/bin/chmdbg.sh -last 1h

12.2 OS 资源

- CPU
- 内存
- 网络
- 磁盘

12.3 分析

- 资源耗尽
- 进程
- 根因

详细见:Oracle Cluster Health Monitor 详解


13. 常见错误

13.1 ORA-29740

- 节点驱逐
- 检查网络
- 修复

13.2 ORA-15032

- ASM 操作失败
- 检查
- 修复

13.3 ORA-29701

- 无法通信
- 集群
- 检查

14. 预防

14.1 监控

- 实时
- 告警
- 自动

14.2 演练

- 故障场景
- 验证
- 改进

14.3 文档

- 配置
- 流程
- 故障

15. 最佳实践

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

16. 参考资料

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