☰
怎样处理Oracle 12c RAC中OCR磁盘损坏故障_通过ocrconfig命令从物理备份恢复
2026/10/1 2:53:29 网站建设 项目流程
OCR故障恢复核心是ocrconfig -restore命令,需先确认损坏类型、验证备份有效性、在独占模式下执行还原,并同步更新votedisk与ASM SPFILE。

ocrconfig是 OCR 故障恢复的核心命令,但它本身不直接“修复损坏磁盘”,而是从已有备份还原 OCR 内容到可用位置。OCR 磁盘损坏后能否恢复,取决于两点:备份是否存在、ASM 磁盘组是否还能挂载(或能否重建)。以下是实操中必须盯住的关键环节。

确认 OCR 当前状态和损坏程度

先别急着跑ocrconfig -restore,得先判断是“逻辑损坏”还是“物理不可访问”。常见误判是看到ocrcheck报错就认定 ocr 损坏,其实可能是 asm 磁盘组没起来、权限不对、或 ocr 文件路径被误删。

  • ocrcheck返回Device/File integrity check failed或直接报 I/O 错误,才指向物理层问题
  • 如果ocrcheck显示Device/File not configured但 ASM 磁盘组仍在线(asmcmd lsdg可见),说明 OCR 路径丢失,不是磁盘损坏
  • 检查 ASM 日志:tail -20 $ORACLE_BASE/diag/asm/+asm/+ASM*/trace/alert_+ASM*.log,搜索OCR、corruption、I/O error
  • 运行crsctl query css votedisk,若同时报错,大概率是底层 ASM 磁盘组异常,需优先处理磁盘组

用ocrconfig -showbackup验证备份有效性

OCR 自动备份默认每 4 小时一次,存于$GRID_HOME/cdata/<cluster_name>/下,但备份文件可能已过期、权限错误或被清理。不能只看列表存在就认为能用。

  • 执行ocrconfig -showbackup,确认最近一份备份时间早于 OCR 损坏发生时间(比如损坏发生在 5 月 5 日 14:00,那 5 月 5 日 12:00 的备份才可用)
  • 检查备份文件权限:ls -l /u01/app/12.1.0/grid/cdata/rac-cluster/backup_20260505_120000.ocr,必须属主为grid,且可读
  • 手动校验备份完整性(高风险操作前必做):ocrconfig -verify -f /path/to/backup.ocr,返回OCR backup file is valid才算真正可用
  • 注意:-local参数生成的是 OLR(Oracle Local Registry)备份,不能用于集群级 OCR 恢复;必须用无-local的全局备份

在独占模式下执行ocrconfig -restore

OCR 恢复必须在所有节点停止 Clusterware 后,由单节点以独占(-excl)且无 CRS(-nocrs)方式启动,否则命令会静默失败或写入乱序数据。

  • 停集群:crsctl stop crs -f(每个节点都执行)
  • 首节点启动独占模式:crsctl start crs -excl -nocrs—— 此时仅启动 CSS 和 ASM,不启动任何资源
  • 确认 ASM 实例已 up:sqlplus / as sysasm→select status from v$instance;应为MOUNTED或OPEN
  • 执行恢复:ocrconfig -restore /u01/app/12.1.0/grid/cdata/rac-cluster/backup_20260505_120000.ocr
  • 验证:ocrcheck必须显示Status of Oracle Cluster Registry is as follows且Device/File integrity check succeeded

OCR 恢复后必须同步更新 votedisk 和 ASM SPFILE

OCR 不是孤立组件。它记录了 votedisk 位置和 ASM SPFILE 路径。如果只恢复 OCR,而 votedisk 所在磁盘组已损坏或 SPFILE 路径失效,集群仍无法启动。

  • 恢复 votedisk 前先确认其当前位置:crsctl query css votedisk,若输出为空或报错,需用crsctl replace votedisk +DG_SYS指向一个健康的 ASM 磁盘组
  • 检查 ASM SPFILE 是否还在原位置:sqlplus / as sysasm→show parameter spfile;若路径无效,需用create pfile='/tmp/init.ora' from spfile;生成 PFILE,再重建 SPFILE 到新磁盘组
  • 最后重启集群:crsctl stop crs→crsctl start crs(全节点顺序执行)
  • 切记:恢复完成后立即手工触发一次备份:ocrconfig -manualbackup,避免下次故障时又依赖旧备份

OCR 恢复最易被忽略的点是“ASM 磁盘组状态”和“votedisk/SPFILE 路径一致性”。很多 DBA 成功运行了ocrconfig -restore,却卡在crsctl start crs卡住或节点反复驱逐——问题往往不在 OCR 本身,而在它所依赖的底层存储元数据没有同步更新。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询