安装Grid执行root.sh出现ohasd failed解决方案

**这个很大程度上是grid 11.2.0.1 的一个BUG,另外发现在CPU为AMD时会触发这个bug,而intel则不会。

测试环境:OEL5.6 x86 & redhat 6.5 x64
执行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. 

或者可能如下错误:
Addingdaemontoinittab
CRS-4124:OracleHighAvailabilityServicesstartupfailed.
CRS-4000:CommandStartfailed,orcompletedwitherrors.
ohasdfailedtostart:Inappropriateioctlfordevice
ohasdfailedtostartat/u01/app/11.2.0/grid/crs/install/rootcrs.plline443.
 CRS-4124:OracleHighAvailabilityServicesstartupfailed.
CRS-4000:CommandStartfailed,orcompletedwitherrors.
ohasdfailedtostart:Inappropriateioctlfordevice
ohasdfailedtostart:Inappropriateioctlfordeviceat/u01/app/11.2.0/grid/crs/install/roothas.plline296.

解决方案

第一步:
回退root.sh脚本操作
#/u01/app/11.2.0/grid/crs/install/roothas.pl -deconfig -force -verbose
2013-04-0314:44:34:Checkingforsuperuserprivileges
2013-04-0314:44:34:Userhassuperuserprivileges
2013-04-0314:44:34:Parsingthehostname
Usingconfigurationparameterfile:/u01/app/11.2.0/grid/crs/install/crsconfig_params
CRS-4639:CouldnotcontactOracleHighAvailabilityServices
CRS-4000:CommandStopfailed,orcompletedwitherrors.
CRS-4639:CouldnotcontactOracleHighAvailabilityServices
CRS-4000:CommandDeletefailed,orcompletedwitherrors.
CRS-4544:UnabletoconnecttoOHAS
CRS-4000:CommandStopfailed,orcompletedwitherrors.
/u01/app/11.2.0/grid/bin/acfsdriverstate:line51:/lib/acfstoolsdriver.sh:Nosuchfileordirectory
/u01/app/11.2.0/grid/bin/acfsdriverstate:line51:exec:/lib/acfstoolsdriver.sh:cannotexecute:Nosuchfileordirectory
SuccessfullydeconfiguredOracleRestartstack


第二步:

方法1: 编辑$GRID_HOME/crs/install/s_crsconfig_lib.pm,查找if ($srv eq “ohasd”) { # Start 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($srveq"ohasd"){
  # Create the autorun file
        my$AUTORUNFILE=catfile($SCRBASE,$HOST,$HAS_USER,"ohasdrun");
        open(AUTORUN,">$AUTORUNFILE")
            ordie"Can't open $AUTORUNFILE for write: $!";
        printAUTORUN"stopn";
        close(AUTORUN);
        s_set_ownergroup($HAS_USER,$HAS_GROUP,$AUTORUNFILE)
            ordie"Can't change ownership of $AUTORUNFILE: $!";
        s_set_perms("0644",$AUTORUNFILE)
            ordie"Can't change permissions of $AUTORUNFILE: $!";  
        # Add OHASD to inittab
        print"Adding daemon to inittabn";
        s_remove_itab("cssd|evmd|crsd|ohasd")orreturn$FAILED;
        system("$INIT q");
        sleep(5);
        s_add_itab()orreturn$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($srveq"crsexcl"){
        trace("Starting Oracle clusterware exclusive");
        # Create the autorun file



(推荐)方法2:在执行root.sh脚本时出现Adding daemon to inittab的时候,在另一个窗口使用root立即执行以下命令: 
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/nullbs=1024 count=1(等待root.sh成功执行完毕后可以ctrl+c取消这里的命令)
之后创建以下文件输入以下命令
#vi /etc/init/oracle-ohasd.conf
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

验证:
# /u01/app/11.2.0/grid/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

所以比较推荐方法二

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值