Oracle RAC集群的日常运维中,OCR(Oracle Cluster Registry)作为集群的配置信息仓库,一旦损坏往往会导致整个集群瘫痪。而ocrcheck和cluvfy正是Oracle提供的两个最重要的诊断工具,前者用于检查OCR和OLR的健康状态,后者则可以对集群进行安装前检查和运行期全面巡检。掌握这两个工具的使用方法,是每一位RAC运维DBA的必修课。本文将从原理、命令用法和实战排查三个层面展开介绍。

一、OCR的作用与ocrcheck基础用法
OCR中保存着RAC集群所有资源的状态与配置信息,包括数据库、监听、服务、节点应用等元数据。OCR以主备镜像的形式存放在OCR磁盘组中,同时每个节点本地还维护一份OLR(Oracle Local Registry),用于节点单独启动时读取本地配置。如果OCR内容损坏或主备不一致,crs可能无法启动,此时ocrcheck就是第一诊断入口。
使用root用户执行ocrcheck,不加任何参数时会检查OCR的整体状态,包括设备名称、所在磁盘组、可用空间及主备镜像的一致性:
# 检查OCR整体状态
[root@rac1 ~]# ocrcheck
Status of Oracle Cluster Registry is : Success
Oracle Cluster Registry version : 4
Total space (kbytes) : 491732
Used space (kbytes) : 132772
Available space (kbytes) : 358960
Device/File Name : +OCR
Device/File integrity check succeeded
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check succeeded
从输出可以看到,如果出现Device/File integrity check succeeded表示OCR设备完整性正常,Cluster registry integrity check succeeded说明OCR内容层面没有逻辑损坏。若失败则输出failed并提示具体错误码。常用的参数还有几个:-local检查本节点的OLR状态,-config只显示OCR的配置位置而不做校验,-backup列出OCR自动备份的详细信息。
# 检查本节点OLR ocrcheck -local # 查看OCR备份列表 ocrcheck -backup # 只查看OCR配置 ocrcheck -config
需要注意,部分检查操作需要root权限,否则可能报PROT-1权限错误。如果ocrcheck长时间无响应,通常是OCR所在磁盘组对应的ASM实例或存储链路存在问题,此时应优先排查存储和grid进程状态。
二、cluvfy工具的功能定位与常用命令
cluvfy(Cluster Verification Utility)是Oracle官方提供的集群校验工具,功能覆盖安装前预检查、升级前检查、打补丁前检查以及运行期的组件健康巡检。它位于grid用户的GI_HOME/bin目录下,使用grid用户执行即可。相比手工逐项检查内核参数、网络配置、用户limits等,cluvfy一条命令就能按官方标准做全面体检,输出结果直接标明passed或failed,非常适合交付验收和巡检脚本化。
最典型的用法是安装RAC前的系统预检查:
# 安装前检查(软硬件环境) cluvfy stage -pre crsinst -n rac1,rac2 -verbose # 安装完成后检查 cluvfy stage -post crsinst -n rac1,rac2 -verbose # 数据库软件安装前检查 cluvfy stage -pre dbinst -n rac1,rac2 -verbose
-verbose参数会输出每个检查项的详细内容,比如每个网卡、每个内核参数的实际值与期望值的对比。stage方式针对某个安装阶段做批量检查,而comp(component)方式则针对单个组件做精细校验,例如网络连通性、ASM、时间同步、空间预留等:
# 检查节点间网络连通性 cluvfy comp nodecon -n all -verbose # 检查NTP时间同步 cluvfy comp clocksync -verbose # 检查ASM组件 cluvfy comp asm -all -verbose # 检查硬件与操作系统兼容性 cluvfy comp sys -n rac1,rac2 -p CRS -verbose
cluvfy还支持-refnode参数以某个节点为参照检查其他节点配置一致性,这在节点配置漂移导致集群不稳定时非常有用。输出的报告结果分为passed、failed、ignored三类,failed项会给出具体原因,比如参数值不匹配、端口被占用、磁盘权限不对等,运维人员按提示逐项修复即可。
三、实战场景:典型故障排查思路
场景一:crs无法启动,怀疑OCR损坏。处理顺序是先用ocrcheck -local确认OLR正常,因为OLR损坏会导致ohasd无法读取OCR位置。再用ocrcheck检查OCR本体,如果出现逻辑损坏,可以用ocrconfig -restore从最近备份恢复,或使用-day选项回滚到指定天的自动备份:
# 查看并恢复OCR备份 ocrconfig -showbackup ocrconfig -restore /u01/app/grid/backup/backup_file.ocr # 手动触发物理备份 ocrconfig -manualbackup
场景二:新增节点或扩容前验证环境。在新节点上架完成后,先在新节点安装cluvfy(可以直接从已有节点复制runcluvfy相关文件),执行pre crsinst检查,确认内核参数、网络、共享存储可见性全部通过后再启动安装程序,可以避免安装到一半才发现环境问题导致回退。
场景三:巡检脚本化。建议将ocrcheck与cluvfy纳入周期性巡检,例如每月执行一次完整检查,并将failed结果通过邮件告警。一个简单的巡检逻辑是:先执行ocrcheck获取OCR与OLR状态,再执行cluvfy comp nodecon和clocksync确认网络与时间同步正常,最后检查ocrconfig -showbackup确认备份时间在有效窗口内。如果自动备份超过安全期限或备份目录空间不足,应及时手动备份并清理。
总体而言,ocrcheck偏向OCR与OLR本身的内容与镜像一致性诊断,cluvfy偏向环境与集群组件的标准化校验,两者配合使用可以覆盖RAC集群绝大部分的健康检查需求。日常运维中养成定期执行的习惯,在故障发生前就能发现隐患,远比事后恢复更加稳妥。
Oracle RACocrcheckcluvfy修改时间:2026-09-03 00:21:22