ocr损坏必须用ocrconfig配合有效备份还原,需同步停所有节点、校验root权限600、三重验证;ocrconfig -showbackup报prot-602说明ocr本身不可读,应先检查asm磁盘组状态或裸设备可访问性,再执行还原。

OCR损坏不能靠重启或重装解决,必须用ocrconfig命令配合有效备份还原,且所有节点必须同步停机、校验权限、三重验证——漏掉任一环节,集群就起不来。
ocrconfig -showbackup 报 PROT-602 怎么办?
这不是备份丢了,是OCR本身已不可读。别急着还原,先确认底层是否还活着:
- 用
crsctl query css votedisk看OCR设备路径(比如+OCR或/dev/oracle/ocr01) - 如果OCR在ASM里,先
asmcmd lsdg确认+OCR磁盘组状态是否MOUNTED;若为DISMOUNTED或UNKNOWN,说明ASM没起来,得先修ASM - 如果OCR在裸设备上,
ls -l /dev/oracle/ocr01确认设备文件存在且可读;dd if=/dev/oracle/ocr01 of=/dev/null bs=4k count=1 iflag=skip_bytes试读,报Input/output error就是物理损坏 -
ocrcheck返回PROT-602时,grep "OCR" /u01/app/19.0.0/grid/log/*/crsd/crsd.log | tail -20常能看到Failed to open OCR device这类直接线索
执行 ocrconfig -restore 前必须满足的三个硬条件
ocrconfig -restore不是“选个备份点就点确定”,它对输入文件和环境极其苛刻:
- 备份文件必须是原始
.ocr格式,不能是.tar包、不能解压过、不能改后缀名(常见翻车:把backup_20240501.ocrb当源文件用) - 文件属主必须是
root,权限必须是600:chmod 600 /u01/app/19.0.0/grid/cdata/mycluster/backup_20240501.ocr - 所有节点必须先停集群:
crsctl stop crs -f(单节点执行无效,必须每台都跑);OCR设备路径要可写(比如ASM磁盘组未被其他进程锁定)
还原后为什么 ocrcheck 通过但集群还是起不来?
ocrcheck只验证OCR文件结构完整性,不代表集群能协调工作。必须补上两步验证:
- 导出内容检查:
ocrdump -stdout | head -20确认输出里有CLUSTER_NAME、NODES等关键键值,空输出或报OCR-1003说明还原失败 - CSS层验证:
crsctl query css votedisk必须返回ONLINE状态,且各节点输出一致;若某节点显示OFFLINE,说明该节点OCR没真正写入成功 - 资源注册检查:
crsctl stat res -t启动后应列出ora.cluster_vip、ora.asm等核心资源,若大量INTERMEDIATE或OFFLINE,大概率是OCR里资源依赖关系损坏,需用srvctl add重新注册
最易被忽略的是:OCR还原后,ora.asm资源可能因磁盘组名称变更或路径不匹配而无法自动加载,必须人工确认asm_diskstring参数与实际设备路径一致,否则整个RAC连ASM都起不来——这时候ocrdump里看到的磁盘组名,和asmcmd lsdsk列出的设备名,一个字母都不能差。











