Admin

Oracle Peoplesoft

How to Set Up Oracle RAC 19c 2-Node Cluster on OEL 8 with Grid Infra 19c

Setup Oracle RAC 19c two-node cluster on OEL 8 using Grid Infrastructure 19c. Follow our guide for a robust, high-availability database.

By Someshwar ThakurPublished: June 14, 202611 min read8 views✓ Fact Checked
How to Set Up Oracle RAC 19c 2-Node Cluster on OEL 8 with Grid Infra 19c
How to Set Up Oracle RAC 19c 2-Node Cluster on OEL 8 with Grid Infra 19c

Overview

In the relentless pursuit of high availability, scalability, and robust performance for mission-critical applications, Oracle Real Application Clusters (RAC) stands as a cornerstone technology. As a senior technology writer at TechNews Venture, I've witnessed firsthand the transformative power of RAC across diverse enterprise landscapes, particularly within the Oracle Peoplesoft ecosystem where uptime and responsiveness are paramount. This article delves into the intricate process of setting up a two-node Oracle RAC 19c cluster on Oracle Linux 8 (OEL 8) using Grid Infrastructure 19c.

Oracle RAC allows multiple instances of an Oracle database to access a single database stored on shared storage. This architecture provides unparalleled fault tolerance, as the failure of one node does not bring down the entire database; other nodes can continue to serve requests. Furthermore, it offers linear scalability, enabling you to add more nodes to increase processing power and handle larger workloads without application changes. Oracle 19c, the "long-term support" release, brings enhanced performance, security, and manageability features, making it an ideal choice for modern enterprise deployments.

Oracle Linux 8, optimized and engineered specifically for Oracle products, provides a stable, secure, and high-performance foundation for your RAC cluster. Its integration with Unbreakable Enterprise Kernel (UEK) and systemd offers significant advantages in terms of resource management and system startup. Grid Infrastructure 19c, the prerequisite for RAC, encompasses Oracle Clusterware and Automatic Storage Management (ASM). Clusterware manages the cluster resources, monitors node health, and ensures high availability, while ASM provides a portable, high-performance, and easy-to-manage storage solution, abstracting the underlying physical disk complexities.

This guide aims to provide a comprehensive, step-by-step walkthrough, complete with real-world commands and configurations, to empower database administrators and architects to confidently deploy a resilient Oracle RAC 19c environment.

Prerequisites

A successful RAC deployment hinges on meticulous planning and preparation. Neglecting any of these prerequisites can lead to significant hurdles during installation or operational issues later. For our two-node cluster, let's assume the following configuration:

  • Nodes: racnode1.technews.local and racnode2.technews.local
  • Operating System: Oracle Linux 8 (64-bit)
  • Shared Storage: iSCSI LUNs (for ASM disk groups)
  • Software:
    • Oracle Grid Infrastructure 19c (19.3.0.0.0)
    • Oracle Database 19c (19.3.0.0.0)

Hardware Requirements (Minimum per Node)

  • CPU: 2 vCPUs
  • RAM: 8 GB (for Grid Infrastructure and one database instance)
  • Disk Space:
    • OS: 50 GB
    • Oracle Grid Infrastructure Home: 20 GB
    • Oracle Database Home: 20 GB
  • Network Interfaces:
    • One Public Network Interface (e.g., enp0s3)
    • One Private Interconnect Network Interface (e.g., enp0s8)

Network Configuration

Each node requires at least two network interfaces: one for public client access and VIPs, and another for private cluster interconnect communication. A highly available DNS setup is recommended for SCAN resolution, but for this guide, we'll use /etc/hosts for simplicity.

Name IP Address Purpose Node
racnode1-public 192.168.1.101 Public IP racnode1
racnode1-private 10.0.0.1 Private Interconnect racnode1
racnode1-vip 192.168.1.102 Virtual IP (Managed by Clusterware) racnode1
racnode2-public 192.168.1.111 Public IP racnode2
racnode2-private 10.0.0.2 Private Interconnect racnode2
racnode2-vip 192.168.1.112 Virtual IP (Managed by Clusterware) racnode2
rac-scan 192.168.1.120, 192.168.1.121, 192.168.1.122 Single Client Access Name (3 IPs required for HA) Cluster-wide

Operating System Preparation (on both nodes)

  • Install OEL 8: Perform a minimal installation.
  • Disable Firewall and SELinux (for simplicity in lab, enable and configure for production):
    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    sudo reboot
  • Install Pre-install RPM: This package configures kernel parameters, creates necessary users/groups, and installs dependencies.
    sudo dnf install -y oracle-database-preinstall-19c

    This RPM creates the oracle and grid users, and groups like oinstall, dba, asmadmin, asmdba, asmoper. The oracle user will be the primary for database software, and grid for Grid Infrastructure.

  • Configure /etc/hosts (on both nodes):
    sudo vi /etc/hosts

    Add the following entries, replacing with your actual IPs and hostnames:

    127.0.0.1       localhost localhost.localdomain
    ::1             localhost localhost.localdomain
    
    # Public IPs
    192.168.1.101   racnode1.technews.local racnode1
    192.168.1.111   racnode2.technews.local racnode2
    
    # Private Interconnect IPs
    10.0.0.1        racnode1-priv.technews.local racnode1-priv
    10.0.0.2        racnode2-priv.technews.local racnode2-priv
    
    # Virtual IPs (Managed by Clusterware)
    192.168.1.102   racnode1-vip.technews.local racnode1-vip
    192.168.1.112   racnode2-vip.technews.local racnode2-vip
    
    # SCAN IPs (Managed by Clusterware)
    192.168.1.120   rac-scan.technews.local rac-scan
    192.168.1.121   rac-scan.technews.local rac-scan
    192.168.1.122   rac-scan.technews.local rac-scan
  • Set Passwords for grid and oracle users:
    sudo passwd grid
    sudo passwd oracle
  • Configure SSH Equivalency (for grid user on both nodes):

    As grid user:

    su - grid
    ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
    ssh-copy-id racnode1.technews.local
    ssh-copy-id racnode2.technews.local

    Test SSH equivalency from racnode1 to racnode2 and vice-versa, and from each node to itself, without password prompts.

    ssh racnode1 date
    ssh racnode2 date
  • Create Installation Directories:
    sudo mkdir -p /u01/app/19.0.0/grid
    sudo mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
    sudo chown -R grid:oinstall /u01/app/19.0.0/grid
    sudo chown -R oracle:oinstall /u01/app/oracle/product/19.0.0/dbhome_1
    sudo chown -R oracle:oinstall /u01/app/oracle # This is for ORACLE_BASE
    sudo chmod -R 775 /u01/app
  • NTP Configuration: Ensure time synchronization across cluster nodes.
    sudo dnf install -y ntp
    sudo systemctl enable ntpd
    sudo systemctl start ntpd
    sudo ntpdate -u pool.ntp.org

    Verify synchronization: ntpq -p

Shared Storage (iSCSI Configuration)

For this setup, we'll simulate shared storage using iSCSI. You would typically have a dedicated iSCSI target server or SAN providing these LUNs. For our example, let's assume three LUNs are presented:

  • /dev/sdb (1 GB - for OCR/Voting Disks)
  • /dev/sdc (50 GB - for DATA disk group)
  • /dev/sdd (20 GB - for FRA disk group)

On both nodes, configure iSCSI initiator:

sudo dnf install -y iscsi-initiator-utils
sudo systemctl enable iscsid
sudo systemctl start iscsid

Discover and log in to iSCSI target (replace <ISCSI_TARGET_IP> with your iSCSI server IP):

sudo iscsiadm -m discovery -t st -p <ISCSI_TARGET_IP>
sudo iscsiadm -m node -L all

Verify that the disks /dev/sdb, /dev/sdc, /dev/sdd are visible using lsblk or fdisk -l.

Configure Oracle ASM Filter Driver (ASMFD) for persistent device naming: Oracle recommends ASMFD for 19c. This simplifies ASM disk management and ensures consistent device paths across reboots.

As grid user:

su - grid
export ORACLE_HOME=/u01/app/19.0.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
$ORACLE_HOME/bin/asmcmd afd_label DATA /dev/sdc --init
$ORACLE_HOME/bin/asmcmd afd_label FRA /dev/sdd --init
$ORACLE_HOME/bin/asmcmd afd_label OCR /dev/sdb --init

Verify labels on both nodes:

$ORACLE_HOME/bin/asmcmd afd_lslbl /dev/sd*

You should see output similar to:

--------------------------------------------------------------------------------
Label                     Duplicate  Path
================================================================================
OCR                       NO         /dev/sdb
DATA                      NO         /dev/sdc
FRA                       NO         /dev/sdd

ASMFD will automatically create persistent device names under /dev/oracle/asm/. You can list them:

ls -l /dev/oracle/asm/

Step-by-step Implementation

1. Grid Infrastructure Installation

Download the Oracle Grid Infrastructure 19c software (LINUX.X64_193000_grid_home.zip) from Oracle Support or eDelivery and place it in a temporary location, e.g., /tmp.

On racnode1 as grid user:

su - grid
unzip /tmp/LINUX.X64_193000_grid_home.zip -d /u01/app/19.0.0/grid
cd /u01/app/19.0.0/grid
./gridSetup.sh

The Oracle Universal Installer (OUI) GUI will launch. Follow these steps:

  1. Select Configuration Option: "Configure and Install Grid Infrastructure for a Cluster".
  2. Select Cluster Type: "Oracle Flex Cluster" (default for 19c, even for 2 nodes).
  3. Grid Infrastructure Management Repository: "Do not configure GIMR".
  4. Cluster Node Information:
    • Add both nodes: racnode1.technews.local and racnode2.technews.local.
    • Verify SSH connectivity.
  5. Network Interface Usage:
    • Public: Select your public interface (e.g., enp0s3) and set as "Public".
    • Private: Select your private interface (e.g., enp0s8) and set as "Private".
  6. ASM Disk Group:
    • For OCR and Voting Disks, select "CREATE NEW" and choose the ASMFD disk for OCR (e.g., /dev/oracle/asm/ocr).
    • Disk Group Name: +OCR_VOTE (or similar).
    • Redundancy: "External Redundancy" (since we have only one disk for this guide; for production, use "Normal" with at least 3 disks or "High" with 5 disks).
  7. ASM Password: Set a strong password for ASM SYS and ASMSNMP users.
  8. Failure Isolation: Leave default.
  9. Management Options: Leave default (no Cloud Control integration for now).
  10. Installation Location:
    • Oracle Base: /u01/app/grid
    • Software Location: /u01/app/19.0.0/grid
  11. Operating System Groups:
    • Oracle ASM Administrator Group: asmadmin
    • Oracle ASM DBA Group: asmdba
    • Oracle ASM Operator Group: asmoper
  12. Root script execution: Select "Automatically run configuration scripts". Provide root password.
  13. Prerequisite Checks: Resolve any warnings (e.g., NTP configuration, swap space if not handled by preinstall RPM).
  14. Summary: Review all selections and click "Install".

The installer will copy files, configure Clusterware, and run the root scripts on both nodes. This process can take a significant amount of time.

After installation, verify Grid Infrastructure status on both nodes:

su - grid
crsctl status resource -t

You should see all resources (ora.cssd, ora.diskmon, ora.evmd, ora.asm, ora.cluster_interconnect, ora.scan, ora.scanlistener, ora.net, ora.ons, ora.listeners, ora.proxy_advm, ora.registry.acfs, ora.gns - if configured) online and running.

crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.asm
      1        ONLINE  ONLINE       racnode1                 Started
      2        ONLINE  ONLINE       racnode2                 Started
ora.DATA.dg
      1        ONLINE  ONLINE       racnode1                 Mounted
      2        ONLINE  ONLINE       racnode2                 Mounted
...
ora.scan1.vip
      1        ONLINE  ONLINE       racnode1                 Started
ora.scan2.vip
      1        ONLINE  ONLINE       racnode2                 Started
ora.scan3.vip
      1        ONLINE  ONLINE       racnode1                 Started
...
ora.racnode1.vip
      1        ONLINE  ONLINE       racnode1                 Started
ora.racnode2.vip
      1        ONLINE  ONLINE       racnode2                 Started
--------------------------------------------------------------------------------

Create DATA and FRA Disk Groups using ASMCMD (as grid user):

su - grid
export ORACLE_HOME=/u01/app/19.0.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
asmcmd -p
ASMCMD> mkdg -i -p HIGH -o DATA --init-attr compatible.asm='19.0.0.0.0' /dev/oracle/asm/data
ASMCMD> mkdg -i -p HIGH -o FRA --init-attr compatible.asm='19.0.0.0.0' /dev/oracle/asm/fra
ASMCMD> ls -lt

This will create the +DATA and +FRA disk groups. Note: -p HIGH is for high redundancy, requiring at least 3 failure groups. For our lab, where we might use external redundancy for simplicity, omit -p HIGH and ensure your mkdg command matches your intended redundancy. If you only have one disk for DATA and one for FRA, you must use EXTERNAL redundancy.

ASMCMD> mkdg -i -p EXTERNAL -o DATA --init-attr compatible.asm='19.0.0.0.0' /dev/oracle/asm/data
ASMCMD> mkdg -i -p EXTERNAL -o FRA --init-attr compatible.asm='19.0.0.0.0' /dev/oracle/asm/fra

2. Oracle Database Software Installation

Download the Oracle Database 19c software (LINUX.X64_193000_db_home.zip) and place it in a temporary location, e.g., /tmp.

On racnode1 as oracle user:

su - oracle
unzip /tmp/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1
cd /u01/app/oracle/product/19.0.0/dbhome_1
./runInstaller

The OUI GUI will launch. Follow these steps:

  1. Select Configuration Option: "Set Up Software Only".
  2. Database Installation Option: "Oracle Real Application Clusters database installation".
  3. Database Edition: "Enterprise Edition".
  4. Oracle Home User: "Use existing Oracle Home User" (oracle).
  5. Installation Location:
    • Oracle Base: /u01/app/oracle
    • Software Location: /u01/app/oracle/product/19.0.0/dbhome_1
  6. Operating System Groups:
    • Database Administrator Group: dba
    • Database Backup and Recovery Group: backupdba (or dba)
    • Database Data Guard Administrative Group: dgdba (or dba)
    • Database KM Administrator Group: kmdba (or dba)
    • Real Application Clusters Group: racdba (or dba)
  7. Prerequisite Checks: Resolve any warnings.
  8. Summary: Review and click "Install".

After the file copying, the installer will prompt you to run the root script.

Execute root.sh as root on both nodes:

On racnode1:

sudo /u01/app/oracle/product/19.0.0/dbhome_1/root.sh

On racnode2:

sudo /u01/app/oracle/product/19.0.0/dbhome_1/root.sh

3. Database Creation

Now, let's create our Oracle RAC database using DBCA.

On racnode1 as oracle user:

su - oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
dbca

The Database Configuration Assistant (DBCA) GUI will launch. Follow these steps:

  1. Database Operation: "Create Database".
  2. Creation Mode: "Advanced configuration".
  3. Database Deployment Type: "Oracle Real Application Clusters database". Select both nodes.
  4. Database Type: "General Purpose or Transaction Processing".
  5. Database Identifiers:
    • Global Database Name: MYRACDB.technews.local
    • Oracle SID Prefix: MYRACDB
    • Check "Create as Container database" and "Create a pluggable database".
  6. Storage Type: "Automatic Storage Management (ASM)".
  7. Database Storage Attributes:
    • Use Oracle-Managed Files.
    • Specify Fast Recovery Area: Select +FRA disk group.
    • Data Storage: Select +DATA disk group.
  8. Database Options: Leave defaults or customize as needed.
  9. Initialization Parameters: Set memory, character sets, etc. For a lab, 800MB SGA and 400MB PGA per instance is a good start. Character set: AL32UTF8.
  10. Creation Options: Select "Create Database".
  11. Summary: Review and click "Finish".

DBCA will create the database, configure instances on both nodes, and set up services. This will take some time.

After database creation, verify status:

su - oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
srvctl status database -d MYRACDB

Expected output:

Instance MYRACDB1 is running on node racnode1
Instance MYRACDB2 is running on node racnode2

Also, check listener status:

lsnrctl status LISTENER_SCAN1

And individual node listeners:

lsnrctl status LISTENER

Connect to the database from a client using the SCAN name:

sqlplus sys/oracle@rac-scan:1521/MYRACDB.technews.local as sysdba

4. Post-Installation Checks and Basic Tests

It's crucial to perform sanity checks to ensure everything is functioning as expected.

  • Check Clusterware health:
    crsctl check cluster -all
  • Verify ASM disk groups:
    su - grid
    export ORACLE_HOME=/u01/app/19.0.0/grid
    export PATH=$ORACLE_HOME/bin:$PATH
    asmcmd lsdg
  • Test Failover:

    From racnode1, stop the instance on racnode2:

    srvctl stop instance -d MYRACDB -i MYRACDB2

    Verify that MYRACDB1 is still running and accessible. Then restart MYRACDB2.

    srvctl start instance -d MYRACDB -i MYRACDB2

    Alternatively, you can simulate a node failure by rebooting one node and observing how the cluster handles it. The VIPs and SCAN listeners should float to the surviving node, and the database instance on the failed node should be relocated or recovered.

A Note on Redundancy: In a production environment, you would never use "External Redundancy" for OCR/Voting Disks with a single disk. Oracle requires at least three voting disks for "Normal Redundancy" and five for "High Redundancy" to maintain quorum and protect against split-brain scenarios. Similarly, your DATA and FRA disk groups should ideally use "Normal" or "High" redundancy with multiple physical disks across different failure groups.

Security Considerations

Deploying a RAC cluster involves multiple layers of security considerations, from the operating system to the database itself. Neglecting these can expose your critical data and applications to significant risks.

  • Operating System Hardening:
    • Firewall: For production, do NOT disable

Written By

Someshwar Thakur

PS Admin, Cloud Architect, DBA

Sources & References

• Official company announcements and press releases

• Industry reports from Gartner, IDC, and Statista

• Peer-reviewed research and technical documentation

• On-record statements from industry experts

Last verified: June 14, 2026

Fact-checked by TechNews Venture editorial team

Leave a Comment

Comments are moderated and will appear after review.