环境:RHEL6.3,Oracle 11.2.0.1
按部就班地安装完grid软件后,执行root.sh脚本后日志显示:
CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
ohasd failed to start: Inappropriate ioctl for device
网上的解决办法是先回退root.sh脚本的操作:
节点1运行:
[root@node1~]# /u01/app/grid/home/crs/install/roothas.pl -delete -force -verbose
如果节点2上也执行过root.sh脚本,待节点1上面命运运行完毕后,节点2开始运行:
[root@node2~]# /u01/app/grid/home/crs/install/rootcrs.pl -verbose -deconfig -force -lastnode
读者要将命令中的路径换成自己的grid安装目录
然后开两个窗口,一个执行root.sh,另一个紧接着刷屏[按向上箭头键再回车]执行如下命令:
dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
当“/var/tmp/.oracle/npohasd”还没有生成的时候,显示结果如下:
dd: opening `/var/tmp/.oracle/npohasd': No such file or directory
当“/var/tmp/.oracle/npohasd”生成了,命令会进入执行状态,由于刷屏的惯性,就会出现^[[A符号,这时可以按Ctrl+C中断dd命令了。最后可以看到root.sh脚本执行成功,ohasd启动成功。
但是,问题并没有根本解决。重启系统后,ohasd服务依然没有启动,更不用说启动CRS了。这是因为从RHEL6开始,/etc/inittab文件内容变了,只有默认的启动等级。而Oracle
11.2.0.1仍是按照以前的习惯把启动命令写在/etc/inittab文件中,造成ohasd服务不能自动启动。解决的办法如下:
注释掉/etc/inittab文件中的#h1:35:respawn:/etc/init.d/init.ohasd
run >/dev/null 2>&1
然后 vi
/etc/init/init-oracle.conf,添加如下内容:
#start
oracle
start on runlevel [0123456]
stop on runlevel [016]
respawn
exec /etc/init.d/init.ohasd run >/dev/null 2>&1
保存退出,重启系统即可。
更多详细信息,可百度搜索
RHEL6 Upstart