OCR和voting disk全挂时,只要自动备份可用且ASM磁盘可识别,就能恢复;关键步骤是停所有节点CRS、独占模式启ASM、重建同名同版本磁盘组、用ocrconfig -restore恢复OCR、再replace votedisk、最后全节点启CRS并验证。

OCR 和 voting disk 全挂了,集群起不来?别急——只要自动备份没丢、ASM磁盘还能识别,90% 的情况能原地拉起来。关键不是“能不能恢复”,而是“要不要跳过备份直接重建”。
确认 OCR 自动备份是否可用
这是整个恢复流程的生死线。没有有效备份,就只能走重建注册路径(风险高、信息丢失多)。
-
ocrconfig -showbackup必须在每个节点单独执行,因为备份只存于本地$GRID_HOME/cdata/<hostname>-cluster/下 - 看到类似
node1 2026/09/15 03:45:22 /u01/app/19.0.0/grid/cdata/node1-cluster/backup00.ocr才算有效;若只有PROT-25: Manual backups for the Oracle Cluster Registry are not available,说明没手工备过,得靠自动备份 - 注意时间戳:
backup00.ocr是最新自动备份,day.ocr是每日全量,week.ocr是每周全量——优先用backup00.ocr - 如果所有节点都查不到任何备份,且又没提前导出过
ocrconfig -export文件,那下一步就得接受“资源需重新注册”这个事实
以独占模式启动 CRS 并重建 ASM 磁盘组
不能直接 crsctl start crs,否则 CSSD 会抢着读损坏的 voting disk 导致失败。必须先绕过集群协调层,把 ASM 实例拉起来。
- 先停掉所有节点的集群栈:
crsctl stop crs -f(所有节点都执行) - 仅在一个节点执行:
crsctl start crs -excl -nocrs—— 这会启动ohasd、ora.asm,但不启动ora.cssd和ora.crsd - 用
sqlplus / as sysasm登录后,重建原 OCR/Voting 所在磁盘组(名称、冗余类型、兼容版本必须完全一致):CREATE DISKGROUP OCRDATA NORMAL REDUNDANCY<br> FAILGROUP FG1 DISK 'ORCL:OCR1'<br> FAILGROUP FG2 DISK 'ORCL:OCR2'<br> FAILGROUP FG3 DISK 'ORCL:OCR3'<br> ATTRIBUTE 'compatible.asm'='19.0.0.0.0';
- 特别注意:
compatible.asm值必须和原磁盘组一致(查asmcmd lsattr -G OCRDATA compatible.asm),错一个字符都会导致ocrconfig -restore报ORA-15032或静默失败
恢复 OCR 内容并替换 voting disk
这步顺序不能反:必须先让 OCR 可读,再让 CSSD 能用 voting disk 投票。否则 crsctl replace votedisk 会因 OCR 不可用而拒绝执行。
- 执行
ocrconfig -restore /u01/app/19.0.0/grid/cdata/node1-cluster/backup00.ocr—— 路径必须绝对准确,且该文件需可读(root权限) - 立刻验证:
ocrcheck应返回Status of Oracle Cluster Registry is as follows : ... Device/File integrity check succeeded;若报PROT-602,大概率是磁盘组名或兼容版本不对 - 再执行
crsctl replace votedisk +OCRDATA—— 注意这里用的是磁盘组名(+OCRDATA),不是设备路径 - 如果报
CRS-4602: Failed to add voting file,常见原因是:磁盘组里实际只有 1 个 failgroup(但 normal 冗余要求至少 3 个),或 ASM 实例没真正 mount 该磁盘组(用asmcmd lsdg确认状态为MOUNTED)
重启集群与验证资源状态
别急着欢呼,crsctl start crs 后可能有隐藏陷阱:OCR 里旧的资源依赖关系还在,但数据库实例可能因参数文件路径变更而起不来。
- 先停掉刚启的独占模式:
crsctl stop crs(仅在那个节点) - 所有节点执行:
crsctl start crs—— 此时 CSSD 会从新 voting disk 读取成员资格,CRSD 从新 OCR 加载配置 - 等 2 分钟后检查:
crsctl check cluster -all应全绿;crsctl stat res -t中ora.cssd、ora.crsd、ora.asm都得是ONLINE - 最容易被忽略的一点:
srvctl config database -d <db_name>查看数据库配置是否完整;若发现监听器、服务名丢失,说明 OCR 备份太老(比如是上周日的week.ocr),得手动补注册:srvctl add listener等
oracleasm 是否还认得那些盘、multipath 映射有没有漂移——这些底层状态不稳,上面所有恢复步骤都是空中楼阁。


















