OCR磁盘损坏导致集群无法启动,必须用ocrconfig -restore配合有效备份恢复,不可用export/import;需全节点停CRS、验证备份权限与GI版本一致性,并通过ocrcheck和cluvfy验证。
OCR磁盘损坏直接导致集群无法启动
ocr不是普通配置文件,它是集群的“大脑”——所有节点启动时必须读取ocr才能加载资源定义、识别投票盘位置、同步节点状态。一旦ocr磁盘组(比如+ocr)因磁盘故障、asm diskgroup offline 或裸设备不可读而失效,crsctl start crs 就会卡在初始化阶段,报错如 prot-602: failed to retrieve backup information 或 proc-26: error while accessing the physical storage。这不是服务没起来,是整个集群“失忆”了:节点间无法协商身份,crsd 进程起不来,crsctl check cluster 显示失败,业务数据库自然全部离线。
ocrconfig -export 不能用于恢复损坏的OCR
ocrconfig -export 生成的是纯文本 XML 快照,只含键值对(比如 ora.db1.db 资源的 PLACEMENT 和 ACL),不含底层块结构、校验信息、权限位或时间戳。它本质是配置审计工具,不是物理备份。
- OCR 物理损坏(如 ASM 块坏、磁盘头被
dd清空)时,-export命令本身就会失败或返回空/截断内容 - 即使导出成功,
ocrconfig -import只能在 OCR 完全为空的新环境用;若 OCR 设备已挂载但内容错乱,-import会静默跳过或报ORA-15032 - XML 文件被截断、编码异常或含非法字符时,
-import无明确报错,但 OCR 实际未更新
真正能用的只有 ocrconfig -restore 物理恢复
恢复 OCR 的唯一可靠路径是用 ocrconfig -restore 加自动/手动产生的原始 .ocr 文件(不是 .xml,不是 .tar,不能重命名)。
- 执行前必须停掉所有节点的集群:
crsctl stop crs -f(仅停crsd不够,必须全栈停止) - 备份文件权限必须为
600,属主root:oinstall;否则报PROT-1: Failed to open file - 备份必须来自同版本 GI:
crsctl query crs activeversion输出的版本号要和strings backup00.ocr | head -n 5中的版本字符串严格一致 - 恢复后不验证就启集群?危险。先用
ocrcheck确认状态为healthy,再用cluvfy comp ocr -n all扫描一致性
自动备份路径和可用性必须提前验证
别等宕机才查备份是否存在。19c 默认每 4 小时由 ohasd 触发一次自动备份,但前提是集群运行正常、OCR 设备可读、备份路径(通常是 $GRID_HOME/cdata/<cluster_name>/</cluster_name>)可写。
- 日常检查命令:
ocrconfig -showbackup—— 应至少列出 3 个不同时间戳的backup*.ocr和day.ocr/week.ocr - 确认文件真实存在:
ls -l /u01/app/19.0.0/grid/cdata/mycluster/backup*.ocr*,缺.ocrb元数据文件则备份无效 - 备份若落在 ASM 上(如
+REDO),需确保该磁盘组online且grid用户有读写权限 - 有人把
backup_20260510_020000.ocr解压后当源文件用——那是 tar 包解出来的东西,ocrconfig -restore直接忽略
-restore 就是白跑一趟。


















