Oracle RAC无法启动的故障处理系列-恢复OLR

【问题现象】

版本:19.12 RAC
OS: RHEL 7.9
#crsctl start crs 提示
PROC-26: Error while accessing the physical storage Operating System error [No such file or directory]

【处理方法】

我在19c下恢复的,11g也适用。

1 找出OLR的文件位置

cat /etc/oracle/olr.loc找出olr的文件位置olrconfig_loc=/u01/app/19c/grid/cdata/weerp1-19.olr
crs_home=/u01/app/19c/grid
官方说明:OLR will be backed up to $GRID_HOME/cdata/$HOST/backup_$TIME_STAMP.olr

2 检查是否有备份文件

ll /u01/app/19c/grid/cdata/weerp1-19.olr
例如有下面两个文件,但是没有weerp1-19.olr
backup-2023-07-01-12-00.olr
backup-2023-07-02-12-00.olr -最新日期的

3 创建weerp1-19.olr

su - grid
touch /u01/app/19c/grid/cdata/weerp1-19.olr

4 恢复olr

- 恢复最新的那个olr文件
#ocrconfig -local -restore /u01/app/19c/grid/cdata/weerp1-19.olr

恢复后启动CRS就正常了。

【扩展知识】

OCR是用于保存CRSD所管理的资源的注册表,但是在CRSD启动之前集群还有很多初始化资源(例如ASM实例)需要启动,所以只有OCR是不够的。Oracle在11gR2版本中推出了另一种注册表OLR(Oracle Local Registry,Oracle本地注册表)。

OLR类似于Oracle集群注册表,但是OLR只存储与本地节点有关的信息。OLR不与集群中的其它节点共享。(OCR存储在共享路径,OLR存储在本地路径)

OLR存储了集群启动初期ohasd(Oracle High Availability Service)使用的重要环境,如Oracle集群件的版本、配置等。如果OLR丢失或损坏,那么将会导致ohasd进程启动失败。所以OLR的主要作用就是为ohasd守护进程提供集群的配置信息和初始化资源的定义信息。

Oracle在一个名为/etc/oracle/olr.loc(Linux或AIX)或者/var/opt/oracle/olr.loc(Solaris系统)的文本文件中存储了OLR配置文件的位置。

当集群启动时,ohasd会从该文件中读取OLR的位置。对于集群环境(GI Cluster)而言,OLR的文件名一般为$GRID_HOME/cdata/(也有可能是<hostname-其他字符.olr>,而对于单节点(GI Standalone,Oracle Restart)而言,OLR的文件名一般为$GRID_HOME/cdata/localhost/

posted @ 2023-07-14 10:50  寻梦99  阅读(646)  评论(0)    收藏  举报