
1. Oracle 19c集群巡检概述作为企业级数据库系统的核心组件Oracle 19c RAC集群的稳定运行直接关系到业务连续性。不同于单实例数据库集群环境涉及节点间通信、资源共享和故障转移等复杂机制这使得常规巡检需要特别关注集群特有的健康指标。我在金融行业运维Oracle集群的五年实践中发现超过60%的严重故障其实都有前期预警信号只是被常规检查遗漏了。完整的集群巡检应该覆盖三个维度硬件资源层服务器、存储、网络、集群软件层GI资源状态、节点间通信和数据库层实例状态、性能指标。每次巡检就像给数据库做全身体检不仅要看表面症状更要发现潜在风险。下面这个真实案例很能说明问题某电商平台在促销前巡检时发现一个节点cache fusion网络延迟偏高及时更换网卡避免了活动期间集群脑裂事故。2. 集群健康检查核心指标2.1 节点可用性检查首先通过crsctl工具检查集群服务状态# 检查集群整体状态 crsctl check cluster -all # 输出示例 CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online任何非online状态都需要立即排查。我曾遇到一个案例节点2的CSS服务显示为offline最终发现是multicast地址被防火墙拦截。关键检查点所有节点VIP状态正常ip addr showSCAN监听器响应正常srvctl status scan_listener节点间时钟同步偏差小于100msntpstat2.2 集群资源状态分析使用以下命令获取详细资源报告crsctl stat res -t -init要特别注意以下几点所有数据库实例状态应为ONLINE表决磁盘voting disk健康状态OCR磁盘组冗余状态常见异常处理资源频繁切换检查节点负载均衡和网络延迟资源卡在INTERMEDIATE状态可能需要强制清理crsctl stop res -f2.3 缓存融合性能检查RAC集群的核心是Cache Fusion机制通过以下SQL监控全局缓存效率SELECT inst_id, name, value FROM gv$sysmetric WHERE name IN (GC CR Block Received Time, GC Current Block Received Time) AND group_id 2;健康阈值GC CR Block Received Time 15msGC Current Block Received Time 20ms重要提示当网络延迟超过30ms时应考虑检查私网互联如更换为RDMA网卡3. 存储与日志深度检查3.1 ASM磁盘组健康度ASM是RAC存储的基础定期检查磁盘组冗余状态SELECT name, state, type, total_mb, free_mb FROM v$asm_diskgroup;重点关注剩余空间不足20%时需要扩容任何磁盘的FAILGROUP状态异常重平衡操作是否完成v$asm_operation3.2 集群日志分析日志是故障诊断的金矿关键日志位置GI报警日志$GRID_HOME/log/ /alert .logOCR自动备份$GRID_HOME/log/ /client/ocrbackup_ .log节点驱逐日志$GRID_HOME/log/ /agent/crsd/oraagent_oracle/oraagent_oracle.log使用adrci工具高效分析adrci show alert -tail 504. 性能瓶颈排查实战4.1 全局等待事件分析运行以下SQL识别集群性能瓶颈SELECT inst_id, event, count(*) FROM gv$session_wait WHERE wait_class ! Idle GROUP BY inst_id, event ORDER BY 3 DESC;典型RAC特有等待事件gc cr block busy热点块争用gc buffer busy acquire全局缓存竞争ges lock grant queue全局锁等待4.2 实例负载均衡检查理想的RAC应该实现工作负载均匀分布SELECT inst_id, round(100*sum(case when statusACTIVE then 1 else 0 end)/count(*),1) as active_rate, count(*) as total_sessions FROM gv$session GROUP BY inst_id;当某个实例的active_rate持续高于其他实例15%以上需要考虑服务重分配。5. 巡检自动化方案5.1 使用Orachksum工具Oracle官方提供的巡检工具$ORACLE_HOME/suptools/orachk/orachk -c all -d output_dir检查内容包括集群配置最佳实践已知问题匹配性能基线偏差5.2 自定义巡检脚本这是我日常使用的巡检脚本框架#!/bin/bash # 集群状态检查 crsctl check cluster -all cluster_status_$(date %F).log # ASM空间检查 sqlplus -S / as sysdba asm_space_check.sql # 性能指标收集 awr_report.py --last 4 --all-instances6. 关键问题处理记录6.1 脑裂场景处理当集群出现脑裂时节点间失去通信应按以下步骤处理确认故障范围crsctl check cluster -all收集诊断信息diagcollection.pl -collect -crshome $GRID_HOME谨慎执行节点恢复crsctl stop cluster -all逐节点启动crsctl start cluster -n node_name6.2 OCR损坏恢复若OCR出现损坏使用自动备份恢复ocrconfig -restore $GRID_HOME/cdata/cluster_name/backup_timestamp.ocr恢复后务必验证ocrcheck7. 巡检报告生成技巧专业的巡检报告应包含执行摘要1页关键发现和建议详细发现按严重程度排序紧急问题需24小时内处理重要问题需一周内处理优化建议历史对比与上次巡检结果的指标变化使用以下命令生成HTML格式报告orachk -html -u dbaadmin -p password -c all -o full_report.html在每月例行的某银行系统巡检中通过分析AWR报告发现一个异常节点2的gc cr block busy等待突然增加。进一步检查发现是该节点SSD缓存卡故障导致块传输延迟更换硬件后性能提升40%。这个案例说明不能只满足于集群能运行更要关注性能指标的异常波动。