Saturday, June 2, 2012

Installing 11gR2 Standalone Server with ASM and Role Separation on RHEL 6

There's an earlier post with the steps specific to installing standalone 11gR2 with role separation and using ASM to data files. This post is to highlight any steps specific to installing 11gR2 (11.2.0.3) on RHEL 6. Instead of the vncserver RHEL 6 has a new remote desktop service. If vncserver is preferred use yum service to install tigervnc-server from the public yum.
The RHEL 6 kernel version is
uname -r
2.6.32-220.el6.x86_64
1. Create the users and groups for role seperate installation
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
groupadd asmdba
groupadd asmoper

useradd -g oinstall -G dba,oper,asmdba oracle
useradd -g oinstall -G asmadmin,asmdba,asmoper,dba grid
grid user should be part of dba group as per metalink note 1084186.1 (see earlier post's step 15)

2. To get asmlib libraries with RHEL 6, it would require an unbreakable linux account (more on 1089399.1). In this installation block devices will be used for ASM. Use udev rules to add necessary permissions to the block devices.
# ASM DATA
KERNEL=="sde[1]", OWNER="grid", GROUP="asmadmin", MODE="660"

# ASM FLASH
KERNEL=="sdf[1]", OWNER="grid", GROUP="asmadmin", MODE="660"
Group has been set to asmadmin, setting it to asmdba (as in the case with earlier post using asmlib) could result in following warning (which was observed with cluster pre-req check not standalone pre-req check).

3. Set CV_ASSUME_DISTID=OEL6 in the cvu_config file as explained in installing 11gR2 on RHEL 6 Other pre-req steps are omitted here but it's expected these are carried out before continuing with rest of the steps.

4. Run cluster verify tool for high availability service option
./runcluvfy.sh  stage -pre hacfg

Performing pre-checks for Oracle Restart configuration
Total memory check passed
Available memory check passed
Swap space check passed
Free disk space check passed for "rhel6m2:/tmp"
Check for multiple users with UID value 502 passed
User existence check passed for "grid"
Group existence check passed for "oinstall"
Group existence check passed for "dba"
Membership check for user "grid" in group "oinstall" [as Primary] passed
Membership check for user "grid" in group "dba" passed
Run level check passed
Hard limits check passed for "maximum open file descriptors"
Soft limits check passed for "maximum open file descriptors"
Hard limits check passed for "maximum user processes"
Soft limits check passed for "maximum user processes"
System architecture check passed
Kernel version check passed
Kernel parameter check passed for "semmsl"
Kernel parameter check passed for "semmns"
Kernel parameter check passed for "semopm"
Kernel parameter check passed for "semmni"
Kernel parameter check passed for "shmmax"
Kernel parameter check passed for "shmmni"
Kernel parameter check passed for "shmall"
Kernel parameter check passed for "file-max"
Kernel parameter check passed for "ip_local_port_range"
Kernel parameter check passed for "rmem_default"
Kernel parameter check passed for "rmem_max"
Kernel parameter check passed for "wmem_default"
Kernel parameter check passed for "wmem_max"
Kernel parameter check passed for "aio-max-nr"
Package existence check passed for "make"
Package existence check passed for "binutils"
Package existence check passed for "gcc(x86_64)"
Package existence check passed for "libaio(x86_64)"
Package existence check passed for "glibc(x86_64)"
Package existence check passed for "compat-libstdc++-33(x86_64)"
Package existence check passed for "elfutils-libelf(x86_64)"
Package existence check passed for "elfutils-libelf-devel"
Package existence check passed for "glibc-common"
Package existence check passed for "glibc-devel(x86_64)"
Package existence check passed for "glibc-headers"
Package existence check passed for "gcc-c++(x86_64)"
Package existence check passed for "libaio-devel(x86_64)"
Package existence check passed for "libgcc(x86_64)"
Package existence check passed for "libstdc++(x86_64)"
Package existence check passed for "libstdc++-devel(x86_64)"
Package existence check passed for "sysstat"
Package existence check failed for "pdksh"
Check failed on nodes:
        rhel6m2
Package existence check passed for "expat(x86_64)"
Check for multiple users with UID value 0 passed
Current group ID check passed

Starting check for consistency of primary group of root user
Check for consistency of root user's primary group passed
Pre-check for Oracle Restart configuration was unsuccessful.
Even though CV_ASSUME_DISTID=OEL6 was set before running the above command the pdksh check fails (more on 1454982.1). But this happens only on cluvfy, the pre-req check done through OUI ignores this pdksh check and there won't be any failed pre-reqs.

5. Carry out the installation of GI for standalone server.

Using block devices for ASM

Separate OS groups for ASM administration

GI for standalone home is created under ORACLE_BASE (if not warning is given see step 7 on earlier post)

oraInventory directory must have oinstall as group.

Summary


Run root scripts when prompted
# /opt/app/oracle/product/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=  /opt/app/oracle/product/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 ...

   Creating /etc/oratab file...
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: /opt/app/oracle/product/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
LOCAL ADD MODE
Creating OCR keys for user 'grid', privgrp 'oinstall'..
Operation successful.
LOCAL ONLY MODE
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4664: Node rhel6m2 successfully pinned.
Adding Clusterware entries to upstart

rhel6m2     2012/05/30 12:24:37     /opt/app/oracle/product/11.2.0/grid/cdata/rhel6m2/backup_20120530_122437.olr
Successfully configured Oracle Grid Infrastructure for a Standalone Server
Once the root.sh script finishes the other configuration tools (netca,asmca) will run, and this will conclude the installation of GI for standalone.

6. Installation of database software and creation of database is no different to that of RHEL 5 installation with one notable difference is that prior to executing runInstaller set CV_ASSUME_DISTID=OEL6 in the database software's cvu_config file as well to ignore the pdksh check.

7. Follow MOS notes 372959.1, 1349844.1 and make changes to listener.ora to disable RAC related listener events not applicable for single instance deployments

Related Posts
Installing 11gR2 (11.2.0.3) GI with Role Separation on RHEL 6
Installing 11gR2 (11.2.0.3) GI with Role Separation on OEL 6
Installing 11.2.0.3 on RHEL 6
ASM for Standalone Server in 11gR2 with Role Separation (on RHEL 5)