RAC 19c INSTALLATION Complete Guide (step-by step Implementation)

 1. Introduction

Oracle Real Application Clusters (RAC) is an advanced database clustering technology that allows multiple servers (nodes) to access and run a single shared Oracle database. By enabling several nodes to operate together as one unified system, Oracle RAC provides high availability, fault tolerance, scalability, and load balancing for mission-critical environments.


In a RAC configuration, if one node fails, the remaining nodes continue to operate without interrupting database services, ensuring continuous availability. As workloads increase, additional nodes can also be added to scale the system horizontally, supporting growing performance demands.

This document presents a complete, step-by-step guide for installing and configuring Oracle Database 19c RAC on a two-node Oracle Linux 7.9 environment running on VMwareWorkstation15.5.
It covers the entire setup process—from preparing the operating system, configuring networks and shared storage, installing Grid Infrastructure, setting up ASM disk groups, and finally creating the RAC database.

This guide is designed to be clear, practical, and easy to follow, making it suitable for beginners, administrators, and professionals who want to learn or implement a fully functional Oracle RAC 19c environment.



2. Environment Overview

2.1 Cluster Configuration

Component                          

Details

Cluster Type

Oracle Real Application Clusters (RAC)

Nodes

2-node RAC (node1 & node2)

Oracle Database Version

19.16 (Enterprise Edition)

Grid Infrastructure Version

19.16

Storage

ASM (Automatic Storage Management)

Database Type

Container Database (CDB) with PDB

PDB Name

prods

Database Name

prod

DB_UNIQUE_NAME

PROD

ASM Disk Groups

DATA, FRA, OCR

 

2.2 Node-1 Details

Parameter

Value

Platform

Oracle Enterprise Linux Server release 7.9

Server Name

node1.localdomain

Server IP

192.168.18.11

DB Version

Oracle 19.16 – 2 Node RAC

File System

+ASM1 (Automatic Storage Management)

ORACLE_SID

prod1

Database Name

prod

Multitenancy

CDB with PDB: prods

DB_UNIQUE_NAME

PROD

Oracle Home Path

/u01/app/oracle/product/19/db_1

GRID Home Path

/u01/app/19/grid

 

2.3 Node-2 Details

Parameter

Value

Platform

Oracle Enterprise Linux Server release 7.9

Server Name

node2.localdomain

Server IP

192.168.18.12

DB Version

Oracle 19.16 – 2 Node RAC

File System

+ASM2 (Automatic Storage Management)

ORACLE_SID

prod2

Database Name

prod

Multitenancy

CDB with PDB: prods

DB_UNIQUE_NAME

PROD

Oracle Home Path

/u01/app/oracle/product/19/db_1

GRID Home Path

/u01/app/19/grid



3. Prerequisites

3.1 Hardware Requirements

   Server Nodes (Each Node)

  • Minimum 8 GB RAM (Recommended: 16 GB+)
  • 2 vCPUs or more
  • 100 GB OS disk
  • 2 Network Adapters:
    • Public Network – Client access
    • Private Network – Interconnect (cluster heartbeat)

     Shared Storage (Visible to Both Nodes)

Disk Purpose

Size

Redundancy

OCR + Voting Disk

10–20 GB

External redundancy

DATA

50–100 GB

External redundancy

FRA

20–40 GB

External redundancy

3.2 Network Requirements

  Each node must have:

  Public Network (eth0):

  • Public hostname
  • Public IP

   Example:

  • Node1: node1.localdomain (192.168.18.11)
  • Node2: node2.localdomain (192.168.18.12)

Private Interconnect (eth1):

  For RAC heartbeats

    Example:

  • Node1: node1-priv.localdomain (192.168.1.11)
  • Node2: node2-priv.localdomain (192.168.1.12)

Virtual IPs (VIPs):

    Required for failover

  • Node1 VIP: node1-vip.localdomain (192.168.18.13)
  • Node2 VIP: node2-vip.localdomain (192.168.18.14)

SCAN IPs:

    3 SCAN IPs (recommended)

     Example:

  • scan1: 192.168.18.15
  • scan2: 192.168.18.16
  • scan3: 192.168.18.17

     SCAN must resolve via DNS.


4. Download Required Oracle Software

You may download all the required Oracle software—Grid Infrastructure and Oracle Database Home (DB Home)—from the provided link. These installation files contain the essential components needed to configure Oracle Clusterware, ASM (Automatic Storage Management), and the Oracle Database software required for setting up the 19c RAC environment. Ensure that you download the correct versions for Linux and verify file integrity before starting the installation process.

  Link :- Oracle Database 19c Download for Linux x86-64 | Oracle Türkiye

-------- Download the two ZIP files shown in the picture by clicking the link above --------


Installation has 6 phases:

• Installing the Operating System and Preparing the Servers

• Configuring the Disks with Oracleasm

• Installation Phase 1- Installing Grid

• Installation Phase 2- Installing Oracle Software

• Installation Phase 3- Adding Disk Group with asmca

• Installation Phase 4- Creating Database with DBCA

5. Installing the Operating System and Preparing the Servers

The operating system Oracle Linux 7.9 has been installed on VMware 15.5. You may continue using the server on which this OS has been installed to proceed with the RAC setup.


Upon booting the server, update the operating system and download the packages needed in the installation.

 

# yum -y update

# yum install -y oracle-database-preinstall-19c.x86_64

# yum install -y oracleasm-support

# yum install -y dnsmasq*

 

Change the hostname :

# vi /etc/hostname

 

Disable "Secure Linux" :

# vi /etc/selinux/config

SELINUX=disabled

 

Stop and disable “Firewall” service :

# systemctl stop firewalld.service

# systemctl disable firewalld.service

 

 

Create the folder indexes. To move the files needed in the installation, I create an index named “/u01/oraInstall”. If you wish, you can move installation files somewhere else.

# mkdir -p /u01/app/19/grid

# mkdir -p /u01/app/oracle/product/19/db_1

# mkdir -p /u01/oraInstall

# chown -R oracle:oinstall /u01

# chmod -R 775 /u01

 

Change the password of the Oracle user.

# passwd oracle

 

 

We’ll add 2 ethernet cards to our server, that’s why we shut down the server.

# shutdown -h now

 

Click "Edit virtual machine settings".






Click “Add”.

 

 

Select “Network Adapter” and click “Finish”.

 

Add 2 ethernet cards in the same way too and adjust both as “host-only”.


 

 

 

 

 

 

 

 

 

 

 

 

Boot the server.

Ethernet cards are added to the server as “ens36” and “ens37”. Click “connect” for both of them.

 

Manage settings for “ens36”. This card will be used for “public network”.

 

Manage settings for “ens37”. This card will be used for “private network”.

 

edit the file /etc/hosts.

# vi /etc/hosts

 

Reboot the server.

# reboot

 

Since we’ll set up a small scaled system or a test environment, we’ll use “dnsmasq” for the name resolution service. First, enable “dnsmasq” service in order to boot the service automatically when the server is rebooted.

# systemctl enable dnsmasq

Then, add the line below to the end of the file /etc/dnsmasq.conf.

# vi /etc/dnsmasq.conf

local=/localdomain/

 

In the servers which will do name resolution, enter the server address where you’ve configured “dnsmasq” to the /etc/resolv.conf file.

Since we’ve configured “dnsmasq” on the Node 1, edit and lock the file as in the picture.

# chattr +i /etc/resolv.conf

Reboot the server.

# reboot

Check the resolution of scan IPs.

# nslookup rac-scan

 

# shutdown -h now


Network configuration is done for the first server and by cloning the first, we’ll create the second server. Then, we’ll add the disks that can be seen jointly by the servers. I’ve created a folder named “ORACLE SHARED FOLDER” in the index where virtual machines are installed, I’ll create the disks here. You may create them wherever you want. I introduce the folder I’ve created as the way the first server can see it.

Click “Next” and continue.

 

Select the index where you’ve created the folder.

 

Select “Enable this share”.

 

You’ve created the folder. Now, clone the machine you’ve configured.

 


 

 

 

 

 

 

 

 

 

 

 










 

 



 

Upon cloning, boot the server and change the hostname.

# vi /etc/hostname



 


Edit IP addresses of the server.

Manage the settings for "ens36".



Manage the settings for “ens37”.

 

Reboot the server.

# reboot

Check if the second server too does name resolution.

# nslookup rac-scan

 

Check the communication between the servers.

In the 1st server:

# ping node2

# ping node2-priv

 

In the 2nd server:

# ping node1

# ping node1-priv

 

 

Add the disks that are shared and visible to both servers to the folder you created earlier. Since we will create three ASM disk groups, add the following disks:

  • 20 GB disk for OCR + Voting (OCRVD)
  • 30 GB disk for DATA
  • 20 GB disk for FRA (RECO)

After attaching the disks, shut down both servers before proceeding with the RAC installation.

Shut down both servers.

# shutdown -h now

 

Click “Edit virtual machine settings”.



 



Click “Add” and then “Hard Disk”.

Select “NVME”.

Create a new virtual disk and continue.

 

Click “Allocate all disk space now” and “Next”.

 

I create the first disk named “OCRVD” in the folder I’ve created before.

 

We’ve created the first disk, let’s add two more disk named “DATA” & “RECO” in that index in the same way.

We’ve added the disks for the first server. Add those disks for the Second server too. Click “Edit virtual machine settings”.

Upon clicking “Add”, select “Hard Disk”.

 

Select “NVME”.

Click “Use an existing virtual disk”.

 

Choose the disk you’ve added before and continue by clicking “Finish”.

Do the same for the other disks too.

In RAC, both servers should be able to write disks. When you boot one of the servers, VMware will automatically lock the disks you’ve added and prevent the other server from booting. To refrain from that situation, you need to make some arrangements in the index where virtual servers are in.

Open the files “RAC19cNode1.vmx” and “RAC19cNode2.vmx” with notepad++ in the index where virtual servers are installed and add the lines below to the end.


disk.locking = "FALSE"

diskLib.dataCacheMaxSize = "0"

disk.enableuuid = "TRUE"

bios.bootdelay = "8000"


6. Configuring the Disks with Oracleasm

Check the disks you’ve added.

# ls -al /dev/nvme*

 

The disks “nvme0n1”, “nvme0n2”, and “nvme0n3” are the shared virtual disks that we attached earlier for RAC storage. These disks will be used to create the ASM disk groups (OCR/Voting, DATA, and FRA). Before they can be used by ASM, we must create partitions on them.


We will perform the partitioning using the fdisk command, and this step needs to be done only on the first server. After partitioning on node1, the updated disk labels will automatically be visible on node2 because the disks are shared between both nodes.

 

 

Partitioning nvme0n1 :

 

Partitioning nvme0n2 :

 

 

Partitioning nvme0n3 :


You see the partitions created as “nvme0n1p1”, “nvme0n2p1”, and “nvme0n3p1”

# ls -al /dev/nvme*

Next, configure the Oracle ASM Library (ASMLib), which provides a consistent and reliable interface for managing disks used by Oracle Automatic Storage Management. After configuring ASMLib, the shared disks must be stamped or marked so Oracle can recognize them as ASM-compatible devices.


Stamping the disks assigns them unique ASM labels, allowing Grid Infrastructure to identify and use them correctly when creating the OCR/Voting, DATA, and FRA disk groups.

Configure Oracleasm.

1st Server (node 1) :

# oracleasm configure -i



Check the parameters.

# oracleasm configure

 

# oracleasm init

 

# oracleasm createdisk OCRVD /dev/nvme0n1p1

# oracleasm createdisk DATA /dev/nvme0n2p1

# oracleasm createdisk RECO /dev/nvme0n3p1

# oracleasm scandisks

# oracleasm listdisks

 

2nd Server (node 2) :

# oracleasm configure -i

 

# oracleasm init

 

# oracleasm scandisks

# oracleasm listdisks


Transfer Installation Files to the Linux Server

After downloading the required Oracle installation files in Step 4 (Grid Infrastructure and Oracle Database Home), transfer them from your Windows machine to Node 1 only using WinSCP.

1.    Open WinSCP and connect to Node 1 using the oracle user.

2.    Navigate to the desired folder on the Linux server (example: /u01/oraInstall or any folder you created for installation files).

3.    Upload the downloaded zip files:

·  Grid Infrastructure installation file

·  Oracle Database Home installation file

There is no need to copy the files to Node 2.

Since this is a RAC installation, the setup process will automatically copy the required components from Node 1 to Node 2 during Grid and Database installation.

This ensures that only one node holds the installation media while the RAC installer handles the distribution across the cluster.

# chmod 777 /u01/oraInstall/LINUX*

 

Switch to Oracle user and create profile files.

1st Server:

# su - oracle

$ vi .profile_grid

$ vi .profile_db

2nd Server:

# su - oracle

$ vi .profile_grid

$ vi .profile_db

Upon creating the profiles, start chrony service on both servers.

# systemctl enable chronyd

# systemctl restart chronyd


7. Installation Phase 1- Installing Grid

Unzip with the Oracle user.

$ unzip LINUX.X64_193000_grid_home.zip -d /u01/app/19/grid/

 

After unzip is Done. Install “cvuqdisk” with root user. (on both servers)

# rpm -Uvh cvuqdisk-1.0.10-1.rpm

 

Since we unzipped in the first server, “cvuqdisk rpm” isn’t in the second server. That’s why we send it with scp and install.

# scp cvuqdisk-1.0.10-1.rpm root@node2:/tmp

 

 

Go to index /tmp in the 2nd server and install.

# cd /tmp

# rpm -Uvh cvuqdisk-1.0.10-1.rpm

 

Before starting the installation, enable the GUI by setting export DISPLAY=:0 and allow root access with xhost +.

 

On the first server, reboot the system before beginning. Log in as the Oracle user, set up the Grid environment by sourcing the profile script, and then start the installation.

$ . .profile_grid

$ cd /u01/app/19/grid






$ ./gridSetup.sh


Start the installation by clicking “Configure Oracle Grid Infrastructure for a New Cluster”.

 

Click “Configure an Oracle Standalone Cluster”.

Choose names for Cluster and Scan. Cluster name shouldn’t be longer than 15 characters, otherwise you encounter fault during installation. (Root.sh step 16)

 

Add the information of the 2nd server.

click “Setup”. Test SSH connectivity.

 

Define the network configuration. I’ve told you before that we’ll use public network for “ens36” and private network for “ens37”.

 

Click “Use Oracle Flex ASM for storage”.

Click “No”.

 

Choose the index, where you’ve defined the disks, with Change Discovery Path. Make the Disk Group Name OCRVD. Select External in Redundancy.

High Redundancy: Data is stored with 3 different copies. No data loss even 2 groups crash.

Normal Redundancy: Data is stored with 2 different copies. No data loss even the other group crashes.

External Redundancy: Data is stored with only a copy. It’s better if you store systems in normal redundancy disk groups.

Choose the passwords. You can choose a different password, I’ll use the same.

 

Click “Do not use Intelligent Platform Management Interface (IPMI)”.

Click “Next” since we won’t use EM Cloud Control.

 

Adjust the groups.

Check if the Oracle Base index is correct.

 

Click “Next”.

I suggest running the scripts manually but since this is a test environment, we’ll run them automatically.

 

No problem seen in pre-check.

Click “Install” and start the installation.

It asks for permission to run the scripts automatically. Click “Yes” and allow it.

This is how installing Grid ends.    

Next, verify the Grid Infrastructure status by running:

$ crsctl stat res -t

This command displays the Clusterware resource status in a tree format. It shows the state of essential cluster components such as:

  • Cluster Synchronization Services (CSS)
  • Cluster Ready Services (CRS)
  • ASM instance
  • Network, SCAN, and Listener resources
  • VIPs and other cluster-managed services

If everything is configured properly, you will see resources running on both nodes with status ONLINE, confirming that your Grid Infrastructure is functioning correctly.

8. Installation Phase 2- Installing Oracle Software

Unzip with the Oracle user.

$ unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19/db_1

 

After unzip is Done . set up the db environment by sourcing the profile script, and then start the installation.

$ . .profile_db

$ cd /u01/app/oracle/product/19/db_1

$ ./runInstaller

Click “Software only”.

Click “Oracle Real Application Clusters database installation”.

 

Be sure that both servers are selected and click “Next”.

Click “Enterprise Edition”.

 

Be sure that software location is the “/u01/app/oracle/product/19/db_1” index.

Click “Next”.

 

Write the root password to run the scripts automatically.

Click “Install”.

 

Approve to run the scripts automatically.

Finish the software installation by clicking “Close”.


9. Installation Phase 3- Adding Disk Group with asmca

creating the disk groups required for the RAC database, we will use the ASM Configuration Assistant (asmca) tool. This utility allows us to graphically create and manage ASM disk groups such as DATA and FRA.

Before launching asmca, ensure that the correct Grid Infrastructure environment is loaded. To do this, log in as the oracle user and source the .profile_grid file:

 

$ . .profile_grid

$ asmca

 

Once the environment is set, you will be ready to start asmca to create the ASM disk groups that will store the database files.

 

 

As you see, we have one disk group which we created during grid installation.

 

Right click “Disk Groups” and click “Create”.

I name the disk group as “DATA” & “RECO” where we’ll create the database. You can name it however you want. Add the disk you’ve configured with Oracleasm before. Click “OK”.

 

We’ve created the disk group. You can view disk groups as in the picture. Click “Exit” and leave the asmca tool.


10. Installation Phase IV- Creating Database with DBCA

you must load the Database Home environment using the .profile_db file. Once the database environment variables are active, you can start the Database Configuration Assistant (DBCA) to create the RAC database:

 

$ . .profile_db

$ dbca


 


The DBCA tool will guide you through the graphical interface to configure a two-node RAC database, including selecting the database name, storage options (ASM), character set, memory settings, and pluggable database (PDB) configuration.

Click “Create a database”.

 

Click “Advanced Configuration”.

Click “General Purpose or Transaction Processing” and click “Next”.

 

Be sure that servers are selected and click “Next”.

 

You need to name the database and adjust sid value. We chose both as ‘prod’.  Click “Create as Container database” name PDB as ‘prods’ and continue.

Select “+DATA” which is a disk group we’ve added.

Enable “Archiving” and Select “FRA”.

 

Since we’ll not use “DB Vault” and “Label Security”, click “Next”.

We’ll continue by using ASSM, if you wish you can use something else in accordance with your system. What’s important is that, the value shouldn’t exceed two third of the physical RAM value of the server.

 

You may activate the “HR” schema if you wish. Click “Next”.

Continue because we won’t use cloud control.

Choose the passwords for “SYS” and “SYSTEM”.

 

Select “Create Database”.

Click “Finish” and start the installation.

Click “Close” and finish the installation.

11. Final Status Verification


12. Summary

In this deployment, a fully functional two-node Oracle Database 19c RAC environment was successfully installed and configured on Oracle Linux 7.9 hosted on VMware Workstation 15.5.

All major components were completed:

  • Operating system installation and preparation
  • Network configuration (Public, Private, VIP, SCAN)
  • Shared storage creation and ASM disk groups setup
  • Grid Infrastructure installation
  • Database Home installation
  • RAC database creation (CDB + PDB)
  • Environment profile setup
  • Validation and post-installation checks

The system is now operational, highly available, and ready for RAC workload testing or application deployment.