Installing Oracle Database 23.26.1.0.0 RAC on RHEL 9.6

Operating System: RHEL 9.6
Database Software: LINUX.X64_2326100_grid_home.zip, LINUX.X64_2326100_db_home.zip

Oracle Standalone Cluster Requirements

Minimum Available Space Requirements for Oracle Standalone Cluster With GIMR Configuration

Redundancy Level DATA Disk Group Oracle Fleet Patching and Provisioning Total Storage
External 1 GB 1 GB 2 GB
Normal 2 GB 2 GB 4 GB
High/Flex/Extended 3 GB 3 GB 6 GB

Configuring Operating Systems for Oracle Grid Infrastructure on Linux

Configuring YUM Repositories

Packages Requirements.

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}  (%{ARCH})\n' \
bc binutils compat-openssl11 elfutils-libelf fontconfig glibc glibc-devel \
glibc-headers ksh libaio libasan libX11 libXau libXi libXrender libXtst \
libxcrypt-compat libgcc libibverbs librdmacm libstdc++ libxcb libvirt-libs \
make policycoreutils policycoreutils-python-utils smartmontools sysstat \
net-tools nfs-utils unzip xorg-x11-xauth

Installing Operating System Packages.

sudo dnf -y install \
bc binutils compat-openssl11 elfutils-libelf fontconfig glibc glibc-devel \
glibc-headers ksh libaio libasan libX11 libXau libXi libXrender libXtst \
libxcrypt-compat libgcc libibverbs librdmacm libstdc++ libxcb libvirt-libs \
make policycoreutils policycoreutils-python-utils smartmontools sysstat \
net-tools nfs-utils unzip xorg-x11-xauth

Installing rlwrap package.

~]$ wget -P /soft https://www.rpmfind.net/linux/epel/9/Everything/x86_64/Packages/l/libptytty-2.0-3.el9.x86_64.rpm
~]$ wget -P /soft https://www.rpmfind.net/linux/epel/9/Everything/x86_64/Packages/r/rlwrap-0.47.1-1.el9.x86_64.rpm
~]$ sudo dnf localinstall /soft/*.rpm

Disabling Firewall and SELinux.

sudo systemctl disable firewalld --now
sudo sed -i '/^SELINUX=/{s/enforcing/disabled/}' /etc/selinux/config

Disabling Zero Configuration Network.

sudo cp -p /etc/sysconfig/network{,.bak.`date +%Y%m%d`}
echo "NOZEROCONF=yes" | sudo tee -a /etc/sysconfig/network

Disabling Daemon "avahi-daemon".

sudo systemctl disable avahi-daemon --now
sudo systemctl disable avahi-daemon.socket --now

Disabling Transparent Huagepages.

How to disable transparent hugepages (THP) on Red Hat Enterprise Linux 7, 8 and 9

~]$ sudo tuned-adm active
Current active profile: balanced

~]$ sudo mkdir /etc/tuned/oracle-nothp

~]$ sudo bash -c "cat > /etc/tuned/oracle-nothp/tuned.conf" << EOF
[main]
include=balanced

[vm]
transparent_hugepages=never
EOF

~]$ sudo chmod +x /etc/tuned/oracle-nothp/tuned.conf
~]$ sudo sed -i '/^\[profiles]$/a\oracle-nothp=oracle-nothp' /etc/tuned/ppd.conf

~]$ sudo tuned-adm profile oracle-nothp
~]$ sudo reboot

~]$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

Configuring Public, Private, Virtual and SCAN IP names and Addresses.

~]$ sudo bash -c "cat >>/etc/hosts" <<EOF
# Oracle 26ai
192.168.3.161 oracle26ai01
192.168.3.162 oracle26ai02
192.168.3.163 oracle26ai01-vip
192.168.3.164 oracle26ai02-vip
192.168.3.165 oracle26ai-scan
100.100.100.161 oracle26ai01-priv
100.100.100.162 oracle26ai02-priv
EOF

Configuring Users, Groups and Environments for Oracle Grid Infrastructure and Oracle Database

Create Oracle software owner user accounts on each cluster node.

sudo groupadd -g 54321 oinstall
sudo groupadd -g 54322 dba
sudo groupadd -g 54323 oper
sudo groupadd -g 54324 backupdba
sudo groupadd -g 54325 dgdba
sudo groupadd -g 54326 kmdba
sudo groupadd -g 54327 asmdba
sudo groupadd -g 54328 asmoper
sudo groupadd -g 54329 asmadmin
sudo groupadd -g 54330 racdba
sudo useradd -u 54332 -g oinstall -G oinstall,dba,asmdba,asmoper,asmadmin,racdba -m -d /home/grid -s /bin/bash -c "Grid Infrastructure Owner" grid
sudo useradd -u 54331 -g oinstall -G oinstall,dba,oper,backupdba,dgdba,kmdba,asmdba,racdba,asmadmin -m -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle
echo "grid" | sudo passwd --stdin grid
echo "oracle" | sudo passwd --stdin oracle

Create Grid home and Oracle home directories on each cluster node.

sudo mkdir -p /u01/app/26.0.0/grid
sudo mkdir -p /u01/app/grid
sudo mkdir -p /u01/app/oracle/product/26.0.0/dbhome_1
sudo chown -R grid:oinstall /u01
sudo chown -R oracle:oinstall /u01/app/oracle
sudo chmod -R 775 /u01

Configure Oracle Software owner user account environment on each cluster node.

sudo bash -c "cat >>/home/grid/.bash_profile" <<'EOF'
# Oracle 26ai
umask 022
export ORACLE_SID=+ASM
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/26.0.0/grid
export GRID_HOME=/u01/app/26.0.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
if command -v rlwrap >/dev/null 2>&1; then
alias sqlplus='rlwrap sqlplus'
alias asmcmd='rlwrap asmcmd'
fi
EOF

sudo bash -c "cat >>/home/oracle/.bash_profile" <<'EOF'
# Oracle 26ai
umask 022
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/26.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
if command -v rlwrap >/dev/null 2>&1; then
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
fi
EOF

cat >> ~/.bash_profile <<EOF
# Oracle 26ai
export GRID_HOME=/u01/app/26.0.0/grid
EOF

# Adding ORACLE_SID instance number
sudo sed -i "/ORACLE_SID/s/ASM.*/ASM`echo ${HOSTNAME##*0}`/" /home/grid/.bash_profile
sudo sed -i "/ORACLE_SID/s/orcl.*/orcl`echo ${HOSTNAME##*0}`/" /home/oracle/.bash_profile

Completing Preinstallation Tasks Manually

Configuring SSH Manually on All Cluster Nodes

Login as grid user (only first node).

~]# grep -Ev '^#|^$|127.0.0.1|vip|scan|priv|:' /etc/hosts  | awk '{print "ssh " $2 " date;"}' > /tmp/sshTest.sh

~]$ ssh-keygen -t rsa
~]$ ssh-copy-id oracle26ai01
~]$ ssh-copy-id oracle26ai02

~]$ bash /tmp/sshTest.sh

Repeat as oracle user (only first node).

~]$ sed -i 's/^BITS=.*/BITS=2048/' /u01/app/26.0.0/grid/deinstall/sshUserSetup.sh
~]$ /u01/app/26.0.0/grid/deinstall/sshUserSetup.sh -hosts "oracle26ai01 oracle26ai02" -user oracle -noPromptPassphrase -confirm -advanced
~]$ bash /tmp/sshTest.sh

Configuring Storage Device Path Persistence Using Oracle ASMLIB

Installing and Configuring Oracle ASMLIB Software.

~]$ ll /soft/oracleasm*
-rwxr-x--- 1 jove jove 54352 Jun 10 16:58 oracleasmlib-3.1.3-1.el9.x86_64.rpm
-rwxr-x--- 1 jove jove 134117 Jun 10 16:58 oracleasm-support-3.1.1-5.el9.x86_64.rpm

~]$ sudo dnf localinstall /soft/oracleasm*.rpm

~]$ sudo bash -c "cat > /etc/sysctl.d/io_uring.conf" << EOF
kernel.io_uring_disabled = 0
EOF

~]$ sudo sysctl -p /etc/sysctl.d/io_uring.conf

~]$ sudo oracleasm configure -i
Configuring the Oracle ASM system service.

This will configure the on-boot properties of the Oracle ASM system
service. The following questions will determine whether the service
is started 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 ASM disk devices []: grid
Default group to own the ASM disk devices []: asmdba
Start Oracle ASM system service on boot (y/n) [y]: y
Scan for Oracle ASM disks when starting the oracleasm service (y/n) [y]: y
Maximum number of ASM disks that can be used on system [2048]:
Enable iofilter if kernel supports it (y/n) [y]: y
Writing Oracle ASM system service configuration: done

Configuration changes only come into effect after the Oracle ASM
system service is restarted. Please run 'systemctl restart oracleasm'
after making changes.

WARNING: All of your Oracle and ASM instances must be stopped prior
to restarting the oracleasm service.

~]$ sudo oracleasm configure -x "rhel sda"
Writing Oracle ASM system service configuration: done

Configuration changes only come into effect after the Oracle ASM
system service is restarted. Please run 'systemctl restart oracleasm'
after making changes.

WARNING: All of your Oracle and ASM instances must be stopped prior
to restarting the oracleasm service.

~]$ sudo systemctl restart oracleasm

~]$ sudo oracleasm configure
ORACLEASM_UID=grid
ORACLEASM_GID=asmdba
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE="rhel sda"
ORACLEASM_SCAN_DIRECTORIES=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"
ORACLEASM_CONFIG_MAX_DISKS="2048"
ORACLEASM_ENABLE_IOFILTER="true"

~]$ sudo oracleasm init
Mounting oracleasm driver filesystem: Not applicable with RHEL9
Reloading disk partitions: done
Cleaning any stale ASM disks...
Setting up iofilter map for ASM disks: done
Scanning system for ASM disks...
Disk scan successful

~]$ sudo oracleasm status
Checking if the oracleasm kernel module is loaded: no (not required with RHEL9)
Checking if /dev/oracleasm is mounted: no (not required with RHEL9)
Checking which I/O Interface is in use: io_uring (KABI_V3)
Checking if ASMLIB can be loaded: yes
Checking if io_uring is enabled: yes
Checking if io_uring is accessible to the configured DB user: yes
Checking if io_uring supports integrity passthrough: no
Checking if ASM disks have the correct ownership and permissions: yes
Checking if ASM I/O filter is set up: yes

Configuring Oracle ASMLIB Disk Devices on first node.

~]# echo -e "n\n\n\n\n\nw\n" > /tmp/create_new_partition
~]# for i in b c d e f; do sudo fdisk /dev/sd$i < /tmp/create_new_partition; done

~]$ sudo oracleasm createdisk OCR01 /dev/sdb1
~]$ sudo oracleasm createdisk OCR02 /dev/sde1
~]$ sudo oracleasm createdisk OCR03 /dev/sdf1
~]$ sudo oracleasm createdisk DATA01 /dev/sdc1
~]$ sudo oracleasm createdisk DATA02 /dev/sdd1

~]$ sudo oracleasm scandisks
~]$ sudo oracleasm listdisks
DATA01
DATA02
OCR01
OCR02
OCR03

~]$ sudo oracleasm discover

Configuring Kernel Parameters for Linux

Create or edit the /etc/sysctl.d/97-oracle-database-26ai-sysctl.conf file, and add or edit lines similar to:

sudo bash -c "cat > /etc/sysctl.d/97-oracle-database-26ai-sysctl.conf" << EOF
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1835008
kernel.shmmax = 6442450944
kernel.panic_on_oops = 1
kernel.panic = 10
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
vm.nr_hugepages = 3584
EOF

Configuring Resource Limits for Oracle Software Installation Users

sudo bash -c "cat > /etc/security/limits.d/97-oracle-database-26ai-limits.conf" << EOF
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid hard memlock 10869992
grid soft memlock 10869992
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 10869992
oracle soft memlock 10869992
EOF

Installing Oracle Grid Infrastructure for a New Cluster

  1. Download and change the Oracle Grid Infrastructure image files permissions.
sudo chown grid:oinstall /soft/LINUX.X64_2326100_grid_home.zip
  1. Log in as the grid user, extract the files into the Grid home.
unzip -q /soft/LINUX.X64_2326100_grid_home.zip -d $GRID_HOME
  1. Log in as the root user, installing the cvuqdisk RPM on each node.
CVUQDISK_GRP=oinstall; export CVUQDISK_GRP
sudo rpm -ivh /u01/app/26.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm
  1. Log in as the grid user, verify that all of the cluster nodes meet the installation requirements:
~]$ $GRID_HOME/runcluvfy.sh stage -pre crsinst -n oracle26ai01,oracle26ai02 -verbose -fixup
  1. Log in as the grid user, run installer script.
~]$ $GRID_HOME/gridSetup.sh -silent -ignorePrereqFailure -configureCluster -OSDBA asmdba -OSOPER asmoper -OSASM asmadmin -ORACLE_BASE /u01/app/grid \
-clusterName rac-cluster -scanName oracle26ai-scan -scanPort 1521 -clusterNodes oracle26ai01,oracle26ai02 \
-networkInterfaceList ens192:192.168.3.0:1,ens224:100.100.100.0:5 -clusterUsage RAC \
-storageOption FLEX_ASM_STORAGE -diskGroupName OCR -diskList ORCL:OCR01,ORCL:OCR02,ORCL:OCR03 -redundancy NORMAL -auSize 8 \
-diskString 'ORCL:*' -enableAutoFixup -INVENTORY_LOCATION /u01/app/oraInventory

Launching Oracle Grid Infrastructure Setup Wizard...

Enter password for SYS user:
Asm!1234
Confirm password:
Asm!1234
Enter password for ASMSNMP user:
Asm!1234
Confirm password:
Asm!1234
[WARNING] [INS-40109] The specified Oracle base location is not empty on this server.
ACTION: Specify an empty location for Oracle base.
[WARNING] [INS-13013] Target environment does not meet some mandatory requirements.
CAUSE: Some of the mandatory prerequisites are not met. See logs for details. /tmp/GridSetupActions2026-06-11_04-49-50PM/gridSetupActions2026-06-11_04-49-50PM.log.
ACTION: Identify the list of failed prerequisite checks from the log: /tmp/GridSetupActions2026-06-11_04-49-50PM/gridSetupActions2026-06-11_04-49-50PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
/u01/app/26.0.0/grid/install/response/grid_2026-06-11_04-49-50PM.rsp

You can find the log of this install session at:
/tmp/GridSetupActions2026-06-11_04-49-50PM/gridSetupActions2026-06-11_04-49-50PM.log

As a root user, run the following script(s):
1. /u01/app/oraInventory/orainstRoot.sh
2. /u01/app/26.0.0/grid/root.sh

Run /u01/app/oraInventory/orainstRoot.sh on the following nodes:
[oracle26ai01, oracle26ai02]
Run /u01/app/26.0.0/grid/root.sh on the following nodes:
[oracle26ai01, oracle26ai02]

The scripts can be run in parallel on all the nodes.

Successfully Setup Software with warning(s).
Run the 'gridSetup.sh -executeConfigTools' command to complete the configuration.


Moved the install session logs to:
/u01/app/oraInventory/logs/GridSetupActions2026-06-11_04-49-50PM
  1. As a root user, run the following scripts.
~]$ sudo /u01/app/oraInventory/orainstRoot.sh

Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.

~]$ sudo /u01/app/26.0.0/grid/root.sh

Performing root user operation.

The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u01/app/26.0.0/grid
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...

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.
RAC option enabled on: Linux
Executing command '/u01/app/26.0.0/grid/perl/bin/perl -I/u01/app/26.0.0/grid/perl/lib -I/u01/app/26.0.0/grid/crs/install /u01/app/26.0.0/grid/crs/install/rootcrs.pl '
Using configuration parameter file: /u01/app/26.0.0/grid/crs/install/crsconfig_params
The log of current session can be found at:
/u01/app/grid/crsdata/oracle26ai01/crsconfig/rootcrs_oracle26ai01_2026-06-11_10-08-07AM.log
2026/06/11 10:08:16 CLSRSC-594: Executing installation step 1 of 18: 'ValidateEnv'.
2026/06/11 10:08:16 CLSRSC-363: User ignored prerequisites during installation
2026/06/11 10:08:17 CLSRSC-594: Executing installation step 2 of 18: 'CheckRootCert'.
2026/06/11 10:08:17 CLSRSC-594: Executing installation step 3 of 18: 'GenSiteGUIDs'.
2026/06/11 10:08:19 CLSRSC-594: Executing installation step 4 of 18: 'SetupOSD'.
2026/06/11 10:08:19 CLSRSC-594: Executing installation step 5 of 18: 'CheckCRSConfig'.
2026/06/11 10:08:20 CLSRSC-594: Executing installation step 6 of 18: 'SetupLocalGPNP'.
2026/06/11 10:08:20 CLSRSC-594: Executing installation step 7 of 18: 'CreateRootCert'.
2026/06/11 10:08:21 CLSRSC-594: Executing installation step 8 of 18: 'ConfigOLR'.
2026/06/11 10:08:22 CLSRSC-594: Executing installation step 9 of 18: 'ConfigCHMOS'.
2026/06/11 10:08:22 CLSRSC-594: Executing installation step 10 of 18: 'CreateOHASD'.
2026/06/11 10:08:22 CLSRSC-594: Executing installation step 11 of 18: 'ConfigOHASD'.
2026/06/11 10:08:28 CLSRSC-594: Executing installation step 12 of 18: 'SetupTFA'.
2026/06/11 10:08:28 CLSRSC-594: Executing installation step 13 of 18: 'InstallACFS'.
2026/06/11 10:08:31 CLSRSC-594: Executing installation step 14 of 18: 'CheckFirstNode'.
2026/06/11 10:08:31 CLSRSC-594: Executing installation step 15 of 18: 'InitConfig'.
2026/06/11 10:09:49 CLSRSC-4002: Successfully installed Oracle Autonomous Health Framework (AHF).
CRS-4256: Updating the profile
Successful addition of voting disk 4e6db950bcd94fedbff9eb30d8ad02d4.
Successful addition of voting disk d41b4db4d1df4fefbf58386c51dffae5.
Successful addition of voting disk 867248e7250d4f5dbf008e6380620809.
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 4e6db950bcd94fedbff9eb30d8ad02d4 (ORCL:OCR03) [OCR]
2. ONLINE d41b4db4d1df4fefbf58386c51dffae5 (ORCL:OCR01) [OCR]
3. ONLINE 867248e7250d4f5dbf008e6380620809 (ORCL:OCR02) [OCR]
Located 3 voting disk(s).
2026/06/11 10:18:40 CLSRSC-594: Executing installation step 16 of 18: 'StartCluster'.
2026/06/11 10:20:29 CLSRSC-343: Successfully started Oracle Clusterware stack
2026/06/11 10:20:35 CLSRSC-594: Executing installation step 17 of 18: 'ConfigNode'.
clscfg: EXISTING configuration version 23 detected.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
2026/06/11 10:21:38 CLSRSC-594: Executing installation step 18 of 18: 'PostConfig'.
2026/06/11 10:22:03 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Check custer status.

~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE oracle26ai01 STABLE
ONLINE ONLINE oracle26ai02 STABLE
ora.chad
ONLINE ONLINE oracle26ai01 STABLE
ONLINE ONLINE oracle26ai02 STABLE
ora.cvuadmin
OFFLINE OFFLINE oracle26ai01 STABLE
OFFLINE OFFLINE oracle26ai02 STABLE
ora.helper
OFFLINE OFFLINE oracle26ai01 STABLE
OFFLINE OFFLINE oracle26ai02 IDLE,STABLE
ora.net1.network
ONLINE ONLINE oracle26ai01 STABLE
ONLINE ONLINE oracle26ai02 STABLE
ora.ons
ONLINE ONLINE oracle26ai01 STABLE
ONLINE ONLINE oracle26ai02 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE oracle26ai01 STABLE
2 ONLINE ONLINE oracle26ai02 STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE oracle26ai01 STABLE
ora.OCR.dg(ora.asmgroup)
1 ONLINE ONLINE oracle26ai01 STABLE
2 ONLINE ONLINE oracle26ai02 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE oracle26ai01 Started,STABLE
2 ONLINE ONLINE oracle26ai02 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE oracle26ai01 STABLE
2 ONLINE ONLINE oracle26ai02 STABLE
ora.cdp1.cdp
1 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE oracle26ai01 STABLE
ora.cvuhelper
1 ONLINE ONLINE oracle26ai02 STABLE
ora.oracle26ai01.vip
1 ONLINE ONLINE oracle26ai01 STABLE
ora.oracle26ai02.vip
1 ONLINE ONLINE oracle26ai02 STABLE
ora.rhpserver
1 OFFLINE OFFLINE STABLE
ora.scan1.vip
1 ONLINE ONLINE oracle26ai01 STABLE
--------------------------------------------------------------------------------

Installing the Oracle Database Software

  1. Download and change the Oracle Database image files permissions.
~]$ sudo chown oracle:oinstall /soft/LINUX.X64_2326100_db_home.zip
  1. Log in as the oracle user, extract the files into the Oracle home.
~]$ unzip -q /soft/LINUX.X64_2326100_db_home.zip -d $ORACLE_HOME
  1. Log in as the oracle user, run installer.
~]$ $ORACLE_HOME/runInstaller -silent -ignorePrereqFailure -setupDBHome \
-OSDBA dba -OSOPER oper -OSBACKUPDBA backupdba -OSDGDBA dgdba -OSKMDBA kmdba -OSRACDBA racdba \
-ORACLE_BASE /u01/app/oracle -clusterNodes oracle26ai01,oracle26ai02 -installEdition EE -INVENTORY_LOCATION /u01/app/oraInventory
  1. As a root user, run the following script.
~]$ sudo /u01/app/oracle/product/26.0.0/dbhome_1/root.sh

Performing root user operation.

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/26.0.0/dbhome_1
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...

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.

Creating Database Instance

Creating a diskgroup.

SQL> create diskgroup data external redundancy disk 'ORCL:DATA01','ORCL:DATA02' attribute 'compatible.asm' = '23.0';

Creating a cdb instance.

~]$ $ORACLE_HOME/bin/dbca -silent -ignorePreReqs -createDatabase \
-templateName General_Purpose.dbc \
-datafileJarLocation $ORACLE_HOME/assistants/dbca/templates \
-databaseConfigType RAC \
-databaseType MULTIPURPOSE \
-nodelist oracle26ai01,oracle26ai02 \
-gdbName orcl \
-sid orcl \
-createAsContainerDatabase true \
-useLocalUndoForPDBs true \
-numberofPDBs 1 \
-pdbName orclpdb1 \
-storageType ASM \
-datafileDestination +DATA \
-recoveryAreaDestination +DATA \
-recoveryAreaSize 2048 \
-enableArchive true \
-sysPassword oracle \
-systemPassword oracle \
-asmsnmpPassword oracle \
-dbsnmpPassword oracle \
-pdbAdminPassword oracle \
-runCVUChecks true \
-characterset AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-sampleSchema false \
-emConfiguration NONE \
-memoryPercentage 30

Output:

Prepare for db operation
7% complete
Copying database files
27% complete
Creating and starting Oracle instance
28% complete
31% complete
33% complete
36% complete
40% complete
Creating cluster database views
41% complete
53% complete
Completing Database Creation
57% complete
59% complete
60% complete
Creating Pluggable Databases
64% complete
80% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/u01/app/oracle/cfgtoollogs/dbca/orcl.
Database Information:
Global Database Name:orcl
System Identifier(SID) Prefix:orcl
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.

Patch

Uninstall

Delete database.

~]$ $ORACLE_HOME/bin/dbca -silent -deleteDatabase -sourceDB orcl -sid orcl -sysDBAUserName sys -sysDBAPassword oracle

Detach DB Home.

~]$ $ORACLE_HOME/oui/bin/runInstaller -silent -detachHome ORACLE_HOME="/u01/app/oracle/product/26.0.0/dbhome_1" ORACLE_HOME_NAME="OraDB23Home1"

Deinstall DB software.

~]$ $ORACLE_HOME/deinstall/deinstall

Deconfigure Clusterware.

~]$ sudo /u01/app/26.0.0/grid/crs/install/rootcrs.sh -deconfig -force -verbose
~]$ sudo /u01/app/26.0.0/grid/crs/install/rootcrs.sh -deconfig -force -verbose -lastnode

Remove files and directories.

sudo rm -rf /u01/app/26.0.0/grid
sudo rm -rf /u01/app/grid
sudo rm -rf /u01/app/oraInventory

sudo rm -rf /etc/oracle
sudo rm -rf /var/tmp/.oracle
sudo rm -f /etc/oraInst.loc
sudo rm -f /etc/oratab

Installation Errors

DBCA - [FATAL] Recovery Manager failed to restore datafiles. Refer logs for details.

~]$ $ORACLE_HOME/bin/dbca -silent -ignorePreReqs -createDatabase ...

Prepare for db operation
7% complete
Copying database files
27% complete
100% complete
[FATAL] Recovery Manager failed to restore datafiles. Refer logs for details.
CAUSE: No additional information available.
ACTION: Refer to the logs or contact Oracle Support Services

See /u01/app/oracle/cfgtoollogs/dbca/orcl/trace.log_2026-06-15_09-21-21AM_3184641 log file:

Starting restore at 15-JUN-26
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00011 to +DATA/ORCL/undotbs01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/product/26.0.0/dbhome_1/assistants/dbca/templates/Seed_Database.dfb4
channel ORA_DISK_1: ORA-19870: error while restoring backup piece /u01/app/oracle/product/26.0.0/dbhome_1/assistants/dbca/templates/Seed_Database.dfb4
ORA-19504: failed to create file "+DATA/ORCL/undotbs01.dbf"
ORA-17502: (3)Failed to create file +DATA/ORCL/undotbs01.dbf
ORA-15001: disk group "DATA" does not exist or is not mounted
ORA-59069: Oracle ASM file operation failed.
failover to previous backup
creating datafile file number=11 name=+DATA/ORCL/undotbs01.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 06/15/2026 09:40:38
ORA-01119: error in creating database file '+DATA/ORCL/undotbs01.dbf'
ORA-17502: (3)Failed to create file +DATA/ORCL/undotbs01.dbf
ORA-15001: disk group "DATA" does not exist or is not mounted
ORA-59069: Oracle ASM file operation failed.
Help: https://docs.oracle.com/error-help/db/ora-01119/
RMAN-06956: create datafile failed; retry after removing +DATA/ORCL/undotbs01.dbf from OS
RMAN Client Diagnostic Trace file : /u01/app/oracle/diag/clients/user_oracle/RMAN_1014236531_116/trace/ora_rman_3201278_0.trc
RMAN>

Cause:

The $ORACLE_HOME/bin/oracle file is belong to the asmdba group, but oracleasm is belong to asmadmin. So no permission to access ASM disk.

~]$ sudo oracleasm configure
ORACLEASM_UID=grid
ORACLEASM_GID=asmadmin

~]$ id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(asmdba),54330(racdba)

~]$ ls -la $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 oracle asmdba 542070368 Jun 11 20:43 /u01/app/oracle/product/26.0.0/dbhome_1/bin/oracle

Solution:

Change oracleasm group.

~]$ sudo oracleasm configure -i
~]$ sudo systemctl restart oracleasm
~]$ sudo oracleasm configure
ORACLEASM_UID=grid
ORACLEASM_GID=asmdba

Appendix

DBCA GUI: