olr文件损坏会导致节点级crs无法启动,需单节点本地修复:先确认损坏(crsctl check crs报olr initialization failed)、定位路径(如/u01/app/11.2.0/grid/cdata/hostname.olr)、检查权限(root:oinstall,600);有备份时强制停crs、touch占位、修正权限后执行ocrconfig -local -restore;无备份则高风险重建,最后验证crsctl check crs及srvctl资源注册。

OLR 文件损坏会导致节点级 CRS 无法启动,报错类似 OLR initialization failed, rc=26 或 Could not init OLR。它和 OCR 不同,不依赖共享存储,只存在于本地磁盘,因此必须在**单个节点本地修复**,不能跨节点操作。
确认 OLR 损坏并定位当前路径
先验证是否真为 OLR 问题:执行 crsctl check crs,若输出包含 OLR initialization failed 或日志中反复出现 utopen:6m':failed in stat OCR file/disk .../rac1.olr,基本可锁定。
OLR 默认路径由 olsnodes -n 输出的本机名决定,常见位置是:/u01/app/11.2.0/grid/cdata/<hostname>.olr</hostname>(注意不是 OCR 的 +ASM 路径)。
检查该文件是否存在、权限是否正确(属主 root:oinstall,权限 600),用 strings /path/to/rac1.olr | head -5 看是否能读出有效内容——若乱码或空输出,说明已损坏。
有备份时用 ocrconfig -local -restore 恢复
OLR 备份默认存于 /olr/ 目录下,文件名形如 backup_<yyyymmdd_hhmiss>.olr</yyyymmdd_hhmiss>。这个目录必须存在且可读(root 用户权限)。
操作前务必先强制停止 CRS:crsctl stop crs -f;再创建一个空的 .olr 文件占位:touch /u01/app/11.2.0/grid/cdata/rac1.olr,并修正权限:chown root:oinstall /u01/app/11.2.0/grid/cdata/rac1.olr && chmod 600 /u01/app/11.2.0/grid/cdata/rac1.olr。
然后执行恢复命令:ocrconfig -local -restore /olr/backup_20160112_090125.olr。注意:该命令必须以 root 用户运行,且不能加 -connect 参数——它只作用于本地。
- 若提示
PROTL-1010: Invalid backup file,说明备份文件损坏或版本不匹配(比如 11.2 备份用于 12.1 节点) - 若提示
ORA-15032: not all alterations performed,大概率是目标路径权限不对或磁盘满
无备份时只能重建 OLR(风险高,慎用)
没有有效备份时,OLR 无法“修复”,只能重建。这相当于重装 GI 的本地元数据,要求节点上所有 CRS 资源(包括 ASM 实例)尚未注册进 OCR,否则会冲突。
步骤是:crsctl stop crs -f → 手动删除旧 .olr 文件 → 运行 $GI_HOME/crs/install/rootcrs.pl -deconfig -force -verbose 清理残留 → 再运行 $GI_HOME/crs/install/rootcrs.pl -prepatch(或 -postpatch,视 GI 版本而定)触发重建。
关键点:
- 重建后需手动重新添加本节点到集群:
crsctl add node -n rac1(在其他健康节点执行) - 重建不恢复任何本地配置(如网络 VIP、监听器绑定),这些要靠
srvctl config输出比对后手工补全 - 绝对不要在 OCR 仍可用时对健康节点执行此流程,否则可能引发 OCR 同步异常
验证与后续动作
恢复或重建后,用 crsctl check crs 确认 OLR 和 CRS 都显示 online;再查 crsctl query crs activeversion 确保版本未回退。
真正容易被忽略的是:即使 OLR 恢复成功,如果该节点之前注册过数据库实例(srvctl add database),但 OCR 中对应资源记录已丢失,srvctl config database 可能仍为空——这时必须用 srvctl add database -d orcl -o $ORACLE_HOME 等命令重新注册,否则 DBCA 或后续维护会失败。











