必须用组合命令脚本检查RAC节点真在线:olsnodes -s -t确认Active+Hub、crsctl check cluster -all验证三组件、crsctl status resource -t解析STATE及STATE_DETAILS;同时捕获时间偏移、OCR备份时效、CHA离线、投票盘数量四类高危异常,并绕过ORACHK做VIP/SCAN/ASM/私网四重实时探测。
怎么用脚本一键检查所有节点是否“真在线”
光看 crsctl check crs 返回 “crs is online” 不代表节点可用。必须同时确认节点被集群识别、资源在正确位置、且无中间态卡住。
推荐组合命令打包进脚本:
-
olsnodes -s -t:只依赖 OCR 和ohasd,输出必须全是Active+Hub(双节点场景),否则说明节点未被集群真正接纳 -
crsctl check cluster -all:逐节点验证 CRS、CSS、EVM 三组件是否全部 online;任一节点返回非零退出码就该停住后续检查 -
crsctl status resource -t | grep -E "(ora\.asm|ora\.<db_name>\.db|ora\.LISTENER_SCAN1\.lsnr)"</db_name>:聚焦关键资源,检查STATE和TARGET是否严格一致为ONLINE,不一致就说明资源挂起或启动失败
注意:crsctl status resource -t 输出中最后一列 STATE_DETAILS 很关键——比如 ora.orcl.db 显示 Open,但细节写 Instance Shutdown,实际实例已掉线,脚本必须解析这一列,不能只匹配 ONLINE。
巡检脚本里必须抓取的三类高危异常
很多脚本只扫表面状态,漏掉真正会引发故障的隐患。以下三类必须在脚本中显式提取并告警:
-
Time drift detected (>10s) between nodes:时间不同步超 10 秒,GI 可能误判节点死亡,触发 eviction;脚本应调用ntpq -p或chronyc tracking校验各节点 offset -
OCR backup not found in last 4 hours:OCR 备份失效等于失去集群恢复能力;脚本需执行ocrconfig -showbackup并检查最近备份时间戳 -
ora.chad OFFLINE:CHA(Cluster Health Advisor)离线意味着自治健康框架缺失,节点故障时无法快速决策;脚本应运行crsctl status res ora.chad,状态非ONLINE就报严重错误
别忽略 voting disk 数量:脚本里加一句 crsctl query css votedisk | grep "total count" | awk '{print $NF}',双节点 RAC 必须 ≥3,少于这个数集群容错能力已降级,但 crsctl status resource 不会直接报错。
为什么不能只靠 ORAchk 做自动化巡检
orachk 是配置合规性扫描器,不是运行时健康探测器。它默认不验证网络连通性、存储 I/O 延迟、VIP 漂移能力,这些恰恰是 RAC 高可用的核心。
脚本若直接调用 orachk 而不做补充,会漏掉这些真实风险:
-
ora.LISTENER_SCAN1.lsnr显示 ONLINE,但lsnrctl status LISTENER_SCAN1查不到 1521 端口监听 → 客户端根本连不上 SCAN -
ora.cluster_interconnect.haipONLINE,但私网ip link show ens37显示NO-CARRIER→ 心跳中断,只是还没触发驱逐 -
ora.DATA.dgONLINE,但某节点执行asmcmd lsdg报ORA-15032: not all alterations performed→ 该节点实际无法访问磁盘组
所以脚本必须绕过 orachk 的静态检查,直接调用底层命令做实时探测,尤其对 VIP、SCAN、ASM diskgroup、私网链路做 ping / lsnrctl / asmcmd / ip link 四重验证。
生成可交付报告时最容易被忽略的细节
自动生成 Word 报告的脚本常把所有节点日志堆在一起,导致问题定位困难。真正有用的报告必须按节点隔离、带时间戳、标出异常上下文。
- 每个节点的
alert.log截取应限定最后 200 行,且过滤含ORA-、CRS-、ERROR的行,避免日志刷屏掩盖重点 - AWR 抓取必须指定
-dbid和-inst_num参数,否则多实例环境下容易混用数据;脚本里别用模糊的awrrpt.sql,改用awrddrpt.sql生成跨实例对比报告 - RMAN 备份状态检查不能只跑
list backup summary,要加validate backup验证片可读性,否则备份文件损坏也显示“成功”
脚本最后一步不是打包 zip,而是生成一个 summary.html:汇总各节点 olsnodes 状态、关键资源 STATE/TARGET 差异、时间偏移最大值、OCR 最近备份时间、以及所有检测到的 ORA-/CRS- 错误代码频次——这才是运维人员第一眼需要的信息。


















