(1)情况说明
linux7 单机asm 11gR2, 服务器重启之后,发现asm服务没有自动启动
手动start has 也报错了,靠贝了真是
[root@oomcserver ~]# crsctl start has
CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
(2)查看日志
查看grid启动的日志,进入grid用户,查看文件
$ORACLE_HOME/log/主机名/alert主机名.log
因为启动依赖的是init.d,而redhat 7及以上版本默认为systemd,两者的差异较大。导致redhat 7及以上版本启动crs的ohasd服务时会卡住一段时间且最后无法启动成功
(3)解决方法(3选1即可)
1.打补丁
别想了,我自己的电脑搭建的环境,也没买oracle服务,没有补丁,得了吧
2.手动执行命令
手动的方法:在执行crsctl start has后马上再新开一个终端执行
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
但这种方法只是临时的,重启后集群服务还是无法自动起来。
永久的解决方法:
vi /etc/init.d/ohasd
修改这个启动文件命令, 在文件中找到如这部分,在里面添加红字部分:
if [ -r $AUTOSTARTFILE ]
then
case `$CAT $AUTOSTARTFILE` in
enable*)
$LOGERR "Oracle HA daemon is enabled for autostart."
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1 &
my_crsctl start has -nowait
sleep 600
ps -ef | grep dd| grep hasd|awk '{print $2}'|xargs kill -9
;;
disable*)
$LOGERR "Oracle HA daemon is disabled for autostart."
;;
*)
$LOGERR "Oracle HA daemon is disabled by damaged install."
$LOGERR "Unexpected settings found in $AUTOSTARTFILE."
;;
esac
3.ohas服务 enable
之前我们自己配置的ohas.service服务(这里有2个ohas的服务,ohasd不是我们自己写的哦),这个服务也是启动ohasd的,把他设置成开机自启动就行
systemctl enable ohas.service
这个文件在安装grid报错[client(5376)]CRS-2101:The OLR was formatted using version 3.时候配置的,当时没有配置自启动服务,所以再次启动就出现Oracle High Availability Services startup failed.
reboot重启,发现asm的服务都启动了,ok