这种错误一般可能有两种情况导致,具体如下。
情况1:crs未启动
top确认对应的bin是否都存在,如下图
若不存在,则root用户执行下面命令启动
crsctl start crs
执行时需root用户下另开一个终端执行/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1,否则会启动失败。
启动成功,输出Oracle High Availability Services has been started.
情况2:环境变量没设置
grid用户下执行 export ORACLE_SID=+ASM1 或者+ASM2
情况3:其他异常如CRS-0184: Cannot communicate with the CRS daemon.
方法为重新执行一遍grid下的root.sh
/u01/app/11.2.0.4/grid/bin/crsctl stop crs -f
/u01/app/11.2.0.4/grid/crs/install/rootcrs.pl -verbose -deconfig -force
/u01/app/11.2.0.4/grid/root.sh
校验:
切换到grid用户,srvctl status asm -n $RAC_NODE_NAME 查看节点asm状态。
再执行crs_stat -t -v查看集群状态,正常情况下,各个节点应用均匀分布,如下图
附注:
整个rac环境配置重置流程(各个节点的crsconfig_params保持一致,执行perl若报错‘Can't locate Env.pm in @INC (@INC contains’,则需要切换到grid用户目录下的perl解释器执行脚本)
节点1和节点2都在root用户下执行:
roothas.pl -deconfig -force -verbose
rootcrs.pl -deconfig -force -verbose
root.sh
当长时间卡在"CRS-2101:The OLR was formatted using version 3."这句话时执行/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1 (另一个终端执行)
最后grid用户下执行crs_stat -t -v查看各个节点是否都online。