ocr损坏不能修复,只能用有效备份在独占模式下还原并重建集群元数据;90%的“损坏”实为路径丢失或asm异常,仅ocrcheck报“integrity check failed”或i/o错误才属物理损坏。

不能“修复”,只能重建上下文——OCR和Voting Disk物理损坏后没有在线修复机制,必须用有效备份还原,并在独占模式下重置集群元数据。没备份或ASM起不来,就只剩重建集群一条路。
ocrcheck报“integrity check failed”才说明真损坏
别一看到ocrcheck报错就动手还原。90%的“OCR损坏”其实是路径丢失或ASM未挂载:
-
ocrcheck返回Device/File not configured,但asmcmd lsdg能看到 OCR 所在磁盘组(如+OCR)状态为MOUNTED→ 说明 OCR 文件路径在 OCR 配置里丢了,不是磁盘坏了 -
crsctl query css votedisk同时报错(如CRS-4602或空输出)→ 大概率是 ASM 层故障,先查$ORACLE_BASE/diag/asm/+asm/+ASM*/trace/alert_+ASM*.log里有没有corruption、I/O error或OCR关键字 - 只有
ocrcheck明确输出Device/File integrity check failed或直接报 I/O 错误(比如 read failed on device),才可能指向物理损坏
备份文件必须人工验证三件事,光看ocrconfig -showbackup没用
ocrconfig -showbackup 只告诉你文件存在,不保证能用。必须手动确认:
- 备份时间早于损坏发生时间:比如损坏发生在 2026-08-20 14:00,那
backup_20260720_120000.ocr可用,而day.ocr或week.ocr这类模糊命名的基本不可靠 - 属主和权限正确:
ls -l /u01/app/19.0.0/grid/cdata/rac-cluster/backup_20260720_120000.ocr必须返回-rw------- 1 grid oinstall,否则ocrconfig -restore会报PROT-1: Failed to open file - 用
ocrconfig -verify -f /path/to/backup.ocr手动校验:只有输出OCR backup file is valid才算真正可用;解压过、重命名过、后缀改过的 .ocr 文件都会静默失败
ocrconfig -restore 必须在 -excl -nocrs 模式下执行
这不是普通文件覆盖,而是重建集群配置上下文。多节点并发操作会导致元数据不一致:
- 所有节点先停:
crsctl stop crs -f(每个节点都执行) - 仅首节点以独占模式启动:
crsctl start crs -excl -nocrs→ 此时只拉起 CSS 和 ASM,sqlplus / as sysasm中查v$instance.status应为MOUNTED或OPEN - 执行还原:
ocrconfig -restore /path/to/valid_backup.ocr—— 注意:-local参数是给 OLR 用的,加了会静默失败 - 还原后立刻验证:
ocrcheck必须返回Status of Oracle Cluster Registry is as follows且无错误,否则后续crsctl replace votedisk会静默失败
crsctl replace votedisk +DG_NAME 失败的三个硬条件
这条命令依赖 OCR 已恢复、目标 diskgroup 已挂载、CSSD 可写入。失败时别反复重试,先查:
-
ocrcheck必须无任何错误,否则replace不会真正生效 -
asmcmd lsdg中目标 DG 的Voting_files列必须为Y—— 即创建时加了ATTRIBUTE 'compatible.asm'='11.2.0'等参数;若为N,需先alter diskgroup ... set attribute 'voting_files'='TRUE' - diskgroup 必须是
EXTERN或NORMAL冗余(不能是HIGH),且至少有 1 块可用磁盘;crsctl replace votedisk会自动写入 3~5 个 voting file,空间不足直接报错
最易被忽略的是:crsctl replace votedisk 成功后,必须立刻在所有节点运行 ocrcheck 和 crsctl query css votedisk 双重验证,因为 OCR 和 Voting Disk 的状态同步不是原子的——某个节点看到 ONLINE,另一个可能还卡在 OFFLINE,这种不一致会引发后续节点驱逐。











