Zane Appel

Problem starting Cluster Services when installing Oracle RAC 11gr2 on Red Hat Enterprise Linux 7

Blog Post created by Zane Appel on Feb 4, 2015

Recently I installed Oracle RAC 11gr2 (11.2.0.4) on Red Hat Enterprise Linux 7 and ran into a problem running the root.sh script towards the end of the installation.

 

According to Oracle support, Red Hat Enterprise Linux 7 is supported by Oracle for 11gr2 (11.2.0.4). However, I found out the hard way that it will not successfully install without manual intervention. Here is what I did to solve the problem:

 

The Oracle installation went well until the point of running the root.sh script. At that point it was unable to start the Oracle Clusterware Stack:

 

# /app/11.2.0/grid/root.sh
Performing root user operation for Oracle 11g

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /app/11.2.0/grid/root.sh

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.

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 script.
Now product-specific root actions will be performed.
Using configuration parameter file: /app/11.2.0/grid/crs/install/crsconfig_params
OLR initialization - successful
  root wallet
  root wallet cert
  root cert export
  peer wallet
  profile reader wallet
  pa wallet
  peer wallet keys
  pa wallet keys
  peer cert request
  pa cert request
  peer cert
  pa cert
  peer root cert TP
  profile reader root cert TP
  pa root cert TP
  peer pa cert TP
  pa peer cert TP
  profile reader pa cert TP
  profile reader peer cert TP
  peer user cert
  pa user cert
2015/01/22 00:16:34 CLSRSC-330: Adding Clusterware entries to file '/etc/inittab'

2015/01/22 00:18:40 CLSRSC-214: Failed to start 'ohasd'

Failed to start the Clusterware. Last 20 lines of the alert log follow:
2014-02-28 00:13:19.635:
[client(8796)]CRS-2101:The OLR was formatted using version 4.
2014-02-28 00:15:11.647:
[client(9189)]CRS-2101:The OLR was formatted using version 4.

CRS-4133: Oracle High Availability Services has been stopped.
2015/01/22 00:31:53 CLSRSC-117: Failed to start Oracle Clusterware stack

Died at /app/11.2.0/grid/crs/install/crsutils.pm line 8813.
The command '/app/11.2.0/grid/perl/bin/perl -I/app/11.2.0/grid/perl/lib -I/app/11.2.0/grid/crs/install /app/11.2.0/grid/crs/install/rootcrs.pl ' execution failed

 

After some research I determined that there has been a major change in the way that Red Hat Enterprise Linux 7 handles initialization of services. You can find more details from Red Hat's site here. Essentially, RHEL 7 uses the systemd method of starting services, instead of inittab. The Oracle installation process had configured the inittab entries, but the inittab itself shows that it is no longer used:

 

# vi /etc/inittab

# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To set a default target, run:
#
# ln -sf /lib/systemd/system/<target name>.target /etc/systemd/system/default.target
#
htfa:35:respawn:/etc/init.d/init.tfa run > /dev/null 2>&1 < /dev/null

h1:35:respawn:/etc/init.d/init.ohasd run > /dev/null 2>&1 < /dev/null

 

To fix this I created a system script for the High Availability service like so:

 

#vi /etc/systemd/system/ohasd.service
[Unit]
Description=ohasd daemon

[Service]
ExecStart=/etc/init.d/init.ohasd run > /dev/null 2>&;1

 

Then I reloaded the daemon:

 

# systemctl daemon-reload

 

..and started the High Availability service:

 

# systemctl enable ohasd.service

# systemctl start ohasd.service

 

Once this was done I was able to successfully run the root.sh script and the grid infrastructure installation completed normally.

Outcomes