Oracle 19c RAC Installation Steps on Linux 8

Oracle 19c RAC Installation Steps on Linux 8: In this article we are going to configure a 2 Node Oracle 19c RAC setup on OEL 8.10 (Oracle Enterprise Linux 8.10). For this installation we used 2 users, one is oracle to install Database and another is grid to install Grid.

Environment Details:

Environment Details

Oracle 19c RAC Installation complete Steps:

1.	Server Configuration:
	1.1	Hardware Requirements:
	1.2	Software Requirements:

2.	Download and copy required Software on one node:

3.	Configure Hosts File:

4.	Configure DNS and add DNS server details in /etc/resolv.conf:

5.	Prerequisites for RAC Installation (Perform on all Nodes):
	5.1	Create required Users and Groups:
	5.2	Create Directories & Change Permission:
	5.3	Install required RPM’s For Oracle RAC Configuration:
	5.4	Install Additional RPM’s For Oracle RAC Configuration:
	5.5	Install Additional RPM’s For Oracle ASM Configuration:
	5.6	Disabling Firewall service:
	5.7	Disabling SELinux:
	5.8	Configure Oracle ASM:
	5.9	Create Partition for ASM disks:
	5.10	Disk Creation in ASM:
	5.11	Chrony NTP Configuration:
	5.12	Verify the Network configuration:
	5.13	Stop or Remove virbr0 Network Interface:
	5.14	Unzip the Oracle and Grid Binary:
	5.15	Install the cvudisk package on all nodes:
	5.16	Configure SSH Setup Between all Nodes:

6.	Pre-checks for RAC Setup:

7.	Install and Configure Oracle 19c Grid Infrastructure for a Cluster:
	7.1	Select Grid Option:
	7.2	Select Cluster Configuration:
	7.3	Grid Plug and Play Information:
	7.4	Cluster Node Information:
	7.5	Specify Network Interface Usage:
	7.6	Storage Option Information:
	7.7	Create Grid Infrastructure Management Repository:
	7.8	Create ASM Disk Group:
	7.9	Specify ASM Password:
	7.10	Failure Isolation Support:
	7.11	Specify Management Options:
	7.12	Privileged Operating System Groups:
	7.13	Specify Installation Location:
	7.14	Create Inventory directory:
	7.15	Root script execution configuration:
	7.16	Perform Prerequisite Checks:
	7.17	Summary:
	7.18	Execute Configuration scripts:
	7.19	Finish Grid Installation:
	7.20	Check the Cluster services status:

8.	Run ASM Configuration Assistant to create ASM Disk Groups:
	8.1	Create Disk Group:
	8.2	Create DATA Disk Group:
	8.3	RECO Disk Group:
	8.4	Disk Groups creation completed:

9.	Install Oracle Database 19c software only:
	9.1	Configuration Option:
	9.2	Select Database Installation Option:
	9.3	Select List of Nodes:
	9.4	Choose Database Edition:
	9.5	Specify Installation Location:
	9.6	Privileged Operating System groups:
	9.7	Root script execution configuration:
	9.8	Oracle Binary Installation Summary:
	9.9	Installation Progress status:
	9.10	Execute Configuration scripts:
	9.11	Oracle Binary Installation Finish:

10.	Create a RAC Database:
	10.1	Database Operation:
	10.2	Database Creation Mode:
	10.3	Select Database Deployment Type:
	10.4	Select List of Nodes:
	10.5	Specify Database Identification Details:
	10.6	Database Storage Option:
	10.7	Fast Recovery Option:
	10.8	Oracle Data Vault Config Option:
	10.9	Specify Configuration Options:
	10.10	Specify Management Options:
	10.11	Database User Credentials:
	10.12	Select Database Creation Option:
	10.13	Database Creation Summary:
	10.14	Installation Progress Page:
	10.15	Database Creation Finish Page:
	10.16	Check Database status:

Server Configuration:

Hardware Requirements:

The first thing we need to verify the hardware requirements for an Oracle 19c (19.3) RAC installation:

Servers:

1.	Minimum 2 servers (nodes) with similar hardware configurations.
2.	Minimum 8 GB Physical RAM for each nodes. (Here we use 16 GB RAM)
3.	Minimum Swap space at least equal to RAM. (Here we use 16 GB swap)

Network:

Minimum 2 network interfaces (NIC) on each server. One for the public network and one for the private interconnect. Make sure 2 NIC should be same name on each server and assigned IP's for Public and Private should be in diffenent subnet mask.


Oracle recomended that total 9 IPs required to configure a 2 node Cluster:

2 Public IP	(each individual server to have a different IP)
2 Private IP	(each individual server to have a different IP)		Diff subnet than other IP
2 Virtual IP	(each individual server to have a different IP)
3 SCAN IP	(per RAC setup)

Storage:

Filesystem Storage required:

To install Grid Binaries on each node:  -  100 GB   -    /u01  (Mount point)
To install Oracle Binaries on each node:  -  100 GB   -    /u02  (Mount point)
For RAC installation /tmp on each node:  -  10 GB   -    /tmp  (Mount point)

Shared storage accessible by all nodes, such as SAN or NAS. Here we taken below Shared Raw Disk for this installation:

Shared Raw Disk - 3	10 GB each	For OCR and Voting Disk  (Normal Redundancy)
Shared Raw Disk - 1	100 GB		For RECO  (External Redundancy)
Shared Raw Disk - 1 	100 GB		For DATA  (External Redundancy)

Software Requirements:

Operating System:

Here we use Oracle Linux 8.10 OS. It will work with the Latest Linux Version i.e. Linux 7, 8 or 9

Oracle Grid Infrastructure:    Oracle Database - Enterprise Edition - Version 19.3.0.0.0

Oracle Database Software:    Oracle Database - Enterprise Edition - Version 19.3.0.0.0

Download and copy required Software on one node:

Download the Oracle Database 19c Enterprise Edition 19.3.0.0.0 software from Oracle Software Delivery Cloud and copy the same on one node.

Download and copy required Software

Configure Hosts File:

Do changes on both nodes.

Node-1:
==================

[root@node-1 ~]# cat /etc/hosts


## Public IPs ##
192.168.xx.xx node-1.orakldba.com node-1
192.168.xx.xx node-2.orakldba.com node-2

## Private IPs ##
192.168.yyy.yyy node-1-priv.orakldba.com node-1-priv
192.168.yyy.yyy node-2-priv.orakldba.com node-2-priv

## Virtual IPs ##
192.168.xx.xx node-1-vip.orakldba.com node-1-vip
192.168.xx.xx node-2-vip.orakldba.com node-2-vip

## Scan IPs ##
192.168.xx.xx test-scan.orakldba.com  test-scan
192.168.xx.xx test-scan.orakldba.com  test-scan
192.168.xx.xx test-scan.orakldba.com  test-scan

[root@node-1 ~]#


Node-2:
==================

[root@node-2 ~]# cat /etc/hosts


## Public IPs ##
192.168.xx.xx node-1.orakldba.com node-1
192.168.xx.xx node-2.orakldba.com node-2

## Private IPs ##
192.168.yyy.yyy node-1-priv.orakldba.com node-1-priv
192.168.yyy.yyy node-2-priv.orakldba.com node-2-priv

## Virtual IPs ##
192.168.xx.xx node-1-vip.orakldba.com node-1-vip
192.168.xx.xx node-2-vip.orakldba.com node-2-vip

## Scan IPs ##
192.168.xx.xx test-scan.orakldba.com  test-scan
192.168.xx.xx test-scan.orakldba.com  test-scan
192.168.xx.xx test-scan.orakldba.com  test-scan

[root@node-2 ~]#

Configure DNS and add DNS server details in /etc/resolv.conf:

Make sure IP addresses entry from /etc/hosts file added in DNS. Also need to configure the /etc/resolv.conf file with search domain and DNS server details.

Node-1:
=============================

[root@node-1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search orakldba.com
nameserver 192.168.xx.xx
nameserver 192.168.xx.xx
[root@node-1 ~]#


Node-2:
=============================

[root@node-2 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search orakldba.com
nameserver 192.168.xx.xx
nameserver 192.168.xx.xx
[root@node-2 ~]#

Prerequisites for RAC Installation: (Perform on both Nodes)

Create required Users and Groups:

On Node-1:
=============

[root@node-1 ~]# groupadd -g 54321 oinstall
[root@node-1 ~]# groupadd -g 54322 dba
[root@node-1 ~]# groupadd -g 54323 oper
[root@node-1 ~]# groupadd -g 54324 backupdba
[root@node-1 ~]# groupadd -g 54325 dgdba
[root@node-1 ~]# groupadd -g 54326 kmdba
[root@node-1 ~]# groupadd -g 54327 asmdba
[root@node-1 ~]# groupadd -g 54328 asmoper
[root@node-1 ~]# groupadd -g 54329 asmadmin
[root@node-1 ~]# groupadd -g 54330 racdba
[root@node-1 ~]#
[root@node-1 ~]# useradd -u 54321 -g oinstall -G dba,oper,asmdba,asmoper,asmadmin,kmdba,dgdba,backupdba,racdba oracle
[root@node-1 ~]#
[root@node-1 ~]# useradd -u 54322 -g oinstall -G dba,oper,asmdba,asmoper,asmadmin,racdba grid
[root@node-1 ~]#
[root@node-1 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(asmdba),54328(asmoper),54329(asmadmin),54330(racdba)
[root@node-1 ~]#
[root@node-1 ~]# id grid
uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54327(asmdba),54328(asmoper),54329(asmadmin),54330(racdba)
[root@node-1 ~]#
[root@node-1 ~]# passwd oracle
Changing password for user oracle.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# passwd grid
Changing password for user grid.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@node-1 ~]#


On Node-2:
===============

[root@node-2 ~]# groupadd -g 54321 oinstall
[root@node-2 ~]# groupadd -g 54322 dba
[root@node-2 ~]# groupadd -g 54323 oper
[root@node-2 ~]# groupadd -g 54324 backupdba
[root@node-2 ~]# groupadd -g 54325 dgdba
[root@node-2 ~]# groupadd -g 54326 kmdba
[root@node-2 ~]# groupadd -g 54327 asmdba
[root@node-2 ~]# groupadd -g 54328 asmoper
[root@node-2 ~]# groupadd -g 54329 asmadmin
[root@node-2 ~]# groupadd -g 54330 racdba
[root@node-2 ~]#
[root@node-2 ~]# useradd -u 54321 -g oinstall -G dba,oper,asmdba,asmoper,asmadmin,kmdba,dgdba,backupdba,racdba oracle
[root@node-2 ~]#
[root@node-2 ~]# useradd -u 54322 -g oinstall -G dba,oper,asmdba,asmoper,asmadmin,racdba grid
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(asmdba),54328(asmoper),54329(asmadmin),54330(racdba)
[root@node-2 ~]#
[root@node-2 ~]# id grid
uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54327(asmdba),54328(asmoper),54329(asmadmin),54330(racdba)
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# passwd oracle
Changing password for user oracle.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# passwd grid
Changing password for user grid.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@node-2 ~]#

Create Directories & Change Permission:

Node-1:
===================

[root@node-1 ~]# mkdir -p /u01/app/oracle/product/19c/dbhome_1
[root@node-1 ~]# mkdir -p /u02/app/19c/grid
[root@node-1 ~]# mkdir -p /u02/app/grid_base
[root@node-1 ~]# chown -R oracle:oinstall /u01
[root@node-1 ~]# chmod -R 775 /u01
[root@node-1 ~]# chown -R grid:oinstall /u02
[root@node-1 ~]# chmod -R 775 /u02

Node-2:
====================

[root@node-2 ~]# mkdir -p /u01/app/oracle/product/19c/dbhome_1
[root@node-2 ~]# mkdir -p /u02/app/19c/grid
[root@node-2 ~]# mkdir -p /u02/app/grid_base
[root@node-2 ~]# chown -R oracle:oinstall /u01
[root@node-2 ~]# chmod -R 775 /u01
[root@node-2 ~]# chown -R grid:oinstall /u02
[root@node-2 ~]# chmod -R 775 /u02

Install required RPM’s For Oracle RAC Configuration:

Node-1:
===============

Here we use OEL 8.10 so, If you plan to use the "oracle-database-preinstall-19c" package to perform all your prerequisite setup, issue the following command.

[root@node-1 ~]# dnf install oracle-database-preinstall-19c.x86_64 -y
[root@node-1 ~]#


If you are using RHEL8 or CentOS8, you can pick up the RPM from the OL8 repository and install it. It will pull the dependencies from your normal repositories.

[root@node-1 ~]# curl -o oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 31828  100 31828    0     0   235k      0 --:--:-- --:--:-- --:--:--  235k
[root@node-1 ~]#
[root@node-1 ~]# ls -ltrh oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
-rw-r--r--. 1 root root 32K Apr  7 11:29 oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
[root@node-1 ~]#
[root@node-1 ~]# dnf -y localinstall oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm



Node-2:
==============

[root@node-2 ~]# dnf install oracle-database-preinstall-19c.x86_64 -y
[root@node-2 ~]#

Install Additional RPM’s For Oracle RAC Configuration:

Execute below listed commands as root user from all nodes.

dnf install -y bc
dnf install -y binutils
dnf install -y compat-libcap1
dnf install -y compat-libstdc++-33
dnf install -y dtrace-modules
dnf install -y dtrace-modules-headers
dnf install -y dtrace-modules-provider-headers
dnf install -y dtrace-utils
dnf install -y elfutils-libelf
dnf install -y elfutils-libelf-devel
dnf install -y fontconfig-devel
dnf install -y glibc
dnf install -y glibc-devel
dnf install -y ksh
dnf install -y libaio
dnf install -y libaio-devel
dnf install -y libdtrace-ctf-devel
dnf install -y libXrender
dnf install -y libXrender-devel
dnf install -y libX11
dnf install -y libXau
dnf install -y libXi
dnf install -y libXtst
dnf install -y libgcc
dnf install -y librdmacm-devel
dnf install -y libstdc++
dnf install -y libstdc++-devel
dnf install -y libxcb
dnf install -y make
dnf install -y net-tools # Clusterware
dnf install -y nfs-utils # ACFS
dnf install -y python # ACFS
dnf install -y python-configshell # ACFS
dnf install -y python-rtslib # ACFS
dnf install -y python-six # ACFS
dnf install -y targetcli # ACFS
dnf install -y smartmontools
dnf install -y sysstat
dnf install -y gcc
dnf install -y unixODBC
dnf install -y libnsl
dnf install -y libnsl.i686
dnf install -y libnsl2
dnf install -y libnsl2.i686

Install Additional RPM’s For Oracle ASM Configuration:

First you need to download the required oracleasm packages using below link and execute on all nodes:

oracleasmlib-3.0.0-13.el8.x86_64.rpm
oracleasm-support-3.0.0-7.el8.x86_64.rpm
kmod-redhat-oracleasm-2.0.8-18.2.0.1.el8_10.x86_64.rpm

Node-1:
================

[root@node-1 ~]# dnf install oracleasm -y
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# dnf localinstall oracleasmlib-3.0.0-13.el8.x86_64.rpm -y
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# curl -o oracleasm-support-3.0.0-7.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/addons/x86_64/getPackage/oracleasm-support-3.0.0-7.el8.x86_64.rpm
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  108k  100  108k    0     0   648k      0 --:--:-- --:--:-- --:--:--  648k
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# ls -ltrh oracleasm-support-3.0.0-7.el8.x86_64.rpm
-rw-r--r--. 1 root root 109K Apr  7 13:16 oracleasm-support-3.0.0-7.el8.x86_64.rpm
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# dnf localinstall oracleasm-support-3.0.0-7.el8.x86_64.rpm -y
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# curl -o kmod-redhat-oracleasm-2.0.8-18.2.0.1.el8_10.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/getPackage/kmod-redhat-oracleasm-2.0.8-18.2.0.1.el8_10.x86_64.rpm
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 46012  100 46012    0     0   301k      0 --:--:-- --:--:-- --:--:--  301k
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# ls -ltrh kmod-redhat-oracleasm-2.0.8-18.2.0.1.el8_10.x86_64.rpm
-rw-r--r-- 1 root root 45K Apr 14 20:47 kmod-redhat-oracleasm-2.0.8-18.2.0.1.el8_10.x86_64.rpm
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# dnf localinstall kmod-redhat-oracleasm-2.0.8-18.2.0.1.el8_10.x86_64.rpm -y
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# rpm -qa | grep oracleasm
kmod-redhat-oracleasm-2.0.8-18.2.0.1.el8_10.x86_64
oracleasmlib-3.0.0-13.el8.x86_64
oracleasm-support-3.0.0-7.el8.x86_64
[root@node-1 ~]#



Node-2:
==================

Copy and Execute the same packages on all Nodes

Disabling Firewall service:

Stop and Disabled the Firewall service.

Node-1:
==================

[root@node-1 ~]# systemctl stop firewalld.service
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# systemctl disable firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@node-1 ~]#


Node-2:
==================

[root@node-2 ~]# systemctl stop firewalld.service
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# systemctl disable firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@node-2 ~]#

Disabling SELinux:

Node-1:
=======================

[root@node-1 ~]# cat /etc/selinux/config

SELINUX=disabled


Node-2:
=======================

[root@node-2 ~]# cat /etc/selinux/config

SELINUX=disabled

Configure Oracle ASM:

Node-1:
=======================

[root@node-1 ~]# /usr/sbin/oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: grid
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Maximum number of disks that may be used in ASM system [2048]:
Enable iofilter if kernel supports it (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# /usr/sbin/oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# /usr/sbin/oracleasm status
Checking if the oracleasm kernel module is loaded: yes
Checking if /dev/oracleasm is mounted: yes
Checking which I/O Interface is in use: oracleasm driver (KABI_V2)
[root@node-1 ~]#



Node-2:
=======================

[root@node-2 ~]# /usr/sbin/oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: grid
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Maximum number of disks that may be used in ASM system [2048]:
Enable iofilter if kernel supports it (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# /usr/sbin/oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# /usr/sbin/oracleasm status
Checking if the oracleasm kernel module is loaded: yes
Checking if /dev/oracleasm is mounted: yes
Checking which I/O Interface is in use: oracleasm driver (KABI_V2)
[root@node-2 ~]#

Create Partition for ASM disks:

Node-1:
===================

[root@node-1 ~]# lsblk -f
NAME        FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
├─sda1
├─sda2      xfs               090611b8-5f17-4d83-9447-b7d2b38c270e   /boot
└─sda3      LVM2_member       Uk47wR-aRWA-RWk4-lEAI-h1kq-7fSJ-WXzHXt
  ├─ol-root xfs               d036c822-3972-4c22-a5a6-a1a50dcca2be   /
  ├─ol-swap swap              dc7eb0f1-1920-4e97-8715-77641fece406   [SWAP]
  ├─ol-u02  xfs               23b5ef79-b295-4a75-a686-e2fd813c3810   /u02
  └─ol-u01  xfs               03861e6d-e039-4952-ab0c-4c07185fb3e8   /u01
sdb
sdc
sdd
sde
sr0
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdb: 210 GiB, 225485783040 bytes, 440401920 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3a317097

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1):
First sector (2048-440401919, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-440401919, default 440401919): +100G

Created a new partition 1 of type 'Linux' and of size 100 GiB.

Command (m for help): p
Disk /dev/sdb: 210 GiB, 225485783040 bytes, 440401920 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3a317097

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1        2048 209717247 209715200  100G 83 Linux

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (2-4, default 2):
First sector (209717248-440401919, default 209717248):
Last sector, +sectors or +size{K,M,G,T,P} (209717248-440401919, default 440401919): +100G

Created a new partition 2 of type 'Linux' and of size 100 GiB.

Command (m for help): p
Disk /dev/sdb: 210 GiB, 225485783040 bytes, 440401920 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3a317097

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sdb1            2048 209717247 209715200  100G 83 Linux
/dev/sdb2       209717248 419432447 209715200  100G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# fdisk /dev/sdc

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x18f1c9ba

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519):

Created a new partition 1 of type 'Linux' and of size 10 GiB.

Command (m for help): p
Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x18f1c9ba

Device     Boot Start      End  Sectors Size Id Type
/dev/sdc1        2048 20971519 20969472  10G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# fdisk /dev/sdd

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdd: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x33146fa1

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519):

Created a new partition 1 of type 'Linux' and of size 10 GiB.

Command (m for help): p
Disk /dev/sdd: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x33146fa1

Device     Boot Start      End  Sectors Size Id Type
/dev/sdd1        2048 20971519 20969472  10G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# fdisk /dev/sde

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sde: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1d04a8ae

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519):

Created a new partition 1 of type 'Linux' and of size 10 GiB.

Command (m for help): p
Disk /dev/sde: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1d04a8ae

Device     Boot Start      End  Sectors Size Id Type
/dev/sde1        2048 20971519 20969472  10G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# lsblk -f
NAME        FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
├─sda1
├─sda2      xfs               090611b8-5f17-4d83-9447-b7d2b38c270e   /boot
└─sda3      LVM2_member       Uk47wR-aRWA-RWk4-lEAI-h1kq-7fSJ-WXzHXt
  ├─ol-root xfs               d036c822-3972-4c22-a5a6-a1a50dcca2be   /
  ├─ol-swap swap              dc7eb0f1-1920-4e97-8715-77641fece406   [SWAP]
  ├─ol-u02  xfs               23b5ef79-b295-4a75-a686-e2fd813c3810   /u02
  └─ol-u01  xfs               03861e6d-e039-4952-ab0c-4c07185fb3e8   /u01
sdb
├─sdb1
└─sdb2
sdc
└─sdc1
sdd
└─sdd1
sde
└─sde1
sr0
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# ls -ltr /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdd1 /dev/sde1
brw-rw---- 1 root disk 8, 33 Apr  9 18:59 /dev/sdc1
brw-rw---- 1 root disk 8, 49 Apr  9 18:59 /dev/sdd1
brw-rw---- 1 root disk 8, 18 Apr  9 18:59 /dev/sdb2
brw-rw---- 1 root disk 8, 65 Apr  9 18:59 /dev/sde1
brw-rw---- 1 root disk 8, 17 Apr  9 18:59 /dev/sdb1
[root@node-1 ~]#



Node-2:
============================

[root@node-2 ~]# lsblk -f
NAME        FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
├─sda1
├─sda2      xfs               2a29a897-97b7-418c-82ed-ade6e481febd   /boot
└─sda3      LVM2_member       X055H9-JBH1-VvPt-KZi9-LeeJ-wfGJ-SauaEX
  ├─ol-root xfs               5213e978-b8bf-4ac8-ad97-58c4ba673029   /
  ├─ol-swap swap              1b445b11-d537-4c1c-b259-2b2909401f01   [SWAP]
  ├─ol-u02  xfs               f625dc97-1fe0-4bbe-839c-986cc0c02c12   /u02
  └─ol-u01  xfs               2dfd8056-b78a-4b6f-978b-c9c82a2fbbb6   /u01
sdb
sdc
sdd
sde
sr0
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# partprobe
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# lsblk -f
NAME        FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
├─sda1
├─sda2      xfs               2a29a897-97b7-418c-82ed-ade6e481febd   /boot
└─sda3      LVM2_member       X055H9-JBH1-VvPt-KZi9-LeeJ-wfGJ-SauaEX
  ├─ol-root xfs               5213e978-b8bf-4ac8-ad97-58c4ba673029   /
  ├─ol-swap swap              1b445b11-d537-4c1c-b259-2b2909401f01   [SWAP]
  ├─ol-u02  xfs               f625dc97-1fe0-4bbe-839c-986cc0c02c12   /u02
  └─ol-u01  xfs               2dfd8056-b78a-4b6f-978b-c9c82a2fbbb6   /u01
sdb
├─sdb1
└─sdb2
sdc
└─sdc1
sdd
└─sdd1
sde
└─sde1
sr0
[root@node-2 ~]#
[root@node-2 ~]# ls -ltr /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdd1 /dev/sde1
brw-rw---- 1 root disk 8, 65 Apr  9 19:00 /dev/sde1
brw-rw---- 1 root disk 8, 18 Apr  9 19:00 /dev/sdb2
brw-rw---- 1 root disk 8, 17 Apr  9 19:00 /dev/sdb1
brw-rw---- 1 root disk 8, 49 Apr  9 19:00 /dev/sdd1
brw-rw---- 1 root disk 8, 33 Apr  9 19:00 /dev/sdc1
[root@node-2 ~]#

Disk Creation in ASM:

Node-1:
=============================

[root@node-1 ~]# lsblk -f
NAME        FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
├─sda1
├─sda2      xfs               090611b8-5f17-4d83-9447-b7d2b38c270e   /boot
└─sda3      LVM2_member       Uk47wR-aRWA-RWk4-lEAI-h1kq-7fSJ-WXzHXt
  ├─ol-root xfs               d036c822-3972-4c22-a5a6-a1a50dcca2be   /
  ├─ol-swap swap              dc7eb0f1-1920-4e97-8715-77641fece406   [SWAP]
  ├─ol-u02  xfs               23b5ef79-b295-4a75-a686-e2fd813c3810   /u02
  └─ol-u01  xfs               03861e6d-e039-4952-ab0c-4c07185fb3e8   /u01
sdb
├─sdb1
└─sdb2
sdc
└─sdc1
sdd
└─sdd1
sde
└─sde1
sr0
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# oracleasm status
Checking if the oracleasm kernel module is loaded: yes
Checking if /dev/oracleasm is mounted: yes
Checking which I/O Interface is in use: oracleasm driver (KABI_V2)
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# oracleasm createdisk DATA01 /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@node-1 ~]# oracleasm createdisk RECO01 /dev/sdb2
Writing disk header: done
Instantiating disk: done
[root@node-1 ~]# oracleasm createdisk OCR01 /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@node-1 ~]# oracleasm createdisk OCR02 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@node-1 ~]# oracleasm createdisk OCR03 /dev/sde1
Writing disk header: done
Instantiating disk: done
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# oracleasm listdisks
DATA01
OCR01
OCR02
OCR03
RECO01
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# ls -ltr /dev/oracleasm/disks
total 0
brw-rw---- 1 grid oinstall 8, 17 Apr 14 21:26 DATA01
brw-rw---- 1 grid oinstall 8, 18 Apr 14 21:26 RECO01
brw-rw---- 1 grid oinstall 8, 65 Apr 14 21:26 OCR03
brw-rw---- 1 grid oinstall 8, 49 Apr 14 21:26 OCR02
brw-rw---- 1 grid oinstall 8, 33 Apr 14 21:26 OCR01
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# lsblk -f
NAME        FSTYPE      LABEL  UUID                                   MOUNTPOINT
sda
├─sda1
├─sda2      xfs                090611b8-5f17-4d83-9447-b7d2b38c270e   /boot
└─sda3      LVM2_member        Uk47wR-aRWA-RWk4-lEAI-h1kq-7fSJ-WXzHXt
  ├─ol-root xfs                d036c822-3972-4c22-a5a6-a1a50dcca2be   /
  ├─ol-swap swap               dc7eb0f1-1920-4e97-8715-77641fece406   [SWAP]
  ├─ol-u02  xfs                23b5ef79-b295-4a75-a686-e2fd813c3810   /u02
  └─ol-u01  xfs                03861e6d-e039-4952-ab0c-4c07185fb3e8   /u01
sdb
├─sdb1      oracleasm   DATA01
└─sdb2      oracleasm   RECO01
sdc
└─sdc1      oracleasm   OCR01
sdd
└─sdd1      oracleasm   OCR02
sde
└─sde1      oracleasm   OCR03
sr0
[root@node-1 ~]#



Node-2:
==========================================

[root@node-2 ~]# oracleasm status
Checking if the oracleasm kernel module is loaded: yes
Checking if /dev/oracleasm is mounted: yes
Checking which I/O Interface is in use: oracleasm driver (KABI_V2)
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# oracleasm listdisks
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "DATA01"
Instantiating disk "RECO01"
Instantiating disk "OCR01"
Instantiating disk "OCR02"
Instantiating disk "OCR03"
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# oracleasm listdisks
DATA01
OCR01
OCR02
OCR03
RECO01
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# ls -ltr /dev/oracleasm/disks
total 0
brw-rw---- 1 grid oinstall 8, 18 Apr 14 21:28 RECO01
brw-rw---- 1 grid oinstall 8, 65 Apr 14 21:28 OCR03
brw-rw---- 1 grid oinstall 8, 49 Apr 14 21:28 OCR02
brw-rw---- 1 grid oinstall 8, 33 Apr 14 21:28 OCR01
brw-rw---- 1 grid oinstall 8, 17 Apr 14 21:28 DATA01
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# lsblk -f
NAME        FSTYPE      LABEL  UUID                                   MOUNTPOINT
sda
├─sda1
├─sda2      xfs                2a29a897-97b7-418c-82ed-ade6e481febd   /boot
└─sda3      LVM2_member        X055H9-JBH1-VvPt-KZi9-LeeJ-wfGJ-SauaEX
  ├─ol-root xfs                5213e978-b8bf-4ac8-ad97-58c4ba673029   /
  ├─ol-swap swap               1b445b11-d537-4c1c-b259-2b2909401f01   [SWAP]
  ├─ol-u02  xfs                f625dc97-1fe0-4bbe-839c-986cc0c02c12   /u02
  └─ol-u01  xfs                2dfd8056-b78a-4b6f-978b-c9c82a2fbbb6   /u01
sdb
├─sdb1      oracleasm   DATA01
└─sdb2      oracleasm   RECO01
sdc
└─sdc1      oracleasm   OCR01
sdd
└─sdd1      oracleasm   OCR02
sde
└─sde1      oracleasm   OCR03
sr0
[root@node-2 ~]#

Chrony NTP Configuration:

Node-1:
=============================

[root@node-1 ~]# systemctl enable chronyd.service
Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service → /usr/lib/systemd/system/chronyd.service.
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# systemctl restart chronyd.service
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# chronyc -a 'burst 4/4'
200 OK
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# chronyc -a makestep
200 OK
[root@node-1 ~]#


Node-2:
=============================

[root@node-2 ~]# systemctl enable chronyd.service
Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service → /usr/lib/systemd/system/chronyd.service.
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# systemctl restart chronyd.service
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# chronyc -a 'burst 4/4'
200 OK
[root@node-2 ~]#
[root@node-2 ~]#
[root@node-2 ~]# chronyc -a makestep
200 OK
[root@node-2 ~]#

Verify the Network configuration:

Make sure 2 NIC is there one for Public IP & another for Private IP. Also check the Public & Private IP Address are pingable from each RAC nodes.

Node-1:
=============================

[root@node-1 ~]# ping node-1
[root@node-1 ~]# ping node-2
[root@node-1 ~]# 
[root@node-1 ~]# ping node-1-priv
[root@node-1 ~]# ping node-2-priv
[root@node-1 ~]# 
[root@node-1 ~]# nslookup test-scan
Server:         192.168.xx.xx
Address:        192.168.xx.xx#53

Name:   test-scan.orakldba.com
Address: 192.168.xx.xx
Name:   test-scan.orakldba.com
Address: 192.168.xx.xx
Name:   test-scan.orakldba.com
Address: 192.168.xx.xx

[root@node-1 ~]#



Node-2:
=============================

[root@node-2 ~]# ping node-1
[root@node-2 ~]# ping node-2
[root@node-2 ~]# 
[root@node-2 ~]# ping node-1-priv
[root@node-2 ~]# ping node-2-priv
[root@node-2 ~]# 
[root@node-2 ~]# nslookup test-scan
Server:         192.168.xx.xx
Address:        192.168.xx.xx#53

Name:   test-scan.orakldba.com
Address: 192.168.xx.xx
Name:   test-scan.orakldba.com
Address: 192.168.xx.xx
Name:   test-scan.orakldba.com
Address: 192.168.xx.xx

[root@node-2 ~]#

Stop or Remove virbr0 Network Interface:

Node-1:
========================

[root@node-1 ]# nmcli con show
NAME    UUID                                  TYPE      DEVICE
ens1    b37ff54d-6dcf-4952-bcc9-4b832f8b7f8c  ethernet  ens1
ens2    400cbc6e-03d3-4c02-bc64-a5ee7710e9ed  ethernet  ens2
virbr0  ac5c96b8-1d56-4f22-a88e-d091ca174d77  bridge    virbr0
[root@node-1 ]#
[root@node-1 ]# nmcli con down virbr0
Connection 'virbr0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@node-1 ]#
[root@node-1 ]#
[root@node-1 ]# nmcli con show
NAME  UUID                                  TYPE      DEVICE
ens1  b37ff54d-6dcf-4952-bcc9-4b832f8b7f8c  ethernet  ens1
ens2  400cbc6e-03d3-4c02-bc64-a5ee7710e9ed  ethernet  ens2
[root@node-1 ]#


Node-2:
========================

[root@node-2 ]# nmcli con show
NAME    UUID                                  TYPE      DEVICE
ens1    8f3648f9-a1e5-4f89-a409-fb025d323dde  ethernet  ens1
ens2    fafc35d0-cbd2-4c07-828a-948e6e8d7ae4  ethernet  ens2
virbr0  e693103a-2410-4365-ab18-f2c9337dd6e1  bridge    virbr0
[root@node-2 ]#
[root@node-2 ]# nmcli con down virbr0
Connection 'virbr0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@node-2 ]#
[root@node-2 ]#
[root@node-2 ]# nmcli con show
NAME  UUID                                  TYPE      DEVICE
ens1  8f3648f9-a1e5-4f89-a409-fb025d323dde  ethernet  ens1
ens2  fafc35d0-cbd2-4c07-828a-948e6e8d7ae4  ethernet  ens2
[root@node-2 ]#

Unzip the Oracle and Grid Binary:

Copy and Unzip the Oracle binary software in created ORACLE_HOME directory using oracle user and the Grid binary software on created GRID_HOME directory using grid user on RAC 1st node.

Node-1:
=============================

Unzip the Grid software using grid user:
------------------------------------------------

[grid@node-1 softwares]$ unzip -o /u02/softwares/LINUX.X64_193000_grid_home.zip -d /u02/app/19c/grid
[grid@node-1 softwares]$
[grid@node-1 softwares]$ cd /u02/app/19c/grid
[grid@node-1 grid]$
[grid@node-1 grid]$ ls
addnode     css        diagnostics   has            jdbc  network  ords   precomp   rhp             sdk       tomcat        wwg
assistants  cv         dmu           hs             jdk   nls      oss    QOpatch   root.sh         slax      ucp           xag
bin         dbjava     env.ora       install        jlib  OPatch   oui    qos       root.sh.old     sqlpatch  usm           xdk
cha         dbs        evm           instantclient  ldap  opmn     owm    racg      root.sh.old.1   sqlplus   utl
clone       deinstall  gpnp          inventory      lib   oracore  perl   rdbms     rootupgrade.sh  srvm      welcome.html
crs         demo       gridSetup.sh  javavm         md    ord      plsql  relnotes  runcluvfy.sh    suptools  wlm
[grid@node-1 grid]$


Unzip the Oracle software using oracle user:
----------------------------------------------------

[oracle@node-1 softwares]$ unzip -o /u01/softwares/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19c/dbhome_1
[oracle@node-1 softwares]$
[oracle@node-1 softwares]$ cd /u01/app/oracle/product/19c/dbhome_1
[oracle@node-1 dbhome_1]$
[oracle@node-1 dbhome_1]$
[oracle@node-1 dbhome_1]$ ls
addnode     css     deinstall    env.ora        javavm  md       OPatch   oui      R            root.sh.old.1  sqlj      usm
apex        ctx     demo         has            jdbc    mgw      opmn     owm      racg         runInstaller   sqlpatch  utl
assistants  cv      diagnostics  hs             jdk     network  oracore  perl     rdbms        schagent.conf  sqlplus   wwg
bin         data    dmu          install        jlib    nls      ord      plsql    relnotes     sdk            srvm      xdk
clone       dbjava  drdaas       instantclient  ldap    odbc     ords     precomp  root.sh      slax           suptools
crs         dbs     dv           inventory      lib     olap     oss      QOpatch  root.sh.old  sqldeveloper   ucp
[oracle@node-1 dbhome_1]$

Install the cvudisk package on all nodes:

Node-1:
=============================

[root@node-1 ~]# cd /u02/app/19c/grid/cv/rpm/
[root@node-1 rpm]#
[root@node-1 rpm]# ls -ltrh cvuqdisk-1.0.10-1.rpm
-rw-r--r--. 1 grid oinstall 12K Mar 13  2019 cvuqdisk-1.0.10-1.rpm
[root@node-1 rpm]#
[root@node-1 rpm]#
[root@node-1 rpm]# rpm -Uvh cvuqdisk-1.0.10-1.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Using default group oinstall to install package
Updating / installing...
   1:cvuqdisk-1.0.10-1                ################################# [100%]
[root@node-1 rpm]#
[root@node-1 rpm]#
[root@node-1 rpm]#
[root@node-1 rpm]# scp cvuqdisk-1.0.10-1.rpm root@node-2:/tmp
root@node-2's password:
cvuqdisk-1.0.10-1.rpm                                                                               100%   11KB   4.3MB/s   00:00
[root@node-1 rpm]#
[root@node-1 rpm]#


Node-2:
=============================

[root@node-2 ~]# cd /tmp/
[root@node-2 tmp]#
[root@node-2 tmp]# ls -ltrh cvuqdisk-1.0.10-1.rpm
-rw-r--r--. 1 root root 12K Apr  7 17:05 cvuqdisk-1.0.10-1.rpm
[root@node-2 tmp]#
[root@node-2 tmp]#
[root@node-2 tmp]# rpm -Uvh cvuqdisk-1.0.10-1.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Using default group oinstall to install package
Updating / installing...
   1:cvuqdisk-1.0.10-1                ################################# [100%]
[root@node-2 tmp]#

Configure SSH Setup Between all Nodes:

Here we use 2 users one (grid user) for Grid installation and another (oracle user) for Oracle installation so, we required to configure SSH passwordless connectivity setup for both users between all nodes.

Connect the server using grid user and execute below command where softwares unzipped:
===============================================================

[grid@node-1 ~]$ cd /u02/app/19c/grid/deinstall
[grid@node-1 deinstall]$
[grid@node-1 deinstall]$
[grid@node-1 deinstall]$ ls -ltrh sshUserSetup.sh
-rwxr-x---. 1 grid oinstall 33K Jan  7  2015 sshUserSetup.sh
[grid@node-1 deinstall]$
[grid@node-1 deinstall]$
[grid@node-1 deinstall]$ ./sshUserSetup.sh -user grid -hosts "node-1 node-2" -noPromptPassphrase -confirm -advanced


Connect the server using oracle user and execute below command where softwares unzipped:
================================================================

[oracle@node-1 ~]$ cd /u02/app/19c/grid/deinstall
[oracle@node-1 deinstall]$
[oracle@node-1 deinstall]$
[oracle@node-1 deinstall]$ ls -ltrh sshUserSetup.sh
-rwxr-x---. 1 grid oinstall 33K Jan  7  2015 sshUserSetup.sh
[oracle@node-1 deinstall]$
[oracle@node-1 deinstall]$
[oracle@node-1 deinstall]$ ./sshUserSetup.sh -user oracle -hosts "node-1 node-2" -noPromptPassphrase -confirm -advanced

Pre-checks for RAC Setup:

[grid@node-1 ~]$ cd /u02/app/19c/grid/
[grid@node-1 grid]$
[grid@node-1 grid]$ export CV_ASSUME_DISTID=OEL8
[grid@node-1 grid]$
[grid@node-1 grid]$ ./runcluvfy.sh stage -pre crsinst -n node-1,node-2 -verbose

Verifying Physical Memory ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  node-2      15.331GB (1.6075768E7KB)  8GB (8388608.0KB)         passed
  node-1      15.331GB (1.6075768E7KB)  8GB (8388608.0KB)         passed
Verifying Physical Memory ...PASSED
Verifying Available Physical Memory ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  node-2      14.5364GB (1.5242492E7KB)  50MB (51200.0KB)          passed
  node-1      13.9036GB (1.4578952E7KB)  50MB (51200.0KB)          passed
Verifying Available Physical Memory ...PASSED
Verifying Swap Size ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  node-2      16GB (1.6777212E7KB)      15.331GB (1.6075768E7KB)  passed
  node-1      16GB (1.6777212E7KB)      15.331GB (1.6075768E7KB)  passed
Verifying Swap Size ...PASSED
Verifying Free Space: node-2:/usr,node-2:/var,node-2:/etc,node-2:/sbin,node-2:/tmp ...
  Path              Node Name     Mount point   Available     Required      Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  /usr              node-2      /             58.1514GB     25MB          passed
  /var              node-2      /             58.1514GB     5MB           passed
  /etc              node-2      /             58.1514GB     25MB          passed
  /sbin             node-2      /             58.1514GB     10MB          passed
  /tmp              node-2      /             58.1514GB     1GB           passed
Verifying Free Space: node-2:/usr,node-2:/var,node-2:/etc,node-2:/sbin,node-2:/tmp ...PASSED
Verifying Free Space: node-1:/usr,node-1:/var,node-1:/etc,node-1:/sbin,node-1:/tmp ...
  Path              Node Name     Mount point   Available     Required      Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  /usr              node-1      /             57.5166GB     25MB          passed
  /var              node-1      /             57.5166GB     5MB           passed
  /etc              node-1      /             57.5166GB     25MB          passed
  /sbin             node-1      /             57.5166GB     10MB          passed
  /tmp              node-1      /             57.5166GB     1GB           passed
Verifying Free Space: node-1:/usr,node-1:/var,node-1:/etc,node-1:/sbin,node-1:/tmp ...PASSED
Verifying User Existence: grid ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  node-2      passed                    exists(54322)
  node-1      passed                    exists(54322)

  Verifying Users With Same UID: 54322 ...PASSED
Verifying User Existence: grid ...PASSED
Verifying Group Existence: asmadmin ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  node-2      passed                    exists
  node-1      passed                    exists
Verifying Group Existence: asmadmin ...PASSED
Verifying Group Existence: asmdba ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  node-2      passed                    exists
  node-1      passed                    exists
Verifying Group Existence: asmdba ...PASSED
Verifying Group Existence: oinstall ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  node-2      passed                    exists
  node-1      passed                    exists
Verifying Group Existence: oinstall ...PASSED
Verifying Group Membership: asmdba ...
  Node Name         User Exists   Group Exists  User in Group  Status
  ----------------  ------------  ------------  ------------  ----------------
  node-2          yes           yes           yes           passed
  node-1          yes           yes           yes           passed
Verifying Group Membership: asmdba ...PASSED
Verifying Group Membership: asmadmin ...
  Node Name         User Exists   Group Exists  User in Group  Status
  ----------------  ------------  ------------  ------------  ----------------
  node-2          yes           yes           yes           passed
  node-1          yes           yes           yes           passed
Verifying Group Membership: asmadmin ...PASSED
Verifying Group Membership: oinstall(Primary) ...
  Node Name         User Exists   Group Exists  User in Group  Primary       Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  node-2          yes           yes           yes           yes           passed
  node-1          yes           yes           yes           yes           passed
Verifying Group Membership: oinstall(Primary) ...PASSED
Verifying Run Level ...
  Node Name     run level                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  node-2      5                         3,5                       passed
  node-1      5                         3,5                       passed
Verifying Run Level ...PASSED
Verifying Hard Limit: maximum open file descriptors ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  node-2          hard          262144        65536         passed
  node-1          hard          262144        65536         passed
Verifying Hard Limit: maximum open file descriptors ...PASSED
Verifying Soft Limit: maximum open file descriptors ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  node-2          soft          1024          1024          passed
  node-1          soft          1024          1024          passed
Verifying Soft Limit: maximum open file descriptors ...PASSED
Verifying Hard Limit: maximum user processes ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  node-2          hard          62547         16384         passed
  node-1          hard          62547         16384         passed
Verifying Hard Limit: maximum user processes ...PASSED
Verifying Soft Limit: maximum user processes ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  node-2          soft          62547         2047          passed
  node-1          soft          62547         2047          passed
Verifying Soft Limit: maximum user processes ...PASSED
Verifying Soft Limit: maximum stack size ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  node-2          soft          10240         10240         passed
  node-1          soft          10240         10240         passed
Verifying Soft Limit: maximum stack size ...PASSED
Verifying Users With Same UID: 0 ...PASSED
Verifying Current Group ID ...PASSED
Verifying Root user consistency ...
  Node Name                             Status
  ------------------------------------  ------------------------
  node-2                              passed
  node-1                              passed
Verifying Root user consistency ...PASSED
Verifying Package: cvuqdisk-1.0.10-1 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  node-2      cvuqdisk-1.0.10-1         cvuqdisk-1.0.10-1         passed
  node-1      cvuqdisk-1.0.10-1         cvuqdisk-1.0.10-1         passed
Verifying Package: cvuqdisk-1.0.10-1 ...PASSED
Verifying Host name ...PASSED
Verifying Node Connectivity ...
  Verifying Hosts File ...
  Node Name                             Status
  ------------------------------------  ------------------------
  node-1                              passed
  node-2                              passed
  Verifying Hosts File ...PASSED

Interface information for node "node-1"

 Name   IP Address      Subnet          Gateway         Def. Gateway    HW Address        MTU
 ------ --------------- --------------- --------------- --------------- ----------------- ------
 ens1   192.168.xx.xx  192.168.xx.x    0.0.0.0         192.168.xx.x    56:6F:8D:22:00:22 1500
 ens2   192.168.yy.yy   192.168.xx.x    0.0.0.0         192.168.xx.x    56:6F:8D:22:00:24 1500

Interface information for node "node-2"

 Name   IP Address      Subnet          Gateway         Def. Gateway    HW Address        MTU
 ------ --------------- --------------- --------------- --------------- ----------------- ------
 ens1   192.168.xx.xx  192.168.xx.x    0.0.0.0         192.168.xx.x    56:6F:8D:22:00:28 1500
 ens2   192.168.yy.yy   192.168.xx.x    0.0.0.0         192.168.xx.x    56:6F:8D:22:00:2E 1500

Check: MTU consistency of the subnet "192.168.xx.x".

  Node              Name          IP Address    Subnet        MTU
  ----------------  ------------  ------------  ------------  ----------------
  node-1          ens1          192.168.xx.xx  192.168.xx.x  1500
  node-2          ens1          192.168.xx.xx  192.168.xx.x  1500

Check: MTU consistency of the subnet "192.168.xx.x".

  Node              Name          IP Address    Subnet        MTU
  ----------------  ------------  ------------  ------------  ----------------
  node-1          ens2          192.168.yy.yy  192.168.xx.x  1500
  node-2          ens2          192.168.yy.yy  192.168.xx.x  1500
  Verifying Check that maximum (MTU) size packet goes through subnet ...PASSED

  Source                          Destination                     Connected?
  ------------------------------  ------------------------------  ----------------
  node-1[ens1:192.168.xx.xx]   node-2[ens1:192.168.xx.xx]   yes

  Source                          Destination                     Connected?
  ------------------------------  ------------------------------  ----------------
  node-1[ens2:192.168.yy.yy]    node-2[ens2:192.168.yy.yy]    yes
  Verifying subnet mask consistency for subnet "192.168.xx.x" ...PASSED
  Verifying subnet mask consistency for subnet "192.168.xx.x" ...PASSED
Verifying Node Connectivity ...PASSED
Verifying Multicast or broadcast check ...
Checking subnet "192.168.xx.x" for multicast communication with multicast group "224.0.xx.xx"
Verifying Multicast or broadcast check ...PASSED
Verifying ASMLib installation and configuration verification. ...
  Verifying '/etc/init.d/oracleasm' ...PASSED
  Verifying '/dev/oracleasm' ...PASSED

  Node Name                             Status
  ------------------------------------  ------------------------
  node-1                              passed
  node-2                              passed
Verifying ASMLib installation and configuration verification. ...PASSED
Verifying Network Time Protocol (NTP) ...PASSED
Verifying Same core file name pattern ...PASSED
Verifying User Mask ...
  Node Name     Available                 Required                  Comment
  ------------  ------------------------  ------------------------  ----------
  node-2      0022                      0022                      passed
  node-1      0022                      0022                      passed
Verifying User Mask ...PASSED
Verifying User Not In Group "root": grid ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  node-2      passed                    does not exist
  node-1      passed                    does not exist
Verifying User Not In Group "root": grid ...PASSED
Verifying Time zone consistency ...PASSED
Verifying Time offset between nodes ...PASSED
Verifying resolv.conf Integrity ...
  Node Name                             Status
  ------------------------------------  ------------------------
  node-1                              passed
  node-2                              passed

checking response for name "node-2" from each of the name servers specified
in "/etc/resolv.conf"

  Node Name     Source                    Comment                   Status
  ------------  ------------------------  ------------------------  ----------
  node-2      192.168.yy.yy             IPv4                      passed
  node-2      192.168.yy.yy             IPv4                      passed

checking response for name "node-1" from each of the name servers specified
in "/etc/resolv.conf"

  Node Name     Source                    Comment                   Status
  ------------  ------------------------  ------------------------  ----------
  node-1      192.168.xx.xx             IPv4                      passed
  node-1      192.168.xx.xx             IPv4                      passed
Verifying resolv.conf Integrity ...PASSED
Verifying DNS/NIS name service ...PASSED
Verifying Domain Sockets ...PASSED
Verifying /boot mount ...PASSED
Verifying Daemon "avahi-daemon" not configured and running ...
  Node Name     Configured                Status
  ------------  ------------------------  ------------------------
  node-2      no                        passed
  node-1      no                        passed

  Node Name     Running?                  Status
  ------------  ------------------------  ------------------------
  node-2      no                        passed
  node-1      no                        passed
Verifying Daemon "avahi-daemon" not configured and running ...PASSED
Verifying Daemon "proxyt" not configured and running ...
  Node Name     Configured                Status
  ------------  ------------------------  ------------------------
  node-2      no                        passed
  node-1      no                        passed

  Node Name     Running?                  Status
  ------------  ------------------------  ------------------------
  node-2      no                        passed
  node-1      no                        passed
Verifying Daemon "proxyt" not configured and running ...PASSED
Verifying User Equivalence ...PASSED
Verifying RPM Package Manager database ...PASSED
Verifying /dev/shm mounted as temporary file system ...PASSED
Verifying File system mount options for path /var ...PASSED
Verifying DefaultTasksMax parameter ...PASSED
Verifying zeroconf check ...PASSED
Verifying ASM Filter Driver configuration ...PASSED

Pre-check for cluster services setup was successful.

CVU operation performed:      stage -pre crsinst
Date:                         Apr 8, 2025 11:16:25 AM
CVU home:                     /u02/app/19c/grid/
User:                         grid
[grid@node-1 grid]$

Install and Configure Oracle 19c Grid Infrastructure for a Cluster:

[grid@node-1 ~]$ cd /u02/app/19c/grid
[grid@node-1 grid]$
[grid@node-1 grid]$
[grid@node-1 grid]$ export CV_ASSUME_DISTID=OEL8
[grid@node-1 grid]$
[grid@node-1 grid]$ ./gridSetup.sh

Select Grid Option:

Select Grid Option

Select Cluster Configuration:

Select Cluster Configuration

Grid Plug and Play Information:

Grid Plug and Play Information

Cluster Node Information:

Cluster Node Information

Click on Add option and add RAC all nodes information:

Add Cluster nodes information

Click on “SSH Connectivity” option, then click on “Test” option, it will take some time and you can show the prompt like “Passwordless SSH connectivity between the selected nodes already established.”

Passwordless SSH connectivity between the selected nodes already established

Specify Network Interface Usage:

Specify Network Interface Usage

Storage Option Information:

Storage Option Information

Create Grid Infrastructure Management Repository:

Create Grid Infrastructure Management Repository

Create ASM Disk Group:

Create ASM Disks Group for OCR

Specify ASM Password:

Specify ASM Password

Failure Isolation Support:

Failure Isolation Support

Specify Management Options:

Specify Management Options

Privileged Operating System Groups:

Privileged Operating System Group

Specify Installation Location:

Specify Installation Locations

Create Inventory directory:

Create Inventory directory

Root script execution configuration:

Root script execution configuration

Perform Prerequisite Checks:

Perform Prerequisite Checks

Check on “Ignore All” option and then “Next“:

Check on Ignore All option and then Next option

Summary:

Grid Installation Summary

Execute Configuration scripts:

Execute Configuration scripts

Run the script on the local node first. After successfully completion, you can start the script in parallel on all other nodes. Make sure login as “root” user.

Node-1:
================

[root@node-1 ~]# /u02/app/oraInventory/orainstRoot.sh
Changing permissions of /u02/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u02/app/oraInventory to oinstall.
The execution of the script is complete.
[root@node-1 ~]#


Node-2:
================

[root@node-2 ~]# /u02/app/oraInventory/orainstRoot.sh
Changing permissions of /u02/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u02/app/oraInventory to oinstall.
The execution of the script is complete.
[root@node-2 ~]#


Node-1:
================

[root@node-1 ~]# /u02/app/19c/grid/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u02/app/19c/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.
Relinking oracle with rac_on option
Using configuration parameter file: /u02/app/19c/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u02/app/grid_base/crsdata/node-1/crsconfig/rootcrs_node-1_2025-04-15_01-51-10PM.log
2025/04/15 13:51:21 CLSRSC-594: Executing installation step 1 of 19: 'SetupTFA'.
2025/04/15 13:51:21 CLSRSC-594: Executing installation step 2 of 19: 'ValidateEnv'.
2025/04/15 13:51:21 CLSRSC-363: User ignored prerequisites during installation
2025/04/15 13:51:21 CLSRSC-594: Executing installation step 3 of 19: 'CheckFirstNode'.
2025/04/15 13:51:23 CLSRSC-594: Executing installation step 4 of 19: 'GenSiteGUIDs'.
2025/04/15 13:51:24 CLSRSC-594: Executing installation step 5 of 19: 'SetupOSD'.
2025/04/15 13:51:24 CLSRSC-594: Executing installation step 6 of 19: 'CheckCRSConfig'.
2025/04/15 13:51:24 CLSRSC-594: Executing installation step 7 of 19: 'SetupLocalGPNP'.
2025/04/15 13:51:37 CLSRSC-594: Executing installation step 8 of 19: 'CreateRootCert'.
2025/04/15 13:51:40 CLSRSC-594: Executing installation step 9 of 19: 'ConfigOLR'.
2025/04/15 13:51:44 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
2025/04/15 13:51:50 CLSRSC-594: Executing installation step 10 of 19: 'ConfigCHMOS'.
2025/04/15 13:51:50 CLSRSC-594: Executing installation step 11 of 19: 'CreateOHASD'.
2025/04/15 13:51:54 CLSRSC-594: Executing installation step 12 of 19: 'ConfigOHASD'.
2025/04/15 13:51:54 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
2025/04/15 13:52:15 CLSRSC-594: Executing installation step 13 of 19: 'InstallAFD'.
2025/04/15 13:52:19 CLSRSC-594: Executing installation step 14 of 19: 'InstallACFS'.
2025/04/15 13:52:23 CLSRSC-594: Executing installation step 15 of 19: 'InstallKA'.
2025/04/15 13:52:27 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'.

ASM has been created and started successfully.

[DBT-30001] Disk groups created successfully. Check /u02/app/grid_base/cfgtoollogs/asmca/asmca-250415PM015257.log for details.

2025/04/15 13:53:51 CLSRSC-482: Running command: '/u02/app/19c/grid/bin/ocrconfig -upgrade grid oinstall'
CRS-4256: Updating the profile
Successful addition of voting disk 0280a707590c4f24bff173adba9e12b3.
Successful addition of voting disk ee87ff2812104f2fbfa96ab0bb920e7f.
Successful addition of voting disk feb95504ed654ff2bf2b7132acfb85ec.
Successfully replaced voting disk group with +OCR.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   0280a707590c4f24bff173adba9e12b3 (/dev/oracleasm/disks/OCR01) [OCR]
 2. ONLINE   ee87ff2812104f2fbfa96ab0bb920e7f (/dev/oracleasm/disks/OCR02) [OCR]
 3. ONLINE   feb95504ed654ff2bf2b7132acfb85ec (/dev/oracleasm/disks/OCR03) [OCR]
Located 3 voting disk(s).
2025/04/15 13:55:10 CLSRSC-594: Executing installation step 17 of 19: 'StartCluster'.
2025/04/15 13:56:09 CLSRSC-343: Successfully started Oracle Clusterware stack
2025/04/15 13:56:09 CLSRSC-594: Executing installation step 18 of 19: 'ConfigNode'.
2025/04/15 13:57:32 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'.
2025/04/15 13:57:55 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded
[root@node-1 ~]#


Node-2:
===============

[root@node-2 ~]# /u02/app/19c/grid/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u02/app/19c/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.
Relinking oracle with rac_on option
Using configuration parameter file: /u02/app/19c/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u02/app/grid_base/crsdata/node-2/crsconfig/rootcrs_node-2_2025-04-15_02-00-32PM.log
2025/04/15 14:00:40 CLSRSC-594: Executing installation step 1 of 19: 'SetupTFA'.
2025/04/15 14:00:40 CLSRSC-594: Executing installation step 2 of 19: 'ValidateEnv'.
2025/04/15 14:00:40 CLSRSC-363: User ignored prerequisites during installation
2025/04/15 14:00:40 CLSRSC-594: Executing installation step 3 of 19: 'CheckFirstNode'.
2025/04/15 14:00:41 CLSRSC-594: Executing installation step 4 of 19: 'GenSiteGUIDs'.
2025/04/15 14:00:41 CLSRSC-594: Executing installation step 5 of 19: 'SetupOSD'.
2025/04/15 14:00:41 CLSRSC-594: Executing installation step 6 of 19: 'CheckCRSConfig'.
2025/04/15 14:00:41 CLSRSC-594: Executing installation step 7 of 19: 'SetupLocalGPNP'.
2025/04/15 14:00:42 CLSRSC-594: Executing installation step 8 of 19: 'CreateRootCert'.
2025/04/15 14:00:42 CLSRSC-594: Executing installation step 9 of 19: 'ConfigOLR'.
2025/04/15 14:00:46 CLSRSC-594: Executing installation step 10 of 19: 'ConfigCHMOS'.
2025/04/15 14:00:46 CLSRSC-594: Executing installation step 11 of 19: 'CreateOHASD'.
2025/04/15 14:00:47 CLSRSC-594: Executing installation step 12 of 19: 'ConfigOHASD'.
2025/04/15 14:00:47 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
2025/04/15 14:01:02 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
2025/04/15 14:01:05 CLSRSC-594: Executing installation step 13 of 19: 'InstallAFD'.
2025/04/15 14:01:06 CLSRSC-594: Executing installation step 14 of 19: 'InstallACFS'.
2025/04/15 14:01:07 CLSRSC-594: Executing installation step 15 of 19: 'InstallKA'.
2025/04/15 14:01:08 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'.
2025/04/15 14:01:16 CLSRSC-594: Executing installation step 17 of 19: 'StartCluster'.
2025/04/15 14:01:57 CLSRSC-343: Successfully started Oracle Clusterware stack
2025/04/15 14:01:57 CLSRSC-594: Executing installation step 18 of 19: 'ConfigNode'.
2025/04/15 14:02:07 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'.
2025/04/15 14:02:12 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded
[root@node-2 ~]#

Finish Grid Installation:

Finish Grid Installation
[grid@node-1 grid]$ ./gridSetup.sh
Launching Oracle Grid Infrastructure Setup Wizard...

The response file for this session can be found at:
 /u02/app/19c/grid/install/response/grid_2025-04-15_01-16-24PM.rsp

You can find the log of this install session at:
 /tmp/GridSetupActions2025-04-15_01-16-24PM/gridSetupActions2025-04-15_01-16-24P                                                                                    M.log
Moved the install session logs to:
 /u02/app/oraInventory/logs/GridSetupActions2025-04-15_01-16-24PM
[grid@node-1 grid]$

Check the Cluster services status:

[root@node-1 ~]# ps -ef | grep pmon
grid       69424       1  0 13:55 ?        00:00:00 asm_pmon_+ASM1
root      145736  145023  0 16:35 pts/1    00:00:00 grep --color=auto pmon
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# ps -ef | grep tns
root          40       2  0 Apr14 ?        00:00:00 [netns]
grid       70575       1  0 13:56 ?        00:00:01 /u02/app/19c/grid/bin/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit
grid       71064       1  0 13:57 ?        00:00:00 /u02/app/19c/grid/bin/tnslsnr LISTENER_SCAN2 -no_crs_notify -inherit
grid       71086       1  0 13:57 ?        00:00:00 /u02/app/19c/grid/bin/tnslsnr LISTENER_SCAN3 -no_crs_notify -inherit
grid       72873       1  0 13:57 ?        00:00:00 /u02/app/19c/grid/bin/tnslsnr LISTENER -no_crs_notify -inherit
root      145767  145023  0 16:35 pts/1    00:00:00 grep --color=auto tns
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# . oraenv
ORACLE_SID = [root] ? +ASM1
The Oracle base has been set to /u02/app/grid_base
[root@node-1 ~]#
[root@node-1 ~]#
[root@node-1 ~]# cd /u02/app/19c/grid/bin
[root@node-1 bin]#
[root@node-1 bin]#
[root@node-1 bin]# ./crsctl status res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       node-1                 STABLE
               ONLINE  ONLINE       node-2                 STABLE
ora.chad
               ONLINE  ONLINE       node-1                 STABLE
               ONLINE  ONLINE       node-2                 STABLE
ora.net1.network
               ONLINE  ONLINE       node-1                 STABLE
               ONLINE  ONLINE       node-2                 STABLE
ora.ons
               ONLINE  ONLINE       node-1                 STABLE
               ONLINE  ONLINE       node-2                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       node-1                 STABLE
      2        ONLINE  ONLINE       node-2                 STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node-2                 STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       node-1                 STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       node-1                 STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       node-1                 STABLE
      2        ONLINE  ONLINE       node-2                 STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       node-1                 Started,STABLE
      2        ONLINE  ONLINE       node-2                 Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       node-1                 STABLE
      2        ONLINE  ONLINE       node-2                 STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       node-1                 STABLE
ora.node-1.vip
      1        ONLINE  ONLINE       node-1                 STABLE
ora.node-2.vip
      1        ONLINE  ONLINE       node-2                 STABLE
ora.qosmserver
      1        ONLINE  ONLINE       node-1                 STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       node-2                 STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       node-1                 STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       node-1                 STABLE
--------------------------------------------------------------------------------
[root@node-1 bin]#

Run ASM Configuration Assistant to create ASM Disk Groups:

[grid@node-1 ~]$ . oraenv
ORACLE_SID = [grid] ? +ASM1
The Oracle base has been set to /u02/app/grid_base
[grid@node-1 ~]$
[grid@node-1 ~]$
[grid@node-1 ~]$ asmca
ASM Configuration Assistant

Create Disk Group:

Disk Groups

Create DATA Disk Group:

Create DATA Disk Group

RECO Disk Group:

Create RECO Disk Group

Disk Groups creation completed:

Disk Groups creation completed

Install Oracle Database 19c software only:

[oracle@node-1 ~]$ cd /u01/app/oracle/product/19c/dbhome_1
[oracle@node-1 dbhome_1]$
[oracle@node-1 dbhome_1]$
[oracle@node-1 dbhome_1]$ export CV_ASSUME_DISTID=OEL8
[oracle@node-1 dbhome_1]$
[oracle@node-1 dbhome_1]$
[oracle@node-1 dbhome_1]$ ./runInstaller
Launching Oracle Database Setup Wizard...

Configuration Option:

Configuration Option

Select Database Installation Option:

Select Database Installation Option

Select List of Nodes:

Select List of Nodes

Choose Database Edition:

Select Database Edition

Specify Installation Location:

Specify Installation Location

Privileged Operating System groups:

Privileged Operating System groups

Root script execution configuration:

Root script execution configuration

Oracle Binary Installation Summary:

Oracle Binary Installation Summary

Installation Progress status:

Installation is in Progress

Execute Configuration scripts:

Execute Configuration scripts
Node-1:
=====================

[root@node-1 ~]# /u01/app/oracle/product/19c/dbhome_1/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/19c/dbhome_1

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.
[root@node-1 ~]#


Node-2:
==================

[root@node-2 ~]# /u01/app/oracle/product/19c/dbhome_1/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/19c/dbhome_1

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.
[root@node-2 ~]#

Oracle Binary Installation Finish:

Oracle Binary Installation Finish
[oracle@node-1 dbhome_1]$ ./runInstaller
Launching Oracle Database Setup Wizard...

The response file for this session can be found at:
 /u01/app/oracle/product/19c/dbhome_1/install/response/db_2025-04-15_05-19-00PM.rsp

You can find the log of this install session at:
 /u02/app/oraInventory/logs/InstallActions2025-04-15_05-19-00PM/installActions2025-04-15_05-19-00PM.log
[oracle@node-1 dbhome_1]$

Create a RAC Database:

[oracle@node-1 ~]$ export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$ export CV_ASSUME_DISTID=OEL8
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$ cd $ORACLE_HOME/bin
[oracle@node-1 bin]$
[oracle@node-1 bin]$
[oracle@node-1 bin]$ ./dbca

Database Operation:

Select Database Operation

Database Creation Mode:

Select Database Creation Mode

Select Database Deployment Type:

Select Database Deployment Type

Select List of Nodes:

Select List of Nodes

Specify Database Identification Details:

Specify Database Identification Details

Database Storage Option:

Select Database Storage Option

Fast Recovery Option:

Select Fast Recovery Option

Oracle Data Vault Config Option:

Select Oracle Data Vault Config Option

Specify Configuration Options:

Specify Configuration Options

Specify Management Options:

Specify Management Options

Database User Credentials:

Specify Database User Credentials

Select Database Creation Option:

Select Database Creation Option

Database Creation Summary:

Database Creation Summary

Installation Progress Page:

Installation Progress Page

Database Creation Finish Page:

Database Creation Finish Page

Check Database status:

[oracle@node-1 ~]$ . oraenv
ORACLE_SID = [oracle] ? PROD1
The Oracle base has been set to /u01/app/oracle
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$ srvctl config database -d PROD
Database unique name: PROD
Database name: PROD
Oracle home: /u01/app/oracle/product/19c/dbhome_1
Oracle user: oracle
Spfile: +DATA/PROD/PARAMETERFILE/spfile.268.1198540007
Password file: +DATA/PROD/PASSWORD/pwdprod.256.1198539579
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: RECO,DATA
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: oinstall
OSOPER group: oinstall
Database instances: PROD1,PROD2
Configured nodes: node-1,node-2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$ srvctl status database -d PROD -v
Instance PROD1 is running on node node-1. Instance status: Open.
Instance PROD2 is running on node node-2. Instance status: Open.
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$
[oracle@node-1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Apr 16 00:03:14 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>
SQL> set lines 400 pages 400
SQL> select name, db_unique_name, database_role, open_mode, instance_name, log_mode from gv$database,gv$instance;

NAME      DB_UNIQUE_NAME  DATABASE_ROLE    OPEN_MODE            INSTANCE_NAME    LOG_MODE
--------- --------------- ---------------- -------------------- ---------------- ------------
PROD      PROD            PRIMARY          READ WRITE           PROD1            ARCHIVELOG
PROD      PROD            PRIMARY          READ WRITE           PROD1            ARCHIVELOG
PROD      PROD            PRIMARY          READ WRITE           PROD2            ARCHIVELOG
PROD      PROD            PRIMARY          READ WRITE           PROD2            ARCHIVELOG

SQL>

Now your Oracle 19c RAC Grid and Database installation has been successfully completed.

I hope my written content will helped you. Your suggestions/feedback are most welcome from orakldba.com. Keep learning… Have a great day!!!
Please comment here for your any query related to above content. You can write to mail me through my Email.

Email :- orakldba@gmail.com
LinkedIn :- https://linkedin.com/in/prasantakirtaniya
Twitter :- https://twitter.com/prasantadba
Facebook Page :- https://www.facebook.com/orakldba
Website :- https://orakldba.com
ACE Profile :- https://ace.oracle.com/apex/ace/profile/prasantakirtaniya
Oracle Community :- https://community.oracle.com/customerconnect/profile/discussions/prasantakirtaniya

2 thoughts on “Oracle 19c RAC Installation Steps on Linux 8”

Leave a Comment