In this article, we provide a step-by-step guide to installing and configuring a 2-node Oracle 19c RAC database on VirtualBox without using DNS services. This setup uses local host file entries instead of DNS, making it ideal for learning, practice, and lab environments.
By following this guide, you will gain hands-on experience with Oracle RAC architecture, shared storage, Grid Infrastructure, and RAC database creation in a simple and practical way.
Table of Contents
- 1. Virtual Machine setup for Node 1
- 2. Pre-requisites for Oracle RAC
- 3. Virtual Machine setup for Node 2
- 4. Create shared disks for both RAC nodes
- 5. Configure Oracle ASM
- 6. Pre-checks for Oracle RAC setup
- 7. Install Oracle Grid Infrastructure
- 8. Install Oracle 19c Database software
- 9. Create ASM disk groups using ASMCA
- 10. Create the Oracle RAC database
Required Software and Files
Ensure all required software and installation files are downloaded before starting the Oracle 19c RAC setup.
- Virtual Machine: Oracle VirtualBox Manager
- Operating System ISO: OracleLinux-R7-U9-Server-x86_64-dvd.iso
- Oracle Database Home: LINUX.X64_193000_db_home.zip
- Oracle Grid Infrastructure Home: LINUX.X64_193000_grid_home.zip
1. Virtual Machine setup for Node 1
1. Open Oracle VirtualBox Manager and click on the New button to begin creating a new virtual machine (VM).
Hard Disk: Specify the disk size and storage location, select the Hard Disk File Type and Variant as VHD (Virtual Hard Disk), and then click Finish to create the virtual machine.
3. Navigate to the Expert tab, go to Network, and enable three network adapters for communication as shown below.
Adapter 1: Internal Network - Public Network
6. After adding the ISO image, click OK to save the settings.
8. After configuration, Start the Virtual Machine.
9. After starting the virtual machine, select Install Oracle Linux 7.9 to begin installing the operating system.
12. In DATE & TIME, select the appropriate Region and City based on your time zone, then click Done.
13. In SOFTWARE SELECTION, choose Server with GUI and select all available Add-Ons, then click Done.
15. Partition the disk according to your requirements, then click Done.
Public Network Configuration: Go to IPv4 Settings, change the Method to Manual, and enter the public network IP address details.
Private Network Configuration: Go to IPv4 Settings, change the Method to Manual, and enter the private network IP address details.
Private Network Configuration: Go to IPv4 Settings, change the Method to Manual, and enter the private network IP address details.
18. After completing all configurations, click Begin Installation to start the installation process.
19. Set the root password. After that, create a new user account by providing the required username and password.
2. Pre-requisites for Oracle RAC
1. Change the system hostname.Set a unique hostname for each RAC node to ensure proper cluster communication.
# hostnamectl set-hostname dbasimplified1
2. Install required packages.
Install Oracle 19c pre-requisite packages, ASM support, and networking utilities required for RAC installation.
# yum update -y # yum install -y oracle-database-preinstall-19c.x86_64 # yum install oracleasm-support # yum install -y bind* # sysctl -p3. Configure hosts file.
Update /etc/hosts with public, private, virtual (VIP), and SCAN IPs to enable RAC communication without using DNS.
[root@dbasimplified1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # Public 192.168.56.11 dbasimplified1 rac1 192.168.56.12 dbasimplified2 rac2 # Private 192.168.10.11 dbasimplified1-priv rac1-priv 192.168.10.12 dbasimplified2-priv rac2-priv # Virtual 192.168.56.21 dbasimplified1-vip rac1-vip 192.168.56.22 dbasimplified2-vip rac2-vip # SCAN 192.168.56.31 dbasimplified-scan rac-scan 192.168.56.32 dbasimplified-scan rac-scan 192.168.56.33 dbasimplified-scan rac-scan4. Create the required groups and users, and assign the appropriate groups to each user.
Create ASM and RAC-specific groups and configure the oracle and grid users with the required privileges.
[root@dbasimplified1 ~]# groupadd -g 54327 asmdba [root@dbasimplified1 ~]# groupadd -g 54328 asmoper [root@dbasimplified1 ~]# groupadd -g 54329 asmadmin [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# usermod -u 54321 -g oinstall -G dba,oper,asmdba oracle [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# useradd -u 54331 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid5. Set passwords for the oracle and grid users.
Assign passwords to the oracle and grid users for secure access and installation activities.
[root@dbasimplified1 ~]# passwd oracle Changing password for user oracle. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# passwd grid Changing password for user grid. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.6. Create Necessary Directories.
Create Oracle Base, Grid Home, and Database Home directories with proper ownership and permissions.
[root@dbasimplified1 ~]# mkdir -p /u01/app/oracle/product/19c/db_home1 [root@dbasimplified1 ~]# mkdir -p /u01/app/grid [root@dbasimplified1 ~]# mkdir -p /u01/app/19c/grid [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# chown -R oracle:oinstall /u01 [root@dbasimplified1 ~]# cd /u01/app [root@dbasimplified1 app]# [root@dbasimplified1 app]# chown -R grid:oinstall 19c [root@dbasimplified1 app]# chown -R grid:oinstall grid7. Stop and Disable firewall.
Disable the firewall to avoid network communication issues between RAC nodes during installation.
[root@dbasimplified1 ~]# systemctl stop firewalld [root@dbasimplified1 ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@dbasimplified1 ~]#8. Disable SELinux:
Disable SELinux to prevent security policy conflicts with Oracle RAC services and reboot the system to apply changes.
[root@dbasimplified1 ~]# vi /etc/selinux/config [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted [root@dbasimplified1 ~]# getenforce Enforcing [root@dbasimplified1 ~]# init 6 [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# getenforce Disabled [root@dbasimplified1 ~]#
3. Virtual Machine setup for Node 2
1. Right-click the virtual machine for Node 1 in Oracle VirtualBox Manager, then click Clone.
2. Enter the virtual machine name for Node 2 and select the required options as shown below and then click on Finish.
4. Open the Adapter 1 settings and configure the public network IP address details, then click Apply.
5. Open the Adapter 2 settings and configure the private network IP address details, then click Apply.
# hostnamectl set-hostname dbasimplified2
4. Create shared disks for both RAC nodes
1. Open the virtual machine settings for Node 1, navigate to the Storage section, select Controller: SATA, and use the Add Hard Disk option at the bottom to attach the disk.4. After the disk is created, it will be listed in the Not Attached section of the Storage settings.
Follow the same steps to create four hard disks, each of size 20 GB, and configure them as shared disks so they can be accessed by both RAC nodes.
7. Open the Storage settings, select Controller: SATA, and use the Add Hard Disk option at the bottom to attach the required hard disks.
9. Once all the hard disks are attached successfully, the Storage section will appear as shown below.
10. Follow the same steps to attach the same shared disks to the virtual machine configured for Node 2.
11. Run the lsblk command on both RAC nodes to confirm that the shared disks are visible and accessible from each node. You should see the disks sdb, sdc, sdd, and sde listed on both nodes.
Node 1:
5. Configure Oracle ASM
1. Disk Partitioning
In this step, we create a primary partition on each shared disk using the fdisk command. These partitions will be used later for Oracle ASM disk configuration. Repeat the same steps for all shared disks on both RAC nodes.
[root@dbasimplified1 ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x18c14ce9. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039 Partition 1 of type Linux and of size 20 GiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# fdisk /dev/sdc Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x674456e5. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039 Partition 1 of type Linux and of size 20 GiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.2. Configure oracleasm Utility
In this step, we configure the oracleasm utility to manage ASM disks. The ASM driver is configured to start automatically on system boot and scan for ASM disks, with ownership assigned to the grid user and asmadmin group.
[root@dbasimplified1 ~]# oracleasm configure -i Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded 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 driver interface []: grid Default group to own the driver interface []: asmadmin Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done3. Initialize ASMLib
In this step, the oracleasm init command is executed to load the Oracle ASM module and mount the ASMLib filesystem. This allows the system to detect and manage ASM disks properly for the Oracle RAC setup.
[root@dbasimplified1 ~]# oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Configuring "oracleasm" to use device physical block size Mounting ASMlib driver filesystem: /dev/oracleasm4. Create ASM Disks
In this step, the shared disk partitions are labeled as ASM disks using the oracleasm createdisk command. After creating the disks, the system scans and lists the ASM disks to verify that they are detected successfully.
[root@dbasimplified1 ~]# oracleasm createdisk DATA /dev/sdb1 Writing disk header: done Instantiating disk: done [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# oracleasm createdisk DATA02 /dev/sdc1 Writing disk header: done Instantiating disk: done [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... [root@dbasimplified1 ~]# [root@dbasimplified1 ~]# oracleasm listdisks DATA DATA02
Repeat the same configuration on Node 2.
1. Configure oracleasm Utility on Node 2
In this step, the oracleasm utility is configured on the second RAC node with the same settings as Node 1. This ensures consistent ASM disk ownership and allows the system to scan ASM disks automatically on boot.
[root@dbasimplified2 ~]# oracleasm configure -i Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded 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 driver interface []: grid Default group to own the driver interface []: asmadmin Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done2. Initialize ASMLib on Node 2
In this step, the oracleasm init command is executed on the second RAC node to load the ASM module and mount the ASMLib filesystem. This ensures that the node is ready to detect and use the shared ASM disks.
[root@dbasimplified2 ~]# oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Configuring "oracleasm" to use device physical block size Mounting ASMlib driver filesystem: /dev/oracleasm3. Verify ASM Disks on Node 2
In this step, the ASM disks created on Node 1 are scanned and verified on the second RAC node. The output confirms that the ASM disks are successfully detected and available on both nodes.
[root@dbasimplified2 ~]# oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... Instantiating disk "DATA02" Instantiating disk "DATA" [root@dbasimplified2 ~]# [root@dbasimplified2 ~]# oracleasm listdisks DATA DATA02
6. Pre-checks for Oracle RAC setup
1. Extract Oracle Grid Infrastructure SoftwareExtract the Oracle Grid Infrastructure 19c software into the Grid home directory.
[grid@dbasimplified1 ~]$ cd /u01/app/19c/grid/ [grid@dbasimplified1 grid]$ unzip /software/LINUX.X64_193000_grid_home.zip2. Configure Passwordless SSH for Grid User
Run the sshUserSetup.sh script to configure passwordless SSH access for the grid user across both RAC nodes, which is required for Oracle RAC installation and cluster communication.
[grid@dbasimplified1 ~]$ cd /u01/app/19c/grid/deinstall/ [grid@dbasimplified1 deinstall]$ ./sshUserSetup.sh -user grid -hosts 'dbasimplified1 dbasimplified2' -noPromptPassphrase -confirm -advanced3. Run Cluster Verification Pre-Checks
Execute the runcluvfy.sh script to validate system readiness and perform pre-installation checks for Oracle Grid Infrastructure across both RAC nodes.
[grid@dbasimplified1 ~]$ cd /u01/app/19c/grid/ [grid@dbasimplified1 grid]$ ./runcluvfy.sh stage -pre crsinst -n dbasimplified1,dbasimplified2 -verbose Verifying Physical Memory ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 3.544GB (3716180.0KB) 8GB (8388608.0KB) failed dbasimplified1 3.544GB (3716164.0KB) 8GB (8388608.0KB) failed Verifying Physical Memory ...FAILED (PRVF-7530) Verifying Available Physical Memory ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 2.816GB (2952812.0KB) 50MB (51200.0KB) passed dbasimplified1 2.7362GB (2869140.0KB) 50MB (51200.0KB) passed Verifying Available Physical Memory ...PASSED Verifying Swap Size ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 20GB (2.0971516E7KB) 3.544GB (3716180.0KB) passed dbasimplified1 20GB (2.0971516E7KB) 3.544GB (3716164.0KB) passed Verifying Swap Size ...PASSED Verifying Free Space: dbasimplified2:/usr,dbasimplified2:/etc,dbasimplified2:/sbin ... Path Node Name Mount point Available Required Status ---------------- ------------ ------------ ------------ ------------ ------------ /usr dbasimplified2 / 117.9219GB 25MB passed /etc dbasimplified2 / 117.9219GB 25MB passed /sbin dbasimplified2 / 117.9219GB 10MB passed Verifying Free Space: dbasimplified2:/usr,dbasimplified2:/etc,dbasimplified2:/sbin ...PASSED Verifying Free Space: dbasimplified2:/var ... Path Node Name Mount point Available Required Status ---------------- ------------ ------------ ------------ ------------ ------------ /var dbasimplified2 /var 8.292GB 5MB passed Verifying Free Space: dbasimplified2:/var ...PASSED Verifying Free Space: dbasimplified2:/tmp ... Path Node Name Mount point Available Required Status ---------------- ------------ ------------ ------------ ------------ ------------ /tmp dbasimplified2 /tmp 20.9131GB 1GB passed Verifying Free Space: dbasimplified2:/tmp ...PASSED Verifying Free Space: dbasimplified1:/usr,dbasimplified1:/etc,dbasimplified1:/sbin ... Path Node Name Mount point Available Required Status ---------------- ------------ ------------ ------------ ------------ ------------ /usr dbasimplified1 / 111.6894GB 25MB passed /etc dbasimplified1 / 111.6894GB 25MB passed /sbin dbasimplified1 / 111.6894GB 10MB passed Verifying Free Space: dbasimplified1:/usr,dbasimplified1:/etc,dbasimplified1:/sbin ...PASSED Verifying Free Space: dbasimplified1:/var ... Path Node Name Mount point Available Required Status ---------------- ------------ ------------ ------------ ------------ ------------ /var dbasimplified1 /var 8.2988GB 5MB passed Verifying Free Space: dbasimplified1:/var ...PASSED Verifying Free Space: dbasimplified1:/tmp ... Path Node Name Mount point Available Required Status ---------------- ------------ ------------ ------------ ------------ ------------ /tmp dbasimplified1 /tmp 20.8838GB 1GB passed Verifying Free Space: dbasimplified1:/tmp ...PASSED Verifying User Existence: grid ... Node Name Status Comment ------------ ------------------------ ------------------------ dbasimplified2 passed exists(54331) dbasimplified1 passed exists(54331) Verifying Users With Same UID: 54331 ...PASSED Verifying User Existence: grid ...PASSED Verifying Group Existence: asmadmin ... Node Name Status Comment ------------ ------------------------ ------------------------ dbasimplified2 passed exists dbasimplified1 passed exists Verifying Group Existence: asmadmin ...PASSED Verifying Group Existence: asmdba ... Node Name Status Comment ------------ ------------------------ ------------------------ dbasimplified2 passed exists dbasimplified1 passed exists Verifying Group Existence: asmdba ...PASSED Verifying Group Existence: oinstall ... Node Name Status Comment ------------ ------------------------ ------------------------ dbasimplified2 passed exists dbasimplified1 passed exists Verifying Group Existence: oinstall ...PASSED Verifying Group Membership: asmdba ... Node Name User Exists Group Exists User in Group Status ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 yes yes yes passed dbasimplified1 yes yes yes passed Verifying Group Membership: asmdba ...PASSED Verifying Group Membership: asmadmin ... Node Name User Exists Group Exists User in Group Status ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 yes yes yes passed dbasimplified1 yes yes yes passed Verifying Group Membership: asmadmin ...PASSED Verifying Group Membership: oinstall(Primary) ... Node Name User Exists Group Exists User in Group Primary Status ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified2 yes yes yes yes passed dbasimplified1 yes yes yes yes passed Verifying Group Membership: oinstall(Primary) ...PASSED Verifying Run Level ... Node Name run level Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 5 3,5 passed dbasimplified1 5 3,5 passed Verifying Run Level ...PASSED Verifying Hard Limit: maximum open file descriptors ... Node Name Type Available Required Status ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 hard 4096 65536 failed dbasimplified1 hard 4096 65536 failed Verifying Hard Limit: maximum open file descriptors ...FAILED (PRVG-0446) Verifying Soft Limit: maximum open file descriptors ... Node Name Type Available Required Status ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 soft 1024 1024 passed dbasimplified1 soft 1024 1024 passed Verifying Soft Limit: maximum open file descriptors ...PASSED Verifying Hard Limit: maximum user processes ... Node Name Type Available Required Status ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 hard 14361 16384 failed dbasimplified1 hard 14361 16384 failed Verifying Hard Limit: maximum user processes ...FAILED (PRVG-0448) Verifying Soft Limit: maximum user processes ... Node Name Type Available Required Status ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 soft 4096 2047 passed dbasimplified1 soft 4096 2047 passed Verifying Soft Limit: maximum user processes ...PASSED Verifying Soft Limit: maximum stack size ... Node Name Type Available Required Status ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 soft 8192 10240 failed dbasimplified1 soft 8192 10240 failed Verifying Soft Limit: maximum stack size ...FAILED (PRVG-0449) Verifying Architecture ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 x86_64 x86_64 passed dbasimplified1 x86_64 x86_64 passed Verifying Architecture ...PASSED Verifying OS Kernel Version ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 5.4.17-2136.338.4.2.el7uek.x86_64 4.1.12 passed dbasimplified1 5.4.17-2136.338.4.2.el7uek.x86_64 4.1.12 passed Verifying OS Kernel Version ...PASSED Verifying OS Kernel Parameter: semmsl ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 250 250 250 passed dbasimplified2 250 250 250 passed Verifying OS Kernel Parameter: semmsl ...PASSED Verifying OS Kernel Parameter: semmns ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 32000 32000 32000 passed dbasimplified2 32000 32000 32000 passed Verifying OS Kernel Parameter: semmns ...PASSED Verifying OS Kernel Parameter: semopm ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 100 100 100 passed dbasimplified2 100 100 100 passed Verifying OS Kernel Parameter: semopm ...PASSED Verifying OS Kernel Parameter: semmni ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 128 128 128 passed dbasimplified2 128 128 128 passed Verifying OS Kernel Parameter: semmni ...PASSED Verifying OS Kernel Parameter: shmmax ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 4398046511104 4398046511104 1902675968 passed dbasimplified2 4398046511104 4398046511104 1902684160 passed Verifying OS Kernel Parameter: shmmax ...PASSED Verifying OS Kernel Parameter: shmmni ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 4096 4096 4096 passed dbasimplified2 4096 4096 4096 passed Verifying OS Kernel Parameter: shmmni ...PASSED Verifying OS Kernel Parameter: shmall ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 1073741824 1073741824 1073741824 passed dbasimplified2 1073741824 1073741824 1073741824 passed Verifying OS Kernel Parameter: shmall ...PASSED Verifying OS Kernel Parameter: file-max ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 6815744 6815744 6815744 passed dbasimplified2 6815744 6815744 6815744 passed Verifying OS Kernel Parameter: file-max ...PASSED Verifying OS Kernel Parameter: ip_local_port_range ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 between 9000 & 65500 between 9000 & 65500 between 9000 & 65535 passed dbasimplified2 between 9000 & 65500 between 9000 & 65500 between 9000 & 65535 passed Verifying OS Kernel Parameter: ip_local_port_range ...PASSED Verifying OS Kernel Parameter: rmem_default ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 262144 262144 262144 passed dbasimplified2 262144 262144 262144 passed Verifying OS Kernel Parameter: rmem_default ...PASSED Verifying OS Kernel Parameter: rmem_max ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 4194304 4194304 4194304 passed dbasimplified2 4194304 4194304 4194304 passed Verifying OS Kernel Parameter: rmem_max ...PASSED Verifying OS Kernel Parameter: wmem_default ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 262144 262144 262144 passed dbasimplified2 262144 262144 262144 passed Verifying OS Kernel Parameter: wmem_default ...PASSED Verifying OS Kernel Parameter: wmem_max ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 1048576 1048576 1048576 passed dbasimplified2 1048576 1048576 1048576 passed Verifying OS Kernel Parameter: wmem_max ...PASSED Verifying OS Kernel Parameter: aio-max-nr ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 1048576 1048576 1048576 passed dbasimplified2 1048576 1048576 1048576 passed Verifying OS Kernel Parameter: aio-max-nr ...PASSED Verifying OS Kernel Parameter: panic_on_oops ... Node Name Current Configured Required Status Comment ---------------- ------------ ------------ ------------ ------------ ------------ dbasimplified1 1 1 1 passed dbasimplified2 1 1 1 passed Verifying OS Kernel Parameter: panic_on_oops ...PASSED Verifying Package: kmod-20-21 (x86_64) ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 kmod(x86_64)-20-28.0.3.el7 kmod(x86_64)-20-21 passed dbasimplified1 kmod(x86_64)-20-28.0.3.el7 kmod(x86_64)-20-21 passed Verifying Package: kmod-20-21 (x86_64) ...PASSED Verifying Package: kmod-libs-20-21 (x86_64) ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 kmod-libs(x86_64)-20-28.0.3.el7 kmod-libs(x86_64)-20-21 passed dbasimplified1 kmod-libs(x86_64)-20-28.0.3.el7 kmod-libs(x86_64)-20-21 passed Verifying Package: kmod-libs-20-21 (x86_64) ...PASSED Verifying Package: binutils-2.23.52.0.1 ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 binutils-2.27-44.base.0.3.el7_9.1 binutils-2.23.52.0.1 passed dbasimplified1 binutils-2.27-44.base.0.3.el7_9.1 binutils-2.23.52.0.1 passed Verifying Package: binutils-2.23.52.0.1 ...PASSED Verifying Package: compat-libcap1-1.10 ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 compat-libcap1-1.10-7.el7 compat-libcap1-1.10 passed dbasimplified1 compat-libcap1-1.10-7.el7 compat-libcap1-1.10 passed Verifying Package: compat-libcap1-1.10 ...PASSED Verifying Package: libgcc-4.8.2 (x86_64) ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 libgcc(x86_64)-4.8.5-44.0.3.el7 libgcc(x86_64)-4.8.2 passed dbasimplified1 libgcc(x86_64)-4.8.5-44.0.3.el7 libgcc(x86_64)-4.8.2 passed Verifying Package: libgcc-4.8.2 (x86_64) ...PASSED Verifying Package: libstdc++-4.8.2 (x86_64) ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 libstdc++(x86_64)-4.8.5-44.0.3.el7 libstdc++(x86_64)-4.8.2 passed dbasimplified1 libstdc++(x86_64)-4.8.5-44.0.3.el7 libstdc++(x86_64)-4.8.2 passed Verifying Package: libstdc++-4.8.2 (x86_64) ...PASSED Verifying Package: libstdc++-devel-4.8.2 (x86_64) ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 libstdc++-devel(x86_64)-4.8.5-44.0.3.el7 libstdc++-devel(x86_64)-4.8.2 passed dbasimplified1 libstdc++-devel(x86_64)-4.8.5-44.0.3.el7 libstdc++-devel(x86_64)-4.8.2 passed Verifying Package: libstdc++-devel-4.8.2 (x86_64) ...PASSED Verifying Package: sysstat-10.1.5 ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 sysstat-10.1.5-20.0.3.el7_9 sysstat-10.1.5 passed dbasimplified1 sysstat-10.1.5-20.0.3.el7_9 sysstat-10.1.5 passed Verifying Package: sysstat-10.1.5 ...PASSED Verifying Package: ksh ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 ksh ksh passed dbasimplified1 ksh ksh passed Verifying Package: ksh ...PASSED Verifying Package: make-3.82 ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 make-3.82-24.el7 make-3.82 passed dbasimplified1 make-3.82-24.el7 make-3.82 passed Verifying Package: make-3.82 ...PASSED Verifying Package: glibc-2.17 (x86_64) ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 glibc(x86_64)-2.17-326.0.9.el7_9.3 glibc(x86_64)-2.17 passed dbasimplified1 glibc(x86_64)-2.17-326.0.9.el7_9.3 glibc(x86_64)-2.17 passed Verifying Package: glibc-2.17 (x86_64) ...PASSED Verifying Package: glibc-devel-2.17 (x86_64) ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 glibc-devel(x86_64)-2.17-326.0.9.el7_9.3 glibc-devel(x86_64)-2.17 passed dbasimplified1 glibc-devel(x86_64)-2.17-326.0.9.el7_9.3 glibc-devel(x86_64)-2.17 passed Verifying Package: glibc-devel-2.17 (x86_64) ...PASSED Verifying Package: libaio-0.3.109 (x86_64) ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 libaio(x86_64)-0.3.109-13.el7 libaio(x86_64)-0.3.109 passed dbasimplified1 libaio(x86_64)-0.3.109-13.el7 libaio(x86_64)-0.3.109 passed Verifying Package: libaio-0.3.109 (x86_64) ...PASSED Verifying Package: libaio-devel-0.3.109 (x86_64) ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 libaio-devel(x86_64)-0.3.109-13.el7 libaio-devel(x86_64)-0.3.109 passed dbasimplified1 libaio-devel(x86_64)-0.3.109-13.el7 libaio-devel(x86_64)-0.3.109 passed Verifying Package: libaio-devel-0.3.109 (x86_64) ...PASSED Verifying Package: nfs-utils-1.2.3-15 ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 nfs-utils-1.3.0-0.68.0.1.el7.2 nfs-utils-1.2.3-15 passed dbasimplified1 nfs-utils-1.3.0-0.68.0.1.el7.2 nfs-utils-1.2.3-15 passed Verifying Package: nfs-utils-1.2.3-15 ...PASSED Verifying Package: smartmontools-6.2-4 ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 smartmontools-7.0-2.el7 smartmontools-6.2-4 passed dbasimplified1 smartmontools-7.0-2.el7 smartmontools-6.2-4 passed Verifying Package: smartmontools-6.2-4 ...PASSED Verifying Package: net-tools-2.0-0.17 ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 net-tools-2.0-0.25.20131004git.el7 net-tools-2.0-0.17 passed dbasimplified1 net-tools-2.0-0.25.20131004git.el7 net-tools-2.0-0.17 passed Verifying Package: net-tools-2.0-0.17 ...PASSED Verifying Port Availability for component "Oracle Notification Service (ONS)" ... Node Name Port Number Protocol Available Status ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 6200 TCP yes successful dbasimplified1 6200 TCP yes successful dbasimplified2 6100 TCP yes successful dbasimplified1 6100 TCP yes successful Verifying Port Availability for component "Oracle Notification Service (ONS)" ...PASSED Verifying Port Availability for component "Oracle Cluster Synchronization Services (CSSD)" ... Node Name Port Number Protocol Available Status ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 42424 TCP yes successful dbasimplified1 42424 TCP yes successful Verifying Port Availability for component "Oracle Cluster Synchronization Services (CSSD)" ...PASSED Verifying Users With Same UID: 0 ...PASSED Verifying Current Group ID ...PASSED Verifying Root user consistency ... Node Name Status ------------------------------------ ------------------------ dbasimplified2 passed dbasimplified1 passed Verifying Root user consistency ...PASSED Verifying Package: cvuqdisk-1.0.10-1 ... Node Name Available Required Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 missing cvuqdisk-1.0.10-1 failed dbasimplified1 missing cvuqdisk-1.0.10-1 failed Verifying Package: cvuqdisk-1.0.10-1 ...FAILED (PRVG-11550) Verifying Host name ...PASSED Verifying Node Connectivity ... Verifying Hosts File ... Node Name Status ------------------------------------ ------------------------ dbasimplified1 passed dbasimplified2 passed Verifying Hosts File ...PASSED Interface information for node "dbasimplified2" Name IP Address Subnet Gateway Def. Gateway HW Address MTU ------ --------------- --------------- --------------- --------------- ----------------- ------ enp0s3 192.168.56.12 192.168.56.0 0.0.0.0 192.168.0.1 08:00:27:5A:0B:AF 1500 enp0s8 192.168.10.12 192.168.10.0 0.0.0.0 192.168.0.1 08:00:27:7B:77:2A 1500 enp0s9 192.168.0.108 192.168.0.0 0.0.0.0 192.168.0.1 08:00:27:9F:2F:6B 1500 Interface information for node "dbasimplified1" Name IP Address Subnet Gateway Def. Gateway HW Address MTU ------ --------------- --------------- --------------- --------------- ----------------- ------ enp0s3 192.168.56.11 192.168.56.0 0.0.0.0 192.168.0.1 08:00:27:37:76:6D 1500 enp0s8 192.168.10.11 192.168.10.0 0.0.0.0 192.168.0.1 08:00:27:8E:AA:53 1500 enp0s9 192.168.0.107 192.168.0.0 0.0.0.0 192.168.0.1 08:00:27:C3:AB:03 1500 Check: MTU consistency of the subnet "192.168.0.0". Node Name IP Address Subnet MTU ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 enp0s9 192.168.0.108 192.168.0.0 1500 dbasimplified1 enp0s9 192.168.0.107 192.168.0.0 1500 Check: MTU consistency of the subnet "192.168.56.0". Node Name IP Address Subnet MTU ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 enp0s3 192.168.56.12 192.168.56.0 1500 dbasimplified1 enp0s3 192.168.56.11 192.168.56.0 1500 Check: MTU consistency of the subnet "192.168.10.0". Node Name IP Address Subnet MTU ---------------- ------------ ------------ ------------ ---------------- dbasimplified2 enp0s8 192.168.10.12 192.168.10.0 1500 dbasimplified1 enp0s8 192.168.10.11 192.168.10.0 1500 Verifying Check that maximum (MTU) size packet goes through subnet ...PASSED Source Destination Connected? ------------------------------ ------------------------------ ---------------- dbasimplified1[enp0s9:192.168.0.107] dbasimplified2[enp0s9:192.168.0.108] yes Source Destination Connected? ------------------------------ ------------------------------ ---------------- dbasimplified1[enp0s3:192.168.56.11] dbasimplified2[enp0s3:192.168.56.12] yes Source Destination Connected? ------------------------------ ------------------------------ ---------------- dbasimplified1[enp0s8:192.168.10.11] dbasimplified2[enp0s8:192.168.10.12] yes Verifying subnet mask consistency for subnet "192.168.0.0" ...PASSED Verifying subnet mask consistency for subnet "192.168.56.0" ...PASSED Verifying subnet mask consistency for subnet "192.168.10.0" ...PASSED Verifying Node Connectivity ...PASSED Verifying Multicast or broadcast check ... Checking subnet "192.168.0.0" for multicast communication with multicast group "224.0.0.251" Verifying Multicast or broadcast check ...PASSED Verifying Network Time Protocol (NTP) ... Verifying '/etc/ntp.conf' ... Node Name File exists? ------------------------------------ ------------------------ dbasimplified2 yes dbasimplified1 yes Verifying '/etc/ntp.conf' ...PASSED Verifying '/etc/chrony.conf' ... Node Name File exists? ------------------------------------ ------------------------ dbasimplified2 yes dbasimplified1 yes Verifying '/etc/chrony.conf' ...PASSED Verifying Network Time Protocol (NTP) ...PASSED Verifying Same core file name pattern ...PASSED Verifying User Mask ... Node Name Available Required Comment ------------ ------------------------ ------------------------ ---------- dbasimplified2 0022 0022 passed dbasimplified1 0022 0022 passed Verifying User Mask ...PASSED Verifying User Not In Group "root": grid ... Node Name Status Comment ------------ ------------------------ ------------------------ dbasimplified2 passed does not exist dbasimplified1 passed does not exist Verifying User Not In Group "root": grid ...PASSED Verifying Time zone consistency ...PASSED Verifying Time offset between nodes ...PASSED Verifying resolv.conf Integrity ... Node Name Status ------------------------------------ ------------------------ dbasimplified1 passed dbasimplified2 passed checking response for name "dbasimplified2" from each of the name servers specified in "/etc/resolv.conf" Node Name Source Comment Status ------------ ------------------------ ------------------------ ---------- dbasimplified2 192.168.0.1 IPv4 passed checking response for name "dbasimplified1" from each of the name servers specified in "/etc/resolv.conf" Node Name Source Comment Status ------------ ------------------------ ------------------------ ---------- dbasimplified1 192.168.0.1 IPv4 passed Verifying resolv.conf Integrity ...PASSED Verifying DNS/NIS name service ...PASSED Verifying Domain Sockets ...PASSED Verifying /boot mount ...PASSED Verifying Daemon "avahi-daemon" not configured and running ... Node Name Configured Status ------------ ------------------------ ------------------------ dbasimplified2 no passed dbasimplified1 no passed Node Name Running? Status ------------ ------------------------ ------------------------ dbasimplified2 no passed dbasimplified1 no passed Verifying Daemon "avahi-daemon" not configured and running ...PASSED Verifying Daemon "proxyt" not configured and running ... Node Name Configured Status ------------ ------------------------ ------------------------ dbasimplified2 no passed dbasimplified1 no passed Node Name Running? Status ------------ ------------------------ ------------------------ dbasimplified2 no passed dbasimplified1 no passed Verifying Daemon "proxyt" not configured and running ...PASSED Verifying User Equivalence ...PASSED Verifying RPM Package Manager database ...INFORMATION (PRVG-11250) Verifying /dev/shm mounted as temporary file system ...FAILED (PRVE-0426) Verifying File system mount options for path /var ...PASSED Verifying DefaultTasksMax parameter ...PASSED Verifying zeroconf check ...PASSED Verifying ASM Filter Driver configuration ...PASSED Verifying Systemd login manager IPC parameter ...PASSED Pre-check for cluster services setup was unsuccessful on all the nodes. Failures were encountered during execution of CVU verification request "stage -pre crsinst". Verifying Physical Memory ...FAILED dbasimplified2: PRVF-7530 : Sufficient physical memory is not available on node "dbasimplified2" [Required physical memory = 8GB (8388608.0KB)] dbasimplified1: PRVF-7530 : Sufficient physical memory is not available on node "dbasimplified1" [Required physical memory = 8GB (8388608.0KB)] Verifying Hard Limit: maximum open file descriptors ...FAILED dbasimplified2: PRVG-0446 : Proper hard limit for maximum open file descriptors was not found on node "dbasimplified2" [Expected >= "65536" ; Found = "4096"]. dbasimplified1: PRVG-0446 : Proper hard limit for maximum open file descriptors was not found on node "dbasimplified1" [Expected >= "65536" ; Found = "4096"]. Verifying Hard Limit: maximum user processes ...FAILED dbasimplified2: PRVG-0448 : Proper hard limit for maximum user processes was not found on node "dbasimplified2" [Expected >= "16384" ; Found = "14361"]. dbasimplified1: PRVG-0448 : Proper hard limit for maximum user processes was not found on node "dbasimplified1" [Expected >= "16384" ; Found = "14361"]. Verifying Soft Limit: maximum stack size ...FAILED dbasimplified2: PRVG-0449 : Proper soft limit for maximum stack size was not found on node "dbasimplified2" [Expected >= "10240" ; Found = "8192"]. dbasimplified1: PRVG-0449 : Proper soft limit for maximum stack size was not found on node "dbasimplified1" [Expected >= "10240" ; Found = "8192"]. Verifying Package: cvuqdisk-1.0.10-1 ...FAILED dbasimplified2: PRVG-11550 : Package "cvuqdisk" is missing on node "dbasimplified2" dbasimplified1: PRVG-11550 : Package "cvuqdisk" is missing on node "dbasimplified1" Verifying RPM Package Manager database ...INFORMATION PRVG-11250 : The check "RPM Package Manager database" was not performed because it needs 'root' user privileges. Verifying /dev/shm mounted as temporary file system ...FAILED dbasimplified2: PRVE-0426 : The size of in-memory file system mounted as /dev/shm is "1843" megabytes which is less than the required size of "2048" megabytes on node "dbasimplified2" dbasimplified1: PRVE-0426 : The size of in-memory file system mounted as /dev/shm is "1843" megabytes which is less than the required size of "2048" megabytes on node "dbasimplified1" CVU operation performed: stage -pre crsinst Date: Dec 27, 2025 3:58:29 PM CVU home: /u01/app/19c/grid/ User: grid
7. Install Oracle Grid Infrastructure
1. Launch Oracle Grid Infrastructure Installer
Move to the Oracle Grid Infrastructure home directory and run the gridSetup.sh script to start the Grid Infrastructure installation wizard.
[grid@dbasimplified1 ~]$ cd /u01/app/19c/grid/ [grid@dbasimplified1 grid]$ [grid@dbasimplified1 grid]$ ./gridSetup.sh Launching Oracle Grid Infrastructure Setup Wizard...2. Select Grid Infrastructure Configuration Option
On the configuration option screen, choose Configure Oracle Grid Infrastructure for a New Cluster to set up a new Oracle RAC cluster, then click Next to continue.
On the Cluster Configuration screen, choose Configure an Oracle Standalone Cluster to set up a standard Oracle RAC cluster, then click Next to proceed with the installation.
On the Grid Plug and Play Information screen, choose Create Local SCAN and provide the Cluster Name, SCAN Name, and SCAN Port. This configures SCAN for client connectivity to the Oracle RAC cluster. Click Next to continue.
On the Cluster Node Information screen, confirm that both RAC nodes are added with the correct public hostnames and virtual hostnames (VIPs). Click on SSH connectivity to test passwordless SSH access between the nodes, then click Next to continue.
6. Configure Network Interface Usage
On the Network Interface Usage screen, configure the public interface for client access, assign a private interface for ASM and inter-node communication, and mark unused interfaces accordingly. Click Next to continue.
7. Select Storage Option for Grid Infrastructure
On the Storage Option Information screen, choose Use Oracle Flex ASM for storage to configure OCR and voting disks on ASM storage. This is the recommended option for Oracle RAC environments. Click Next to continue.
On the Grid Infrastructure Management Repository screen, choose No to skip configuring the management repository. This option is commonly skipped in lab or learning environments. Click Next to continue.
9. Create ASM Disk Group
9. Create ASM Disk Group
On the Create ASM Disk Group screen, specify the disk group name as DATA, select External redundancy, and choose the ASM disks from the disk discovery path /dev/oracleasm/disks. This disk group will be used to store OCR and voting disks. Click Next to continue.
On the Specify ASM Password screen, choose Use same passwords for these accounts and provide a strong password for the ASM users. This password will be used for ASM administration. Click Next to continue.
On the Failure Isolation Support screen, choose Do not use Intelligent Platform Management Interface (IPMI). Click Next to proceed.
On the Specify Management Options screen, do not register the Grid Infrastructure with Enterprise Manager Cloud Control. Click Next to continue.
On the Privileged Operating System Groups screen, assign the appropriate operating system groups for ASM administration, ASM DBA access, and ASM operator roles. These groups control ASM privileges at the OS level. Click Next to continue.
14. Specify Grid Infrastructure Installation Location
14. Specify Grid Infrastructure Installation Location
On the Specify Installation Location screen, confirm the directory location as configured earlier. Ensure the paths are correct and click Next to proceed.
On the Root Script Execution Configuration screen, enable Automatically run configuration scripts and choose the root user credential option. Enter the root password to allow the installer to execute required root scripts automatically, then click Next.
16. Perform Prerequisite Checks
16. Perform Prerequisite Checks
On the Prerequisite Checks screen, review the validation results. In lab or VirtualBox environments, some checks such as physical memory or DNS may show warnings. These can be safely ignored after verification. Click Next to continue with the installation.
On the Summary screen, review all selected configuration settings for the Oracle Grid Infrastructure installation. Once verified, click Install to begin the installation process.
18. Verify Oracle Grid Infrastructure and Cluster Status
Verify the Oracle RAC cluster status by checking node membership, CRS services, ASM status, and cluster resources to ensure Grid Infrastructure is running successfully on both nodes.
[grid@dbasimplified1 bin]$ cd /u01/app/19c/grid/bin [grid@dbasimplified1 bin]$ ./olsnodes -n dbasimplified1 1 dbasimplified2 2 [grid@dbasimplified1 bin]$ [grid@dbasimplified1 bin]$ ./crsctl check crs CRS-4638: Oracle High Availability Services is online CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online [grid@dbasimplified1 bin]$ [grid@dbasimplified1 bin]$ ./srvctl status asm ASM is running on dbasimplified2,dbasimplified1 [grid@dbasimplified1 bin]$ [grid@dbasimplified1 bin]$ ./crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE ONLINE dbasimplified1 STABLE ONLINE OFFLINE dbasimplified2 STABLE ora.chad ONLINE ONLINE dbasimplified1 STABLE ONLINE ONLINE dbasimplified2 STABLE ora.net1.network ONLINE ONLINE dbasimplified1 STABLE ONLINE ONLINE dbasimplified2 STABLE ora.ons ONLINE ONLINE dbasimplified1 STABLE ONLINE ONLINE dbasimplified2 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 STABLE 2 ONLINE ONLINE dbasimplified2 STABLE 3 ONLINE OFFLINE STABLE ora.DATA.dg(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 STABLE 2 ONLINE ONLINE dbasimplified2 STABLE 3 OFFLINE OFFLINE STABLE ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE dbasimplified2 STABLE ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE dbasimplified2 STABLE ora.LISTENER_SCAN3.lsnr 1 ONLINE ONLINE dbasimplified2 STABLE ora.asm(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 Started,STABLE 2 ONLINE ONLINE dbasimplified2 Started,STABLE 3 OFFLINE OFFLINE STABLE ora.asmnet1.asmnetwork(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 STABLE 2 ONLINE ONLINE dbasimplified2 STABLE 3 OFFLINE OFFLINE STABLE ora.cvu 1 ONLINE ONLINE dbasimplified2 STABLE ora.dbasimplified1.vip 1 ONLINE ONLINE dbasimplified1 STABLE ora.dbasimplified2.vip 1 ONLINE ONLINE dbasimplified2 STABLE ora.qosmserver 1 ONLINE ONLINE dbasimplified2 STABLE ora.scan1.vip 1 ONLINE ONLINE dbasimplified2 STABLE ora.scan2.vip 1 ONLINE ONLINE dbasimplified2 STABLE ora.scan3.vip 1 ONLINE ONLINE dbasimplified2 STABLE --------------------------------------------------------------------------------
8. Install Oracle 19c Database software
1. Configure Passwordless SSH for Oracle User
Run the sshUserSetup.sh script to set up passwordless SSH access for the oracle user across both RAC nodes. This is required for Oracle 19c RAC database software installation.
[oracle@dbasimplified1 db_home1]$ cd /u01/app/19c/grid/deinstall/ [oracle@dbasimplified1 deinstall]$ [oracle@dbasimplified1 deinstall]$ ./sshUserSetup.sh -user oracle -hosts 'dbasimplified1 dbasimplified2' -noPromptPassphrase -confirm -advanced2. Extract Oracle 19c Database Software
Unzip the Oracle 19c database software installation files into the Oracle database home directory to prepare for the RAC database software installation.
[oracle@dbasimplified1 ~]$ cd /u01/app/oracle/product/19c/db_home1 [oracle@dbasimplified1 db_home1]$ [oracle@dbasimplified1 db_home1]$ unzip /software/LINUX.X64_193000_db_home.zip3. Launch Oracle 19c Database Installer
Execute the runInstaller script from the Oracle database home directory to start the Oracle 19c Database software installation wizard for RAC.
[oracle@dbasimplified1 db_home1]$ ./runInstaller Launching Oracle Database Setup Wizard...4. Select Oracle Database Installation Option
On the Select Configuration Option screen, choose Set Up Software Only. For Oracle RAC installations, the database software is installed first and the database is created later using DBCA. Click Next to continue.
On the Database Installation Option screen, choose Oracle Real Application Clusters database installation to install the database software in a RAC environment. Click Next to proceed.
On the Select List of Nodes screen, ensure both RAC nodes are selected for the database software installation.
Test SSH connectivity to confirm that passwordless SSH is already configured between the nodes, then click Next to proceed.
Test SSH connectivity to confirm that passwordless SSH is already configured between the nodes, then click Next to proceed.
On the Select Database Edition screen, choose Enterprise Edition, which is required for Oracle RAC features, and click Next to proceed with the installation.
On the Specify Installation Location screen, confirm the Oracle base directory for the RAC database software installation. Ensure the locations are correct and click Next to proceed.
On the Privileged Operating System Groups screen, assign the required operating system groups for database administration, backup and recovery, Data Guard, encryption management, and RAC administration. These groups control database privileges at the OS level. Click Next to continue.
On the Root Script Execution Configuration screen, select Automatically run configuration scripts and choose the root user credential option. Provide the root password to allow the installer to run required root scripts automatically, then click Next to continue.
11. Perform Database Prerequisite Checks
On the Perform Prerequisite Checks screen, review the validation results for clock synchronization, NTP, and SCAN-related checks. In testing environments, these warnings can be safely ignored after verification. Click Next to continue with the installation.
On the Summary screen, review all selected configuration details including database edition, Oracle base, database home, OS groups, and selected RAC nodes. Once verified, click Install to start the Oracle 19c RAC database software installation.
The Oracle Database 19c software has been successfully installed and registered on all RAC nodes. Click Close to exit the installer.
9. Create ASM disk groups using ASMCA
1. Launch ASM Configuration Assistant (ASMCA)
Run the asmca utility from the Grid Infrastructure bin directory to open the ASM Configuration Assistant. ASMCA is used to create and manage ASM disk groups for the RAC database.
[grid@dbasimplified1 ~]$ cd /u01/app/19c/grid/bin/ [grid@dbasimplified1 bin]$ ./asmca2. ASM Configuration Assistant (ASMCA) Home Screen
After launching ASM Configuration Assistant, the welcome screen is displayed. From here, navigate to Disk Groups to create, configure, or manage ASM disk groups.
On the Create Disk Group screen in ASMCA, specify the disk group name as FRA, select External (None) redundancy, choose the available ASM disk from the disk discovery path, and click OK to create the FRA disk group.
4. Verify FRA ASM Disk Group Creation
4. Verify FRA ASM Disk Group Creation
After creating the FRA disk group, verify in ASMCA that both DATA and FRA disk groups are listed and mounted on all RAC nodes. This confirms that the ASM disk groups are ready.
5. Create RECO ASM Disk Group
Create a new partition for the RECO disk, mark it as an ASM disk using oracleasm, and then repeat the same ASMCA steps to create the RECO disk group.
10. Create the Oracle RAC database
1. Launch Database Configuration Assistant (DBCA)
[oracle@dbasimplified1 ~]$ cd /u01/app/oracle/product/19c/db_home1/bin/ [oracle@dbasimplified1 bin]$ ./dbca2. Select Database Operation
On the Select Database Operation screen, choose Create a database to begin creating a new Oracle 19c RAC database using DBCA, then click Next to continue.
On the Select Database Creation Mode screen, choose Advanced configuration to manually define database options such as storage, memory, services, and RAC-specific settings, then click Next to continue.
On this screen, choose Oracle RAC as the database type with Admin Managed configuration. Select the General Purpose or Transaction Processing template, which is suitable for most OLTP workloads, and proceed by clicking Next.
On the Select List of Nodes screen, choose all cluster nodes on which the Oracle RAC database should run. The local node is selected by default; ensure all required nodes are checked, then click Next to proceed.
On the Specify Database Identification Details screen, provide a unique Global database name and SID prefix for the RAC database. Optionally, select Create as Container database (CDB) and configure the number and name of PDBs if required. After verifying the details, click Next to continue.
On the Select Database Storage Option screen, choose Use following for the database storage attributes and set the storage type to Automatic Storage Management (ASM). Specify +RECO/{DB_UNIQUE_NAME} as the database files location to store datafiles in the ASM RECO disk group. Ensure Use Oracle-Managed Files (OMF) is selected for automatic file naming and management, then click Next to proceed.
On the Select Fast Recovery Option screen, enable Specify Fast Recovery Area and choose Automatic Storage Management (ASM) as the recovery file storage type. Set the Fast Recovery Area to +FRA and define an appropriate FRA size. Enable archiving and keep Automatic archiving selected so that archive logs are stored in the FRA. After reviewing the archive log parameters, click Next to continue.
On the Select Oracle Data Vault Config Option screen, do not enable Oracle Database Vault or Oracle Label Security unless explicitly required for advanced security compliance. Click Next to proceed.
On the Specify Configuration Options, Select Use Automatic Shared Memory Management, set appropriate SGA and PGA sizes as per system capacity, then click Next.
On the Specify Management Options screen, do not enable CVU checks, Enterprise Manager Database Express, or EM Cloud Control registration for a basic RAC setup. These options can be configured later if required. Click Next to proceed.
On the Specify Database User Credentials screen, choose Use the same administrative password for all accounts to simplify administration. Provide a password that meets Oracle’s recommended complexity standards (uppercase, lowercase, number, and special character), confirm it, and click Next to continue.
On the Select Database Creation Option screen, choose Create database to immediately create the database after configuration. Click Next to continue.
On the Perform Prerequisite Checks screen, DBCA validates required configurations such as Single Client Access Name (SCAN) and DNS/NIS services. If the checks show warnings that are already handled or not applicable in your setup, mark them as Ignored and proceed by clicking Next.
On the Summary screen, DBCA displays the complete configuration including RAC nodes, ASM disk groups, initialization parameters, memory settings, and Fast Recovery Area. Verify the settings carefully, optionally save the response file, and click Finish to proceed with database creation.
On the Database Creation Progress Page, The progress percentage and log file locations are also displayed for monitoring and troubleshooting until the database creation is completed.
On the Finish screen, DBCA confirms that the database has been created successfully. It displays important information such as the global database name, SID prefix, server parameter file location, and log directory. By default, all accounts except SYS and SYSTEM are locked. You can use the Password Management option to unlock required accounts and update passwords before starting database operations.
- First, check the PMON processes to confirm that the ASM instance and RAC database instances are running.
- Next, set the correct ORACLE_SID and ORACLE_HOME using oraenv, then connect to the database as SYSDBA.
- Finally, query gv$database to validate that the database is open in READ WRITE mode and operating as a PRIMARY database across all cluster instances.
[oracle@dbasimplified1 ~]$ ps -ef|grep pmon oracle 1480 1606 0 14:07 pts/1 00:00:00 grep --color=auto pmon grid 5009 1 0 10:48 ? 00:00:01 asm_pmon_+ASM1 oracle 26385 1 0 14:02 ? 00:00:00 ora_pmon_test1 [oracle@dbasimplified1 ~]$ . oraenv ORACLE_SID = [test] ? test1 ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/19c/db_home1 The Oracle base remains unchanged with value /u01/app/oracle [oracle@dbasimplified1 ~]$ [oracle@dbasimplified1 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 28 14:08:18 2025 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SQL> select name, open_mode, database_role from gv$database; NAME OPEN_MODE DATABASE_ROLE --------- -------------------- ---------------- TEST READ WRITE PRIMARY TEST READ WRITE PRIMARY19. Verify Oracle Cluster Resources and RAC Database Status
Run crsctl stat res -t to verify that all Oracle Clusterware resources, ASM disk groups DATA, FRA, and RECO, SCAN listeners, VIPs, and the RAC database are ONLINE and STABLE on all cluster nodes.
[root@dbasimplified1 ~]# cd /u01/app/19c/grid/bin/ [root@dbasimplified1 bin]# ./crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE ONLINE dbasimplified1 STABLE ONLINE ONLINE dbasimplified2 STABLE ora.chad ONLINE ONLINE dbasimplified1 STABLE ONLINE ONLINE dbasimplified2 STABLE ora.net1.network ONLINE ONLINE dbasimplified1 STABLE ONLINE ONLINE dbasimplified2 STABLE ora.ons ONLINE ONLINE dbasimplified1 STABLE ONLINE ONLINE dbasimplified2 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 STABLE 2 ONLINE ONLINE dbasimplified2 STABLE 3 ONLINE OFFLINE STABLE ora.DATA.dg(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 STABLE 2 ONLINE ONLINE dbasimplified2 STABLE 3 OFFLINE OFFLINE STABLE ora.FRA.dg(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 STABLE 2 ONLINE ONLINE dbasimplified2 STABLE 3 ONLINE OFFLINE STABLE ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE dbasimplified2 STABLE ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE dbasimplified2 STABLE ora.LISTENER_SCAN3.lsnr 1 ONLINE ONLINE dbasimplified2 STABLE ora.RECO.dg(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 STABLE 2 ONLINE ONLINE dbasimplified2 STABLE 3 ONLINE OFFLINE STABLE ora.asm(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 Started,STABLE 2 ONLINE ONLINE dbasimplified2 Started,STABLE 3 OFFLINE OFFLINE STABLE ora.asmnet1.asmnetwork(ora.asmgroup) 1 ONLINE ONLINE dbasimplified1 STABLE 2 ONLINE ONLINE dbasimplified2 STABLE 3 OFFLINE OFFLINE STABLE ora.cvu 1 ONLINE ONLINE dbasimplified2 STABLE ora.dbasimplified1.vip 1 ONLINE ONLINE dbasimplified1 STABLE ora.dbasimplified2.vip 1 ONLINE ONLINE dbasimplified2 STABLE ora.qosmserver 1 ONLINE ONLINE dbasimplified2 STABLE ora.scan1.vip 1 ONLINE ONLINE dbasimplified2 STABLE ora.scan2.vip 1 ONLINE ONLINE dbasimplified2 STABLE ora.scan3.vip 1 ONLINE ONLINE dbasimplified2 STABLE ora.test.db 1 ONLINE ONLINE dbasimplified1 Open,HOME=/u01/app/o racle/product/19c/db _home1,STABLE 2 ONLINE ONLINE dbasimplified2 Open,HOME=/u01/app/o racle/product/19c/db _home1,STABLE -------------------------------------------------------------------------------- [root@dbasimplified1 bin]#
Conclusion: You have successfully configured a fully functional 2 node Oracle 19c RAC environment on VirtualBox without using DNS services. This setup demonstrates that Oracle RAC can be implemented using local host file entries while still providing clustering, ASM storage, and high availability features.
By completing this guide, you have gained practical hands on experience with Oracle Grid Infrastructure, ASM disk groups, and RAC database operations. This environment is well suited for learning, practice, and building strong Oracle RAC administration skills.
