1. Introduction
Oracle Real Application
Clusters (RAC) is an advanced database clustering technology that enables
multiple servers (nodes) to concurrently access and run a single shared Oracle
database. By allowing multiple instances to work together as a unified system,
Oracle RAC delivers high availability, fault tolerance, scalability, and
workload balancing for mission-critical enterprise environments.
In an Oracle Database
26ai RAC configuration, database services remain continuously available even if
one node fails, as surviving nodes automatically take over the workload without
service interruption. Oracle RAC also supports horizontal scalability, allowing
additional nodes to be added to meet increasing performance and business
demands.
This document provides a
complete, hands-on, step-by-step guide for installing and configuring Oracle
Database 26ai RAC on a two-node Oracle Linux 8.x environment running
on VMware Workstation. It covers the full lifecycle of a RAC deployment,
including operating system preparation, public and private network
configuration, shared storage setup using ASM, Grid Infrastructure
installation, ASM disk group creation, and RAC database creation and
validation.
This guide is designed to
be practical, execution-focused, and easy to follow, making it suitable for
Oracle DBAs, system administrators, and learners who want to gain real-world
experience deploying a fully functional Oracle Database 26ai RAC 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 |
Oracle Database 26ai
(Enterprise Edition) |
|
Grid Infrastructure
Version |
Oracle Grid
Infrastructure 26ai |
|
Storage |
ASM (Automatic Storage
Management) |
|
Database Type |
Container Database
(CDB) with PDB |
|
PDB Name |
prodpdb |
|
Database Name |
prod |
|
DB_UNIQUE_NAME |
prod |
|
ASM Disk Groups |
OCRVD, DATA, FRA |
2.2 Node-1 Details
|
Parameter |
Value |
|
Platform |
Oracle Linux Server
release 8.10 |
|
Server Name |
node1.localdomain |
|
Server IP (Public) |
192.168.18.11 |
|
DB Version |
Oracle Database 26ai –
2 Node RAC |
|
ASM Instance |
+ASM1 |
|
ORACLE_SID |
prod1 |
|
Database Name |
prod |
|
Multitenancy |
CDB with PDB: prodpdb |
|
DB_UNIQUE_NAME |
prod |
|
Oracle Home Path |
/u01/app/oracle/product/26ai/dbhome_1 |
|
GRID Home Path |
/u01/app/26ai/grid |
2.3 Node-2 Details
|
Parameter |
Value |
|
Platform |
Oracle Linux Server
release 8.10 |
|
Server Name |
node2.localdomain |
|
Server IP (Public) |
192.168.18.12 |
|
DB Version |
Oracle Database 26ai –
2 Node RAC |
|
ASM Instance |
+ASM2 |
|
ORACLE_SID |
prod2 |
|
Database Name |
prod |
|
Multitenancy |
CDB with PDB: prodpdb |
|
DB_UNIQUE_NAME |
prod |
|
Oracle Home Path |
/u01/app/oracle/product/26ai/dbhome_1 |
|
GRID Home Path |
/u01/app/26ai/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 or more
- 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 26ai RAC environment. Ensure that you download the correct versions for
Linux and verify file integrity before starting the installation process.
Link :- Oracle AI Database 26ai Download for
Linux x86-64
-------- 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 udev
• 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 8.10 has been successfully installed on VMware Workstation. You may continue using the server on which
this OS has been installed to proceed with the RAC setup.
After booting the server,
ensure the operating system is fully updated and install all required packages
and dependencies needed for Oracle Grid Infrastructure and RAC. This
preparation step is essential for a smooth and error-free deployment of the
two-node Oracle Database 26ai RAC environment.
Verify OS Version
# cat
/etc/os-release
# cat
/etc/hostname
For installing Oracle
Database 26ai on Oracle Linux 8, the recommended preinstallation package
is:
oracle-database-preinstall-23ai
Oracle has not released a
dedicated 26ai preinstall RPM for Oracle Linux 8 at this time. However,
the 23ai preinstall package is fully forward-compatible and officially
supported for newer Oracle Database releases on the same OS version.
As a fallback option, oracle-database-preinstall-19c
can also be used if the 23ai package is unavailable.
These preinstallation
RPMs automatically perform the following essential system configurations
required for Oracle Database installation:
- Configure kernel parameters (sysctl)
- Set user limits (ulimit)
- Install all required OS packages and
dependencies
- Create the oracle user and standard
Oracle groups
- Apply recommended OS-level settings
for database stability and performance
Using the oracle-database-preinstall
RPM ensures the operating system meets Oracle’s prerequisites and
significantly simplifies the database installation process, reducing manual
configuration errors.
# dnf -y update
# dnf install
-y oracle-database-preinstall-23ai
# dnf install
-y dnsmasq*
Change/Set the password
of the Oracle user.
# passwd oracle
Disable "Secure
Linux" :
# vi
/etc/selinux/config
SELINUX=disabled
Stop and disable “Firewall”
service :
# systemctl
stop firewalld.service
# systemctl
disable firewalld.service
Directory Structure
Preparation
Before starting the
installation, the required directory structure was created to organize the
Oracle Grid Infrastructure, Oracle Database software, inventory, and
installation files.
An installation staging
directory /u01/oraInstall was created to store the Oracle Grid and
Database installation media. This location can be customized based on
individual requirements.
The following directories
were configured:
- /u01/app/26ai/grid
– Oracle Grid Infrastructure home
- /u01/app/oracle/product/26ai/dbhome_1
– Oracle Database software home
- /u01/app/oraInventory
– Oracle inventory directory
- /u01/oraInstall
– Installation media staging directory
After creating the
directories, ownership and permissions were assigned to ensure proper access
for the Oracle software owner
# mkdir -p
/u01/app/26ai/grid
# mkdir -p
/u01/app/oracle/product/26ai/dbhome_1
# mkdir -p
/u01/app/oraInventory
# mkdir -p
/u01/oraInstall
# chown -R
oracle:oinstall /u01
# chmod -R 775
/u01
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”.
Boot the server.
Ethernet cards are added
to the server as “ens224” and “ens256”. Click “connect”
for both of them.
Manage settings for “ens224”.
This card will be used for “public network”.
Manage settings for “ens256”.
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
"ens224".
Manage the settings for “ens256”.
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 “RAC26aiNode1.vmx” and “RAC26aiNode2.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 udev
udev
is a Linux device manager that dynamically manages device files in the /dev
directory. It allows administrators to define rules that control device
ownership, permissions, and naming when disks are detected by the operating
system.
In Oracle ASM
environments, udev is used to:
- Ensure persistent disk
identification across system reboots
- Assign correct ownership and
permissions to ASM disks
- Allow Oracle Grid Infrastructure
to reliably discover and manage disks
- Avoid dependency on deprecated tools
like oracleasm
Using udev is the recommended
and supported approach for configuring ASM disks on modern Oracle Linux
versions, including Oracle Linux 8.x.
This ensures a stable,
predictable, and production-ready ASM disk configuration.
Check the disks you’ve
added.
# ls -al /dev/nvme*
The disks “nvme0n2”,
“nvme0n3”, and “nvme0n4” 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).
1st Server (node 1) :
Edit the udev rules file:
# vi
/etc/udev/rules.d/99-oracle-asm.rules
Add the following
entries:
# ASM Disk for OCRVD
KERNEL=="nvme0n2", OWNER="oracle",
GROUP="oinstall", MODE="0660"
# ASM Disk for DATA
KERNEL=="nvme0n3", OWNER="oracle",
GROUP="oinstall", MODE="0660"
# ASM Disk for FRA
KERNEL=="nvme0n4", OWNER="oracle",
GROUP="oinstall", MODE="0660"
Reload and apply the udev
rules:
# udevadm
control --reload-rules
# udevadm
trigger
Verify Permissions
# ls -l
/dev/nvme0n2
# ls -l
/dev/nvme0n3
# ls -l
/dev/nvme0n4
2nd Server (node 2) :
Edit the udev rules file:
# vi
/etc/udev/rules.d/99-oracle-asm.rules
Add the following
entries:
# ASM Disk for OCRVD
KERNEL=="nvme0n2", OWNER="oracle",
GROUP="oinstall", MODE="0660"
# ASM Disk for DATA
KERNEL=="nvme0n3", OWNER="oracle",
GROUP="oinstall", MODE="0660"
# ASM Disk for FRA
KERNEL=="nvme0n4", OWNER="oracle",
GROUP="oinstall", MODE="0660"
Reload and apply the udev
rules:
# udevadm
control --reload-rules
# udevadm
trigger
Verify Permissions
# ls -l
/dev/nvme0n2
# ls -l
/dev/nvme0n3
# ls -l
/dev/nvme0n4
After this step, the ASM disks are available with
correct permissions and can be selected during Grid Infrastructure
installation or ASMCA disk group creation.
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.
Switch to Oracle
user and create profile files.
1st Server:
# su - oracle
$ vi .asm_env
$ vi .db_env
2nd Server:
# su - oracle
$ vi .asm_env
$ vi .db_env
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_2326100_grid_home.zip -d /u01/app/26ai/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.
$ . .asm_env
$ cd /u01/app/26ai/grid
$
./gridSetup.sh
Start the installation by
clicking “Configure Oracle Grid Infrastructure for a New Cluster”.
Click “Configure
Cluster to manage Oracle RAC database ”.
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 “ens224”
and private network for “ens256”.
Click “Use Oracle Flex
ASM for storage”.
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.
You should tick
“Enable Automatic Self Correction”
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_2326100_db_home.zip -d
/u01/app/oracle/product/26ai/dbhome_1
After unzip is Done . set
up the db environment by sourcing the profile script, and then start the
installation.
$ . .db_env
$ cd /u01/app/oracle/product/26ai/dbhome_1
$ ./runInstaller
Click “Set Up RAC Software only”.
Note: For
RAC install, do 'Set Up Software Only' and then run DBCA (Database
Configuration Assistant) from the Oracle home.
Click “Oracle Real Application Clusters database
installation”.
Be sure that both servers are selected and SSH
Connectivity and click “Next”.
Be sure that software location is the “/u01/app/oracle/product/26ai/dbhome_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 RECO.
Before launching asmca,
ensure that the correct Grid Infrastructure environment is loaded. To do this,
log in as the oracle user and source the .asm_env file:
$ . .asm_env
$ 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.
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 udev 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:
$ . .db_env
$ 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 ‘prodpdb’ and continue.
Select “+DATA”
which is a disk group we’ve added.
Enable “Archiving”
and Select “RECO”.
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.
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.
12.
Summary
In this deployment, a
fully functional two-node Oracle Database 26ai RAC environment was successfully
installed and configured on Oracle Linux 8.10, running on VMware Workstation.
All major components were
completed:
• Operating system
installation and prerequisite configuration
• Network setup (Public, Private Interconnect, VIP, SCAN)
• Shared ASM storage configuration (OCR/Voting, DATA, FRA)
• Oracle Grid Infrastructure 26ai installation
• Oracle Database 26ai Home installation
• RAC database creation (CDB with PDB)
• Environment profile configuration
• Comprehensive validation and post-installation checks
The system is now fully
operational, highly available, and ready for RAC testing, learning, and
enterprise-grade workload deployment.
13. New
Features in Oracle Database 26ai
Oracle Database 26ai
introduces several enhancements focused on automation, resilience,
performance optimization, and operational simplicity, making it a strong
choice for modern on-prem and cloud-ready deployments.
🔹 Key New Features in
Oracle Database 26ai
1. Autonomous &
Self-Correcting Capabilities
Oracle 26ai brings deeper
automation into core database and Grid Infrastructure operations. Features such
as Automatic Self Correction in Grid Infrastructure help detect and fix
known configuration issues proactively, reducing manual intervention and
improving cluster stability.
2. Improved Grid
Infrastructure Resilience
Enhanced cluster health
monitoring, smarter failure isolation, and better interconnect handling
increase overall RAC reliability and reduce unplanned downtime in multi-node
environments.
3. Simplified
Installation and Configuration
The 26ai installers
provide clearer workflows, improved prerequisite validation, and smarter
defaults, helping DBAs complete installations faster with fewer configuration
errors.
4. Performance and
Scalability Enhancements
Oracle 26ai optimizes
internal database processes for better CPU, memory, and I/O utilization. RAC
environments benefit from improved cache coordination and interconnect
efficiency, supporting higher workloads with consistent performance.
5. Modern Storage
Integration
Better support for ASM
enhancements, udev-managed devices, and Oracle ASM Filter Driver (AFD)
allows more predictable and secure storage management, especially on Oracle
Linux 8 and later.
6. Cloud-Ready and
Future-Proof Architecture
Oracle Database 26ai is
designed with hybrid and cloud deployments in mind, offering smoother
transitions between on-prem, OCI, and engineered systems while maintaining
consistent architecture and tooling.
14. Why
Prefer Oracle Database 26ai
·
Reduced operational overhead through automation
and self-healing features
·
Higher availability and fault tolerance,
especially in RAC setups
·
Faster deployments with improved
installer intelligence
·
Better performance for enterprise and
mission-critical workloads
·
Long-term platform readiness for cloud,
hybrid, and AI-driven workloads