在Red Hat 6.2上安装Oracle grid 11.2.0.1,执行root.sh脚本的时候出现一些问题,无法启动ohasd。
由于Redhat Enterprise Linux 6开始的启动初始化已由init改用upstart的方式,inittab只保留和支持运行级别的配置,其它配置放到了别的地方,oracle 11.2.0.1的grid在安装时执行root.sh脚本还是使用的init方式,会写启动配置到inittab,而11.2.0.1还是按照5的init模式配置。
实际上造成11.2.0.1在Red Hat6上安装错误是因为upstart/init不一致性,从RHEL6开始,/etc/inittab文件内容变了,只有默认的启动等级。而Oracle 11.2.0.1仍是按照以前的习惯把启动命令写在/etc/inittab文件中。
以下实验只适合用于测试与实验环境,生产环境强烈推荐使用Oracle操作系统认证的环境,比如Red Hat6上使用11.2.0.3版本。
执行root.sh脚本报错
# ./root.sh Running Oracle 11g root.sh script... The following environment variables are set as: ORACLE_OWNER= grid ORACLE_HOME= /u01/app/11.2.0/grid Enter the full pathname of the local bin directory: [/usr/local/bin]: Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed. 2013-04-03 14:53:56: Checking for super user privileges 2013-04-03 14:53:56: User has super user privileges 2013-04-03 14:53:56: Parsing the host name Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params /etc/profile: line 6: ulimit: max user processes: cannot modify limit: Operation not permitted LOCAL ADD MODE Creating OCR keys for user 'grid', privgrp 'oinstall'.. Operation successful. CRS-4664: Node oracle11gr2 successfully pinned. Adding daemon to inittab Failed to start oracle-ohasd, error: ohasd failed to start: Inappropriate ioctl for device at /u01/app/11.2.0/grid/crs/install/roothas.pl line 296.
或者可能如下错误:
Adding daemon to inittab 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 ohasd failed to start at/u01/app/11.2.0/grid/crs/install/rootcrs.pl line 443. 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 ohasd failed to start: Inappropriate ioctl for device at /u01/app/11.2.0/grid/crs/install/roothas.pl line 296.
回退root.sh脚本操作
# /u01/app/11.2.0/grid/crs/install/roothas.pl -deconfig -force -verbose 2013-04-03 14:44:34: Checking for super user privileges 2013-04-03 14:44:34: User has super user privileges 2013-04-03 14:44:34: Parsing the host name Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params CRS-4639: Could not contact Oracle High Availability Services CRS-4000: Command Stop failed, or completed with errors. CRS-4639: Could not contact Oracle High Availability Services CRS-4000: Command Delete failed, or completed with errors. CRS-4544: Unable to connect to OHAS CRS-4000: Command Stop failed, or completed with errors. /u01/app/11.2.0/grid/bin/acfsdriverstate: line 51: /lib/acfstoolsdriver.sh: No such file or directory /u01/app/11.2.0/grid/bin/acfsdriverstate: line 51: exec: /lib/acfstoolsdriver.sh: cannot execute: No such file or directory Successfully deconfigured Oracle Restart stack
步骤一:
方法1: 编辑$GRID_HOME/crs/install/s_crsconfig_lib.pm,查找if ($srv eq “ohasd”) { # Start OHASD)
my $UPSTART_OHASD_SERVICE = "oracle-ohasd"; my $INITCTL = "/sbin/initctl"; ($status, @output) = system_cmd_capture ("$INITCTL start $UPSTART_OHASD_SERVICE"); if (0 != $status) { error ("Failed to start $UPSTART_OHASD_SERVICE, error: $!"); return $FAILED; }
最后应该如下所示一样:
# Check to see if the service is OHASD if ($srv eq "ohasd") { # Create the autorun file my $AUTORUNFILE = catfile ($SCRBASE, $HOST, $HAS_USER, "ohasdrun"); open (AUTORUN, ">$AUTORUNFILE") or die "Can't open $AUTORUNFILE for write: $!"; print AUTORUN "stopn"; close (AUTORUN); s_set_ownergroup ($HAS_USER, $HAS_GROUP, $AUTORUNFILE) or die "Can't change ownership of $AUTORUNFILE: $!"; s_set_perms ("0644", $AUTORUNFILE) or die "Can't change permissions of $AUTORUNFILE: $!"; # Add OHASD to inittab print "Adding daemon to inittabn"; s_remove_itab ("cssd|evmd|crsd|ohasd") or return $FAILED; system ("$INIT q"); sleep (5); s_add_itab () or return $FAILED; system ("$INIT q"); # Start OHASD ####################插在此处地方############################ my $UPSTART_OHASD_SERVICE = "oracle-ohasd"; my $INITCTL = "/sbin/initctl"; ($status, @output)=system_cmd_capture ("$INITCTL start $UPSTART_OHASD_SERVICE"); if (0 != $status) { error ("Failed to start $UPSTART_OHASD_SERVICE, error: $!"); return $FAILED; } ##################################################################### $status = system ("$CRSCTL start has"); } elsif ($srv eq "crsexcl") { trace ("Starting Oracle clusterware exclusive"); # Create the autorun file
# Oracle OHASD startup start on runlevel [35] stop on runlevel [!35] respawn exec /etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null
如果使用方法1,必须在执行root.sh脚本之前按照上述方法创建conf,否则执行root.sh也会无法通过。
如果使用方法2:则在执行完毕root.sh脚本后也必须创建,否则重启系统后无法自动启动HAS
# ./root.sh Running Oracle 11g root.sh script... The following environment variables are set as: ORACLE_OWNER= grid ORACLE_HOME= /u01/app/11.2.0/grid Enter the full pathname of the local bin directory: [/usr/local/bin]: Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed. 2013-04-03 14:45:16: Checking for super user privileges 2013-04-03 14:45:16: User has super user privileges 2013-04-03 14:45:16: Parsing the host name Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params /etc/profile: line 6: ulimit: max user processes: cannot modify limit: Operation not permitted LOCAL ADD MODE Creating OCR keys for user 'grid', privgrp 'oinstall'.. Operation successful. CRS-4664: Node oracle11gr2 successfully pinned. Adding daemon to inittab CRS-4123: Oracle High Availability Services has been started. ohasd is starting ADVM/ACFS is not supported on oraclelinux-release-6Server-3.0.2.x86_64 oracle11gr2 2013/04/03 14:45:50 /u01/app/11.2.0/grid/cdata/oracle11gr2/backup_20130403_144550.olr Successfully configured Oracle Grid Infrastructure for a Standalone Server Updating inventory properties for clusterware Starting Oracle Universal Installer... Checking swap space: must be greater than 500 MB. Actual 4020 MB Passed The inventory pointer is located at /etc/oraInst.loc The inventory is located at /u01/app/oraInventory 'UpdateNodeList' was successful. [root@oracle11gR2 grid]#
root.sh脚本执行成功
按照方法一的实施方法,会net配置错误,在安装完成后还需要手动netca
所以比较推荐方法二
参考网址:https://forums.oracle.com/forums/thread.jspa?messageID=10885637
http://ibrisim.wordpress.com/2013/02/12/grid-infastrusture-11-2-0-1-linux-6-x-uyum-problemi-crs-4124-hatasi/
Thanks, it really help me, and you write on detail what suppose to do..