Install Oracle 19c Grid Infrastructure on AIX Step by Step Tutorial

In this article, we are going to briefly describe the step to installing oracle 19c grid infrastructure on the AIX  server. 

Step 1: Checking Server Hardware and Memory Configuration

1. To determine physical RAM size on the server:

# /usr/sbin/lsattr -E -l sys0 -a realmem

2. To determine the available RAM and swap space

# /usr/sbin/lsps -s

3. To determine the size of the configured swap space:

# /usr/sbin/lsps -a

4. Determine the amount of space available in the /tmp directory

# df -m /tmp

If the free space available in the /tmp directory is less than what is required, then complete one of the following steps:

i. Delete unnecessary files from the /tmp directory to meet the disk space requirement.

ii. When you set the Oracle user's environment, also set the TMP and TMPDIR environment variables to the directory you want to use instead of /tmp.

iii. Extend the file system that contains the /tmp directory.

5. Determine the amount of free disk space on the system

# df -g

# df -m

6. Determine if the system architecture can run the software:

# /usr/bin/getconf HARDWARE_BITMODE

Note: The expected output of this command is 64. If you do not see the expected output, you cannot install the software on this system.

To determine if the system is started in 64-bit mode:

# /usr/sbin/bootinfo -K

Note: The result of this command must be 64, indicating that the 64-bit kernel is enabled.

7. To determine the run level:

# /usr/bin/who -r

Step 2: Checking the Software Requirements

1. To determine the distribution and version of IBM AIX installed:

# oslevel -s

If the operating system version is lower than what is required, then upgrade your

operating system accordingly to the currently supported or later version and level.

2. To determine if the required filesets are installed and committed enter a command similar

to the following:

# lslpp -l bos.adt.base bos.adt.lib bos.adt.libm bos.perf.perfstat \

bos.perf.libperfstat bos.perf.proctools

# AIX 7.2 Operating System Filesets. The following operating system filesets are required:

• bos.adt.base

• bos.adt.lib

• bos.adt.libm

• bos.perf.libperfstat

• bos.perf.perfstat

• bos.perf.proctools

• xlC.aix61.rte: or later

• xlC.rte: or later

• xlfrte.aix61- or later

The following filesets are required for Oracle Real Application Clusters

(Oracle RAC) Installations only:

• rsct.basic.rte

• rsct.compat.clients.rte

3. To determine the supported kernel mode:


• The expected output of this command is 64. I

4. To determine if an APAR is installed:

# /usr/sbin/instfix -i -k "IV16716 IV20880 IV21128 IV28319"

Step 3: Enabling I/O Completion Ports

On IBM AIX on POWER Systems (64-Bit), enable I/O completion ports (IOCP) to ensure successful database and grid infrastructure installation.

To check if the IOCP module is enabled, run the lsdev command:

# lsdev | grep iocp

The following sample output shows the IOCP status is set to Defined and hence not enabled:

iocp0 Defined I/O Completion Ports

By default, IOCP is set to Defined. To enable IOCP, set IOCP to Available using the following procedure:

1. Log in as root and run the following command:

# smitty iocp

2. Select Change / Show Characteristics of I/O Completion Ports.

3. Change configured state at system restart from Defined to Available.

4. Run the lsdev command to confirm the IOCP status is set to Available:

$ lsdev | grep iocp

iocp0 Available I/O Completion Ports

Restart the system to make the changes permanent.

Step 4: Checking Resource Limits for AIX

On AIX platforms, the /etc/security/login.cfg file controls and limits resources for users on the system. On login, set control and limit resources for users on the system so that authentication is carried out through the pam.conf file. By default, resource limits are set to std_auth for AIX operating systems.

1. Edit the file /etc/security/login.cfg file to change auth_type under the usw stanza from std_auth to pam_auth.

2. To ensure that these resource limits are honored, confirm that the line login session required /usr/lib/security/pam_aix is set in /etc/pam.conf.

For example:

dtsession auth required /usr/lib/security/pam_aix

dtlogin session required /usr/lib/security/pam_aix

ftp session required /usr/lib/security/pam_aix

imap session required /usr/lib/security/pam_aix

login session required /usr/lib/security/pam_aix

rexec session required /usr/lib/security/pam_aix

rlogin session required /usr/lib/security/pam_aix

rsh session required /usr/lib/security/pam_aix

snapp session required /usr/lib/security/pam_aix

su session required /usr/lib/security/pam_aix

swrole session required /usr/lib/security/pam_aix

telnet session required /usr/lib/security/pam_aix

xdm session required /usr/lib/security/pam_aix

OTHER session required /usr/lib/security/pam_prohibit

websm_rlogin session required /usr/lib/security/pam_aix

websm_su session required /usr/lib/security/pam_aix

wbem session required /usr/lib/security/pam_aix

Step 5: Tuning Virtual Memory Manager (VMM)

Recommended Values for Virtual Memory Manager

Parameter Value

minperm% 3

maxperm% 90

maxclient% = 90 90

lru_file_repage 0

strict_maxclient 1

strict_maxperm 0

For example:

vmo -p -o minperm%=3

vmo -p -o maxperm%=90

vmo -p -o maxclient%=90

vmo -p -o lru_file_repage=0

vmo -p -o strict_maxclient=1

vmo -p -o strict_maxperm=0

Note: You must restart the system for these changes to take effect.

Step 6: Tuning Virtual Processor Manager (VPM)

Oracle recommends that you use the vpm_xvcpus command to tune virtual processor.

When you enable CPU folding with only one CUP, your system may reboot and face performance problems.

1. Check if CPU folding is enabled:

# schedo -L| grep "vpm_xvcpus" |cut -d " " -f 17

The above command returns 0 if CPU folding is enabled.

2. Set value of the vpm_xvcpus parameter to at least 2:

# schedo -o vpm_xvcpus=2

3. Increase the space allocated for ARG/ENV list to 128. The size is specified by number of 4K blocks.

For example:

# /usr/sbin/chdev -l sys0 -a ncargs='1024'

Step 7: Configuring SSH LoginGraceTime Parameter for AIX

On AIX systems, configure the OpenSSH parameter to avoid timeout errors.

On AIX systems, the OpenSSH parameter LoginGraceTime by default is commented out, and the default behavior of OpenSSH on AIX can sometimes result in timeout errors. 

To avoid these errors, complete the following procedure:

1. Log in as root.

2. Using a text editor, open the OpenSSH configuration file /etc/ssh/sshd_config.

3. Locate the comment line #LoginGraceTime 2m.

4. Uncomment the line, and change the value to 0 (unlimited).

For example:

 LoginGraceTime 0

5. Save /etc/ssh/sshd_config.

6. Restart SSH.

Step 8: Configuring User Process Parameters

Verify that the maximum number of processes allowed for each user is set to 16384 or greater.

1. Enter the following command:

# smit chgsys

2. Verify that the value shown for Maximum number of PROCESSES allowed for each user is greater than or equal to 16384. If necessary, edit the existing value.

3. When you have finished making changes, press Enter, then Esc+0 (Exit) to exit.

For production systems, this value should be at least 128 plus the sum of the PROCESSES and PARALLEL_MAX_SERVERS initialization parameters for each database running on the system.

Step 9: Configuring Network Tuning Parameters

View the current value specified for network tuning parameters, and change them if necessary.

1. To check the current values of the network tuning parameters, enter commands similar to

the following:

# no -a | more

2. If you must change the value of any parameter, then enter the following command to determine whether the system is running in compatibility mode:

# lsattr -E -l sys0 -a pre520tune

If the system is running in compatibility mode, then the output is similar to the following, showing that the value of the pre520tune attribute is enabled:

pre520tune enable Pre-520 tuning compatibility mode True

3. If the system is running in compatibility mode, then follow these steps to change the parameter values:

a. Enter commands similar to the following to change the value of each parameter:

# no -o parameter_name=value

For example:

# no -o udp_recvspace=655360

b. Add entries similar to the following to the /etc/ file for each parameter that you changed in the previous step:

if [ -f /usr/sbin/no ] ; then

 /usr/sbin/no -o udp_sendspace=65536

 /usr/sbin/no -o udp_recvspace=655360

 /usr/sbin/no -o tcp_sendspace=65536

 /usr/sbin/no -o tcp_recvspace=65536

 /usr/sbin/no -o rfc1323=1

 /usr/sbin/no -o sb_max=4194304

 /usr/sbin/no -o ipqmaxlen=512


By adding these lines to the /etc/ file, the values persist when the system restarts.

c. You can also use the chdev command to change the characteristics of a device or interface. For example, set the RFC1323 value for the network

interface en5 without restarting the system as follows:

# chdev -l en5 -a rfc1323=1

4. If the system is not running in compatibility mode, then enter commands similar to the following to change the parameter values:

ipqmaxlen parameter:

# /usr/sbin/no -r -o ipqmaxlen=512

Other parameter:

/usr/sbin/no -p -o parameter=value

If you modify the ipqmaxlen parameter, then you must restart the system. These commands change the /etc/tunables/nextboot file, causing the attribute values to persist when the system restarts.

5. If you need to change parameters, and you do not restart your system, then use the ifconfig command to check each network parameter after you change the no global setting.

For example:

# ifconfig en0





inet netmask 0xfffff800 broadcast

 inet netmask 0xfffff800 broadcast

 inet netmask 0xfffff800 broadcast

 inet netmask 0xfffff800 broadcast

 tcp_sendspace 131072 tcp_recvspace 65536 rfc1323 0

For the ISNO parameter tcp_sendspace, use the following command to set it:

# ifconfig en0 tcp_sendspace 65536

6. Running the Script

Run the script only the first time you install Oracle Database on IBM AIX on POWER Systems (64-Bit). Use the following procedure to run the script:

1. Download the Oracle Database installation image files ( and extract

the files into a new Oracle home directory. For example:

# mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

# chgrp oinstall /u01/app/oracle/product/19.0.0/dbhome_1

# cd /u01/app/oracle/product/19.0.0/dbhome_1

# unzip -q /tmp/

2. Switch the user to root:

# su - root



3. Run the script using the following command:

# $ORACLE_HOME/clone/

4. Exit from the root account:

# exit

Step 10: Creating the Oracle Home and Oracle Base Directory

# mkdir -p /u01/app/19.0.0/grid - Grid home directory

# mkdir -p /u01/app/grid - Grid base directory

# mkdir -p /u01/app/oracle/19c/db_1 - Oracle home directory

# mkdir -p /u01/app/oracle - Oracle base directory 

# chown -R grid:oinstall /u01

# chown oracle:oinstall /u01/app/oracle

# chmod -R 775 /u01/

Step 11: Creating Identical Database Users and Groups on Other Cluster Nodes

1. Log in to the node as root

Use the id option to specify the correct group ID for each group.

# mkgroup -A id=54421 oinstall

# mkgroup -A id=54322 dba

# mkgroup -A id=54323 oper

# mkgroup -A id=54327 asmdba

# mkgroup -A id=54328 asmoper

# mkgroup -A id=54329 asmadmin

# mkuser id='54321' pgrp='oinstall' groups='dba,oper,asmdba,asmoper' home='/home/oracle' oracle

# mkuser id='54322' pgrp='oinstall' groups='asmadmin, asmdba,dba' home='/home/grid' grid

• The pgrp option specifies the primary group for the Grid user, which must be the Oracle Inventory group (OINSTALL), which grants the OINSTALL system privileges.

In this example, the OINSTALL group is oinstall.

2. Set the password of the user.

For example:

# passwd grid

# passwd oracle

12: Host file configuration on both nodes

1. Log in to the node as root

# vi /etc/hosts               loopback localhost      # loopback (lo0) name/address

::1                     loopback localhost      # IPv6 loopback (lo0) name/address

# Public IP rac1 rac2

# Private IP      rac1-priv      rac2-priv

# Virtual IP rac1-vip rac2-vip

# Scan IP rac-scan rac-scan rac-scan

Step 13: Disable firewall & Bash profile change for both node

1. Disable firewall

systemctl stop firewalld

systemctl disable firewalld

2. Bash profile entry for oracle user

su - oracle

mv .bash_profile .bash_profile_orig

# vi .bash_profile

export PATH=/usr/bin:/usr/sbin


ORACLE_BASE=/u01/app/oracle/19c/db_1; export ORACLE_BASE

ORACLE_HOME=/u01/app/oracle/19c/db_1; export ORACLE_HOME





if [ -f /usr/bin/less ]; then

    export PAGER="/usr/bin/less -ins"

elif [ -f /usr/bin/more ]; then

    export PAGER="/usr/bin/more -s"



PS1="\u@\h$ "

export PS1


if [ -s "$MAIL" ]           # This is at Shell startup.  In normal

then echo "$MAILMSG"        # operation, the Shell checks

fi                          # periodically.

3. Bash profile entry for grid user

su - grid

mv .bash_profile .bash_profile_orig

# vi .bash_profile

export PATH=/usr/bin:/usr/sbin


export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/19c/grid



export PATH=$ORACLE_HOME/bin:/u01/app/19c/grid/OPatch/:$PATH







PS1="\u@\h$ "

export PS1


Step 14: Installing Oracle Grid Infrastructure for a New Cluster

Note: following activities have to perform only one node of the cluster

1. As the grid user, download the Oracle Grid Infrastructure image files and extract the files into the Grid home. For example:

chown grid:oinstall /u01/app/19c/grid

cd /u01/app/19c/grid

unzip -q download_location/

Note: is the name of the Oracle Grid Infrastructure image zip file

2. Create passwordless ssh connectivity between nodes using the following command

# cd /u01/app/19c/grid/deinstall

# ./ -user grid -hosts "hostname1 hostname2" -noPromptPassphrase -confir m -advanced

3. Pre-Check for CRS(Oracle Clusterware) installation run the following command

# ./ stage -pre crsinst -n dc-dg1,dc-dg2 -fixup -verbose

# ./ stage -pre crsinst -n dc-dg1,dc-dg2 -method root

4. Log in as the grid user, and start the Oracle Grid Infrastructure installer by running the

following command:

# /u01/app/19c/grid

# ./

@ Install Grid Software with latest RU patch

# Opatch version upgrade as per RU patch requirment

# Unzip the patch file (Ex. unzip patch location is /backup/patch/33509923/) 

# ./ -applyRU /backup/patch/33509923/

Post a Comment