Initialising Oracle RAC Lab Environment…
Overview
Environment
VM Setup
Users & Groups
Packages
Node 2 Clone
ASM Disks
Grid Install
RDBMS & DBCA
Outcome
DBA Playbook · Advanced Lab · Oracle RAC Implementation

Oracle RAC 2-Node Setup Lab Grid Infrastructure · ASM · Cluster Database

A complete hands-on implementation guide for building a 2-node Oracle Real Application Clusters (RAC) environment from scratch on VirtualBox. Walk through every stage: VM provisioning, OS setup, Grid Infrastructure installation, ASM configuration, and RAC database creation. Built for DBAs who want real cluster experience in a practice lab.

37+
Total Steps
Advanced
Difficulty
2-Node
RAC Cluster
19c
Oracle Version
RAC-2node illustration

Cluster Environment Overview

This lab builds a complete 2-node Oracle RAC cluster on VirtualBox using Oracle Linux and Oracle 19c. All components — Grid Infrastructure, ASM, networking, shared storage — are configured end-to-end.

🖥️
Cluster Nodes
2-Node RAC Cluster
🐧
Operating System
Oracle Linux 7.8 (64-bit)
🗄️
Oracle Version
Oracle 19c (19.0.0.0)
⚙️
Grid Infrastructure
Oracle GI 19c
💾
Storage Type
ASM — 4 Shared Disk Groups
🔌
Network — Public
Bridged Adapter (192.168.1.x)
🔗
Network — Private
Internal Network (10.2.1.x)
📡
VIP / SCAN
node1-vip, node2-vip, rac-scan
🗂️
ASM Disk Groups
DATA01 · DATA02 · FRA · OCR
🌐
Cluster Type
Oracle Flex Cluster
🔵
Hypervisor
Oracle VM VirtualBox
🔐
Environment
Practice / Training Lab

Oracle RAC Lab — Full Setup Guide

Follow every step in sequence. Each section covers a distinct cluster component — from initial VM setup through to a fully running RAC database.

Phase 1 — VM & Network Setup
SECTION 1.1
🖥️

VM Configuration — Node 1

Configure the VirtualBox VM for Node 1 with two network adapters. The first adapter provides public network connectivity; the second establishes the private RAC interconnect used for inter-node communication (cache fusion, cluster heartbeat).

📌 VM Network Adapter Setup
  • Adapter 1 — NAT or Bridged — for public network connectivity
  • Adapter 2 — Internal Network — for private RAC interconnect
  • Both nodes must share the exact same Internal Network name for the private interconnect to work
  • Verify the internal network name before powering on either node
📋 Recommended VM Specs (per Node)
  • RAM: 5120 MB (5 GB) minimum for Oracle RAC
  • CPU: 2 vCPUs per node
  • OS Disk: 150 GB (dynamically allocated)
  • OS: Oracle Linux 7.8 (64-bit)
SECTION 1.2
🐧

OS Installation — Node 1

Install Oracle Linux 7.8 on Node 1. During installation, select "Server with GUI" as the base environment and enable all required add-on package groups. After the installation completes, reboot and accept the license agreement to finish initial configuration.

📌 Installation Configuration Checklist
  • Base Environment: Server with GUI
  • Select all Add-Ons: Backup Server, DNS Name Server, E-Mail Server, FTP Server, File and Storage Server, Hardware Monitoring Utilities, Identity Management Server, Infiniband Support, Java Platform
  • Partitioning: Use Manual Partitioning — configure /home (20 GB), /u01 (50 GB), /u02 (44 GB), /var (8192 MB), /boot (8192 MB), / (15 GB), BIOS Boot (2048 KB)
  • Set root password and create oracle user during installation
  • Network & Host Name: Set hostname to node1.localdomain
  • After install completes — Reboot the machine, then accept the license and click "Finish Configuration"
SECTION 1.3
📦

Install VirtualBox Guest Additions

Install VirtualBox Guest Additions on Node 1 to enable shared folders and improved VM integration. This must be run as the root user, not as oracle or grid users.

bash — Node 1 (as root)
# Mount the Guest Additions ISO and run installer as root
# Note: Must be run as root user, not oracle or grid

sh /run/media/root/VBox_GAs_<version>/VBoxLinuxAdditions.run
📌 Key Notes
  • In VirtualBox menu: Devices → Insert Guest Additions CD Image first
  • A prompt may appear asking to auto-run — you can click "Run" or use the command above
  • Replace <version> with the actual VirtualBox version number
  • Reboot after installation for Guest Additions to take full effect
SECTION 1.4
🌐

Configure IP Addresses & /etc/hosts

Configure static IP addresses for both the public (enp0s3) and private (enp0s8) interfaces on Node 1. Then populate /etc/hosts on both nodes with all cluster entries — including public IPs, private IPs, VIPs, and SCAN IPs.

● NODE 1 — As root
bash — Configure Hostname
# Check and set hostname
hostname
hostname -i

# Edit hostname if needed
vi /etc/hostname
# Set to: node1.localdomain
/etc/hosts — Add on BOTH Nodes
# /etc/hosts entries — add on both nodes

##Public network
192.168.1.103    node1.localdomain  node1
192.168.1.104    node2.localdomain  node2

#Private network
10.2.1.11        node1-priv.localdomain  node1-priv
10.2.1.12        node2-priv.localdomain  node2-priv

#Virtual IP network (VIP)
192.168.1.115    node1-vip.localdomain  node1-vip
192.168.1.116    node2-vip.localdomain  node2-vip

#Scan IPs address
192.168.1.117    node-scan.localdomain  node-scan
192.168.1.118    node-scan.localdomain  node-scan
192.168.1.119    node-scan.localdomain  node-scan
Network Settings — Public Interface (enp0s3)
# Public interface — static IP configuration
IPv4 Method:  Manual
Address:      192.168.1.103
Netmask:      255.255.255.0
Gateway:      192.168.1.1
DNS:          192.168.1.1
Network Settings — Private Interface (enp0s8)
# Private interface — static IP (no gateway, no DNS)
IPv4 Method:  Manual
Address:      10.2.1.11
Netmask:      255.255.255.0
📌 Key Notes
  • Replace all placeholder IP addresses with your actual network values
  • SCAN (Single Client Access Name) requires at least one IP — three is recommended for production
  • Verify connectivity after configuration: hostname and hostname -i must return expected values
  • The private interconnect interface (enp0s8) must have no gateway configured
Phase 2 — OS Users, Groups & Directory Setup
SECTION 2.1
👤

Create Grid User & Required OS Groups

Oracle RAC requires two separate OS users: oracle (for the RDBMS software) and grid (for Grid Infrastructure and ASM). Both users must belong to the correct OS groups for cluster operations to function correctly.

● NODE 1 — As root
bash — Create grid user and OS groups
# Create grid user
useradd grid
passwd grid

# Create required groups
groupadd oinstall
groupadd asmadmin
groupadd asmdba
groupadd dba

# Assign groups to oracle user
usermod -g oinstall oracle
usermod -G asmdba,dba,asmadmin oracle

# Assign groups to grid user
usermod -g oinstall grid
usermod -G asmdba,dba,asmadmin grid

# Verify assignments
id oracle
id grid
SECTION 2.2
📁

Create Oracle Directory Structure

Create the required Oracle installation directories. ORACLE_HOME, GRID_BASE, and GRID_HOME must be separate locations with correct ownership and permissions. Mixing Grid and Oracle homes causes installation failures.

● NODE 1 — As root
bash — Create directories and set permissions
# Create required directories
mkdir -p /u01/app/oracle/product/19.0.0.0/dbhome_1   # ORACLE_HOME
mkdir -p /u01/app/grid                                 # GRID_BASE
mkdir -p /u01/app/19.0.0.0/grid                       # GRID_HOME

# Set ownership
chown oracle:oinstall -R /u01
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/19.0.0.0

# Set permissions
chmod -R 775 /u01
SECTION 2.3
🌿

Set Environment Variables — oracle & grid Users

Configure .bash_profile for both the oracle and grid users on both nodes. These variables ensure Oracle binaries can be located and that each node connects to the correct database instance. The ORACLE_SID suffix differs between nodes (1 for node1, 2 for node2).

~/.bash_profile — oracle user (both nodes)
# oracle user .bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
export ORACLE_SID=<db_name>1   # node1: 1, node2: 2
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
~/.bash_profile — grid user (both nodes)
# grid user .bash_profile
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.0.0.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
📌 Key Notes
  • On Node 1: ORACLE_SID=<db_name>1 — on Node 2: ORACLE_SID=<db_name>2
  • The grid user's ORACLE_BASE must be different from the oracle user's ORACLE_BASE
  • Apply source ~/.bash_profile after editing to activate changes
Phase 3 — Package Installation & OS Hardening
SECTION 3.1
🔧

Install Required OS Packages

Install Oracle-specific pre-install packages on both nodes. The oracle-database-preinstall-19c package automatically configures required kernel parameters, system limits, and dependencies — saving significant manual configuration time.

● BOTH NODES — As root
bash — Install Oracle pre-install and ASM packages
# Install Oracle Linux release package
yum install -y oraclelinux-release-el7.x86_64

# Install Oracle 19c pre-install package
# (automatically configures kernel parameters, limits, etc.)
yum install -y oracle-database-preinstall-19c.x86_64

# Install ASM support package
yum install -y oracleasm-support.x86_64
SECTION 3.2
🔒

Disable Firewall & SELinux — Both Nodes

Oracle RAC uses a complex set of internal network communications. The firewall and SELinux must be disabled on both nodes in a lab environment to prevent interference with clusterware communication, VIP failover, and interconnect traffic.

● BOTH NODES — As root
bash — Disable firewall and SELinux
# Disable firewall
systemctl stop firewalld
systemctl disable firewalld

# Disable SELinux — edit config file
vi /etc/selinux/config
# Change SELINUX=enforcing  →  SELINUX=disabled

# Verify current SELinux status
sestatus
⚠️ Critical — Reboot Required
  • Reboot both nodes after disabling SELinux to ensure the change takes full effect
  • Proceeding without a reboot means SELinux is still active in memory and will block cluster operations
Phase 4 — Node 2 Cloning & Configuration
SECTION 4.1
📋

Clone Node 1 to Create Node 2

Rather than repeating the entire OS installation, clone Node 1 in VirtualBox to create Node 2. This saves significant time — all OS packages, users, groups, and directory structure are inherited. After cloning, Node 2 requires a hostname and IP reconfiguration only.

📌 VirtualBox Clone Procedure
  • Shut down Node 1 completely before initiating the clone operation
  • In VirtualBox — right-click the Node 1 VM and select Clone
  • Choose Full Clone to create a fully independent copy
  • Name the cloned VM as node2
  • Under Additional Options → MAC Address Policy: Generate new MAC addresses for all network adapters
  • Power on Node 2 only after cloning is complete
SECTION 4.2
⚙️

Reconfigure Node 2 — Hostname & Network

After powering on Node 2, update the hostname and all IP addresses to reflect node2-specific values. The cloned VM will initially have Node 1's identity — this must be corrected before any cluster operations begin.

● NODE 2 — As root
bash — Update hostname on Node 2
# Update hostname on node2
hostnamectl set-hostname node2.localdomain

# Verify hostname was updated
cat /etc/hostname
Network Settings — Node 2 Public Interface (enp0s3)
# Public interface — node2 IP
IPv4 Method:  Manual
Address:      192.168.1.104
Netmask:      255.255.255.0
Gateway:      192.168.1.1
DNS:          192.168.1.1
Network Settings — Node 2 Private Interface (enp0s8)
# Private interface — node2 private IP
IPv4 Method:  Manual
Address:      10.2.1.12
Netmask:      255.255.255.0
bash — Restart network and reboot
# Restart network service
systemctl restart network

# Reboot to reflect all changes
reboot
📌 Post-Reconfiguration Verification
  • After reboot, run hostname — should return node2.localdomain
  • Run hostname -i — should return 192.168.1.104
  • Verify cat /etc/hosts — ensure entries match those on Node 1
  • Ping node1 from node2: ping node1 and vice versa to confirm public network reachability
  • Ping node1-priv from node2: ping node1-priv to confirm private interconnect works
Phase 5 — Shared Disk Setup & ASM Configuration
SECTION 5.1
💾

Create & Attach Shared Disks

Oracle RAC requires shared storage accessible by all cluster nodes simultaneously. In VirtualBox, create shareable virtual disks and attach them to both nodes. All disks must be set to Shareable type — this is the critical setting that enables simultaneous multi-node access.

📌 Disk Creation & Attachment Procedure
  • Create 4 virtual disks from VirtualBox Media Manager (Tools → Hard Disks → Create)
  • DATA01 — 40 GB  |  DATA02 — 40 GB  |  FRA — 30 GB  |  OCR — 40 GB
  • For each disk: set Pre-allocate Full Size, then in Properties set Type to Shareable
  • Attach all 4 disks to Node 1 via VM Settings → Storage (SATA Controller)
  • Attach the exact same 4 disks to Node 2 via VM Settings → Storage
  • Both nodes must see identical disks — verify in VirtualBox Storage settings that the VDI filenames match
⚠️ Critical — Both Nodes Must See Same Disks
  • Verify disk visibility on both nodes before proceeding to partitioning
  • If a node cannot see a shared disk, it will not be able to participate in the cluster
SECTION 5.2
🗂️

Create Disk Partitions — Node 1 Only

Create a single primary partition on each shared disk using fdisk. Run this on Node 1 only — because the disks are shared, the partitions are automatically visible on Node 2 as well.

● NODE 1 — As root
bash — Verify shared disks and create partitions
# Verify shared disks are visible
ls -l /dev/sd*

# Partition each disk using fdisk
# Repeat for /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde
fdisk /dev/sdb
  > n   # new partition
  > p   # primary
  > 1   # partition number
  >     # accept defaults for start sector
  >     # accept defaults for end sector
  > w   # write and exit

# Repeat fdisk for /dev/sdc, /dev/sdd, /dev/sde

# Verify partitions on both nodes
ls -ltr /dev/sd*
SECTION 5.3
⚙️

Configure ASM Library Driver — Both Nodes

Configure the Oracle ASM Library (ASMLIB) driver on both nodes. ASMLIB provides a kernel-level interface that Oracle uses to manage raw block devices as ASM disks. The default user must be grid and the default group must be asmadmin.

● BOTH NODES — As root
bash — Configure and initialise ASM Library
# Configure ASM library driver
oracleasm configure -i

# When prompted, enter:
Default user  : grid
Default group : asmadmin
Boot on start : y
Scan on boot  : y

# Initialize ASM library
oracleasm init
SECTION 5.4
🟠

Create ASM Disk Labels — Node 1 Only

Create ASM disk labels on Node 1. Each partition on the shared disks is stamped with an ASM disk name. Node 2 will discover these labels automatically when it scans for ASM disks in the next step.

● NODE 1 — As root
bash — Create ASM disk labels
# Create ASM disk labels
oracleasm createdisk DATA01 /dev/sdb1
oracleasm createdisk DATA02 /dev/sdc1
oracleasm createdisk FRA    /dev/sdd1
oracleasm createdisk OCR    /dev/sde1

# Verify disk creation
oracleasm listdisks

# Expected output:
# DATA01
# DATA02
# FRA
# OCR
SECTION 5.5
🔍

Scan ASM Disks — Node 2

On Node 2, trigger an ASM disk scan to discover the disks created on Node 1. Both nodes must list all 4 ASM disks before Grid Infrastructure installation can proceed.

● NODE 2 — As root
bash — Scan and verify ASM disks on Node 2
# Scan for ASM disks
oracleasm scandisks

# Verify all 4 disks are visible
oracleasm listdisks

# Expected output:
# DATA01
# DATA02
# FRA
# OCR
✓ Verification Checkpoint
  • Both nodes must list all 4 ASM disks (DATA01, DATA02, FRA, OCR) before proceeding
  • If Node 2 does not show all disks, check that the shared VDIs are correctly attached to Node 2 in VirtualBox
Phase 6 — Grid Infrastructure Installation
SECTION 6.1
📥

Copy & Unzip Grid Software — Node 1

Transfer the Oracle Grid Infrastructure 19c software to Node 1 and extract it directly into the GRID_HOME directory. This must be done as the grid user to ensure correct file ownership from the start.

● NODE 1 — As grid user
bash — Unzip Grid software to GRID_HOME
# As grid user on Node 1
# Unzip Grid software to GRID_HOME
unzip <grid_software>.zip -d /u01/app/19.0.0.0/grid/

# Verify files extracted correctly
ls -lth /u01/app/19.0.0.0/grid/
SECTION 6.2
🚀

Run Grid Infrastructure Installer — gridSetup.sh

Launch the Grid Infrastructure installer as the grid user on Node 1. The installer wizard will guide through cluster topology configuration, SSH setup, ASM disk group selection, and root script execution. Follow the specific choices carefully — incorrect configuration here requires a full reinstall.

● NODE 1 — As grid user
bash — Launch Grid Installer
cd /u01/app/19.0.0.0/grid/
./gridSetup.sh
📌 Installer Wizard — Key Selections
  • Installation Option: Configure Oracle Grid Infrastructure for a New Cluster
  • Cluster Type: Configure an Oracle Standalone Cluster
  • Cluster Name & SCAN Name: Set cluster name and SCAN name (e.g., rac-scan)
  • Add Node 2 details — hostname and private interconnect IP
  • Configure SSH connectivity between nodes using the grid user password (use "Set Up SSH Connectivity" button)
  • Storage Option: Use Oracle Automatic Storage Management (Oracle ASM)
  • ASM Disk Groups: Select DATA01 and DATA02 for DATA; FRA for recovery; OCR for the Oracle Clusterware files (voting disk & OCR)
  • Run fixup scripts as root on both nodes when prompted during prerequisite checks
  • Run root.sh scripts when prompted — Node 1 first, then Node 2
SECTION 6.3
📜

Run Root Scripts — Both Nodes (Sequence Critical)

When the Grid installer prompts, run the root scripts in the exact sequence shown. The orainstRoot.sh registers the Oracle Inventory, and root.sh installs the Oracle Clusterware stack. Never run Node 1 and Node 2 scripts simultaneously.

● NODE 1 — As root — Run FIRST
bash — Root scripts on Node 1
# Run on Node 1 FIRST — wait for full completion before touching Node 2
/u01/app/oraInventory/orainstRoot.sh
/u01/app/19.0.0.0/grid/root.sh
● NODE 2 — As root — Run ONLY after Node 1 completes
bash — Root scripts on Node 2
# ONLY after Node 1 completes — run on Node 2
/u01/app/oraInventory/orainstRoot.sh
/u01/app/19.0.0.0/grid/root.sh
⚠️ Critical — Sequential Execution Only
  • Always run root.sh on Node 1 first and wait for it to complete fully before running on Node 2
  • Running root.sh simultaneously on both nodes will cause the Grid installation to fail and require a full cleanup
  • root.sh on Node 1 can take 10–20 minutes — wait for the confirmation message
SECTION 6.4
🗄️

ASMCA — Create & Verify ASM Disk Groups

After Grid Infrastructure installation completes, launch ASMCA (ASM Configuration Assistant) to create and verify the ASM disk groups. Then validate disk group status via SQL*Plus as the sysasm user.

● NODE 1 — As grid user
bash — Launch ASMCA
# As grid user on Node 1
asmca
SQL*Plus — Verify ASM disk groups
# Connect as sysasm to verify disk groups
sqlplus / as sysasm

SELECT name, state, type
FROM   v$asm_diskgroup;
SECTION 6.5
🩺

Verify Cluster Status

Confirm that the Oracle Clusterware stack is fully operational. All cluster resources should show ONLINE status, both nodes should appear in the cluster topology, and OCR and voting disks should be accessible. This is a mandatory checkpoint before installing the Oracle RDBMS.

● NODE 1 — As grid user
bash — Cluster status verification commands
# Check all cluster resources and their status
crsctl stat res -t

# Check cluster nodes
olsnodes -n

# Check OCR integrity
ocrcheck

# Check voting disk location and status
crsctl query css votedisk
✓ Expected Verification Results
  • crsctl stat res -t — All resources should be in ONLINE state on both nodes
  • olsnodes -n — Should show both node1 and node2 with their node numbers
  • ocrcheck — Should return successful for all OCR locations
  • crsctl query css votedisk — Should show all voting disks as ONLINE
Phase 7 — Oracle RDBMS Installation & RAC Database Creation
SECTION 7.1
📥

Copy & Unzip Oracle RDBMS Software — Node 1

Transfer the Oracle 19c RDBMS software to Node 1 and extract it to the ORACLE_HOME directory. This must be performed as the oracle user. The Grid Infrastructure installation does not include the RDBMS binaries — they are separate.

● NODE 1 — As oracle user
bash — Unzip Oracle RDBMS software to ORACLE_HOME
# As oracle user on Node 1
# Unzip Oracle RDBMS software to ORACLE_HOME
unzip <oracle_db_software>.zip \
  -d /u01/app/oracle/product/19.0.0.0/dbhome_1/
SECTION 7.2
💿

Run Oracle RDBMS Installer — runInstaller

Launch the Oracle Database installer as the oracle user. Select "Set Up Software Only" — do not create a database at this stage. The RDBMS software will be installed on both nodes simultaneously by selecting both nodes in the installer.

● NODE 1 — As oracle user
bash — Launch Oracle RDBMS Installer
cd /u01/app/oracle/product/19.0.0.0/dbhome_1/
./runInstaller
📌 Installer Wizard — Key Selections
  • Installation Type: Set Up Software Only — do not create a database at this stage
  • Database Installation Option: Oracle Real Application Clusters database installation
  • Node Selection: Select both node1 and node2 for cluster installation
  • OS Groups: oracle — oinstall, dba; grid — oinstall, asmadmin
  • When prompted — run orainstRoot.sh and root.sh on both nodes
SECTION 7.3
🏗️

Create RAC Database — DBCA

Use DBCA (Database Configuration Assistant) to create the RAC database after the RDBMS software is installed. DBCA creates the database on ASM storage across both nodes simultaneously. Alternatively, use the silent mode command for a fully automated creation.

● NODE 1 — As oracle user
bash — Launch DBCA (GUI mode)
# As oracle user on Node 1
# Launch Database Configuration Assistant
dbca
bash — DBCA Silent Mode (optional)
# Silent mode — fully automated RAC database creation
dbca -silent -createDatabase            \
  -templateName General_Purpose.dbc    \
  -gdbName <db_name>                   \
  -sid <db_name>                       \
  -datafileDestination '+DATA01'       \
  -recoveryAreaDestination '+FRA'      \
  -storageType ASM                     \
  -nodeList node1,node2
📌 DBCA GUI — Key Selections
  • Mode: Create a database
  • Creation Mode: Advanced configuration
  • Database Type: Oracle Real Application Clusters (RAC)
  • Node List: Select node1 and node2
  • Storage: Automatic Storage Management (ASM)
  • Data file location: +DATA01 — Fast Recovery Area: +FRA
SECTION 7.4

Verify RAC Database Status

Confirm that the RAC database is running correctly on both nodes. The GV$INSTANCE view shows all instances across the cluster — all instances should show OPEN status. Use SRVCTL to verify the cluster service layer recognises the database.

● NODE 1 — As oracle user
bash + SQL*Plus — RAC Database Verification
# Verify instances on both nodes via SRVCTL
srvctl status database -d <db_name>

# Check instance status across all cluster nodes
sqlplus / as sysdba

SELECT inst_id,
       instance_name,
       host_name,
       status
FROM   gv$instance
ORDER BY inst_id;

# Check all cluster services are online
crsctl stat res -t
✓ Expected Verification Results
  • srvctl status database — Instance <db_name>1 on node1 — RUNNING; Instance <db_name>2 on node2 — RUNNING
  • gv$instance — Both rows should show status = OPEN
  • crsctl stat res -t — All database and listener resources should show ONLINE

✅ Oracle RAC 2-Node Setup Complete

All phases of the Oracle RAC implementation have been completed. The 2-node cluster is fully operational with Grid Infrastructure, ASM storage, and a running RAC database.

VM Infrastructure Configured
Two VirtualBox VMs with dual network adapters — public (Bridged) and private (Internal Network interconnect) — successfully configured and running Oracle Linux 7.8.
OS Users, Groups & Directories
oracle and grid OS users created with correct group assignments (oinstall, dba, asmadmin, asmdba). ORACLE_HOME, GRID_HOME, and GRID_BASE directories created with proper ownership and permissions.
OS Hardened & Packages Installed
oracle-database-preinstall-19c and oracleasm-support packages installed. Firewall disabled and SELinux set to disabled on both nodes.
Node 2 Cloned & Reconfigured
Node 2 cloned from Node 1 using VirtualBox Full Clone. Hostname, public IP, and private IP updated to node2-specific values. All cluster host entries identical on both nodes.
Shared ASM Storage Active
Four shareable virtual disks created and attached to both nodes: DATA01 (40GB), DATA02 (40GB), FRA (30GB), OCR (40GB). ASM Library configured, disk labels created on Node 1, and scanned on Node 2.
Grid Infrastructure Installed
Oracle Grid Infrastructure 19c installed across both nodes. SSH equivalence configured. Root scripts executed sequentially. All cluster resources showing ONLINE status.
ASM Disk Groups Operational
DATA01, DATA02, FRA, and OCR disk groups created and verified via ASMCA and GV$ASM_DISKGROUP. OCR and voting disks confirmed ONLINE.
Cluster Nodes Synchronised
Both node1 and node2 visible in cluster topology via olsnodes. Private interconnect, VIPs, and SCAN fully operational. OCR integrity verified via ocrcheck.
Oracle RDBMS Installed
Oracle 19c RDBMS software installed on both nodes via cluster-aware runInstaller. Root scripts executed on both nodes. ORACLE_HOME registered with Oracle Inventory.
RAC Database Running on Both Nodes
RAC database created via DBCA with data files on +DATA01 and recovery area on +FRA. Both instances (node1 instance, node2 instance) showing OPEN status via GV$INSTANCE.
High Availability Environment Ready
The environment is now ready to support high availability workloads. Failover between nodes, cache fusion, and cluster resource management are fully operational.

2-Node RAC Setup Checklist

Section 1 — VM setup complete, two network adapters configured, Node 1 OS installed
Section 2 — grid and oracle users created, all groups assigned, directories created
Section 3 — Pre-install packages installed, firewall disabled, SELinux disabled on both nodes
Section 4 — Node 2 cloned from Node 1, hostname and IPs reconfigured, rebooted
Section 5 — Shared disks created and attached to both nodes, partitioned
Section 5 — ASM library configured on both nodes, disks created on Node 1, scanned on Node 2
Section 6 — Grid Infrastructure installed, SSH connectivity verified, root.sh run on both nodes sequentially
Section 6 — ASM disk groups created and verified via ASMCA
Section 6 — Cluster status verified — all resources ONLINE
Section 7 — Oracle RDBMS installed on both nodes
Section 7 — RAC database created via DBCA and verified on both nodes
📌 Implementation Reference
  • Document Type: Sample Reference — Based on Training & Practice Environment
  • All technical procedures, commands, and outcomes reflect actual implementation steps
  • Hypervisor: Oracle VM VirtualBox — OS: Oracle Linux 7.8 (64-bit)
  • Oracle Version: 19c (19.0.0.0) — Storage: ASM (Oracle Automatic Storage Management)
  • All server identifiers and environment-specific values replaced with generic placeholders