ocr损坏只能从有效备份还原,确认真损坏需先排除asm磁盘组异常或路径丢失:ocrcheck报“device/file not configured”但asmcmd lsdg可见ocr磁盘组已mounted,说明路径丢失;crsctl query css votedisk同时报错则指向asm层问题;仅当ocrcheck报“integrity check failed”或i/o错误才可能为物理损坏。

OCR损坏不能直接“修复”,只能从有效备份中还原;没备份或ASM磁盘组不可挂载时,ocrconfig -restore 会静默失败或写入乱数据。
怎么确认真是OCR损坏,而不是ASM或路径问题?
看到 ocrcheck 报错别急着跑 ocrconfig -restore——90% 的“OCR损坏”其实是外围故障:
-
ocrcheck返回Device/File not configured,但asmcmd lsdg能看到 OCR 所在磁盘组(如+OCR)状态为MOUNTED→ 说明 OCR 文件路径丢失,不是磁盘坏了 -
crsctl query css votedisk同时报错(如CRS-4602)→ 大概率是底层 ASM 磁盘组异常,得先查$ORACLE_BASE/diag/asm/+asm/+ASM*/trace/alert_+ASM*.log,搜OCR、corruption、I/O error -
ocrcheck显示Device/File integrity check failed或直接报 I/O 错误 → 才可能指向物理损坏
备份文件能不能用,光看 ocrconfig -showbackup 不行
这个命令只告诉你“备份文件存在”,不代表能成功还原。必须人工验证三件事:
- 备份时间早于损坏发生时间:比如损坏发生在 7 月 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 必须在独占模式下执行,否则大概率写乱
这不是普通文件覆盖,而是重建集群配置上下文。多节点并发访问会导致元数据不一致:
- 所有节点先停:
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 用的,加了会静默失败 - 还原后必须同步更新:
crsctl replace votedisk +NEW_DG(如果 Voting Disk 也受损),并检查 ASM SPFILE 是否需重建(若 SPFILE 存于 OCR 所在磁盘组)
OCR恢复后集群还是起不来,盯 SPFILE 和密码文件
很多恢复失败不是因为 OCR 没还原好,而是 SPFILE 或密码文件仍指向旧路径或已损坏。尤其当 SPFILE 存在 OCR 所在 ASM 磁盘组时,ocrconfig -restore 不会自动重建它——你得手动用 create spfile from pfile 或从备份恢复。密码文件也要确认是否被覆盖或权限错误。这些细节不处理,crsctl start crs 会在 CRS-2672 阶段卡住,日志里看不到明显报错,但资源永远起不来。











