Close Menu
  • Home
  • Oracle
    • ASM
    • Data Guard
    • RAC
  • Performance
  • Tools
  • Troubleshooting
  • Python
  • Shell Script
Search

Oracle RAC 12.2 on VMware Workstation – Post 3: Grid Infrastructure Installation

2026-04-05 Oracle By Henrique

Oracle RAC 12.2 on VMware Workstation — Post 1: VMware Networking and Openfiler Setup

2026-04-05 Oracle By Henrique

Oracle RAC 12.2 on VMware Workstation – Post 2: Oracle Linux Configuration and iSCSI

2026-04-05 Oracle By Henrique
YouTube LinkedIn RSS
  • About
  • Contact
  • Legal
    • Cookie Policy
    • Disclaimer
    • Privacy Policy
    • Terms of Use
  • RSS
  • English
    • Portuguese (Brazil)
Execute StepExecute Step
YouTube LinkedIn RSS
  • Home
  • Oracle
    • ASM
    • Data Guard
    • RAC
  • Performance
  • Tools
  • Troubleshooting
  • Python
  • Shell Script
Execute StepExecute Step
Home » Oracle RAC 12.2 on VMware Workstation – Post 2: Oracle Linux Configuration and iSCSI
Oracle RAC

Oracle RAC 12.2 on VMware Workstation – Post 2: Oracle Linux Configuration and iSCSI

HenriqueBy Henrique2026-04-051 Comment12 Mins Read
Share
Facebook Twitter LinkedIn Pinterest Email Telegram WhatsApp

This post is also available in: Português (Portuguese (Brazil))

Series: Oracle RAC 12.2 – Complete Installation on VMware Workstation


📌 About this series: This guide covers Oracle RAC 12c, which is out of support. The goal is to document learning and revisit concepts – not to recommend this version for production. Read the full context in the series overview →

📋 This series — Oracle RAC 12.2 on VMware Workstation:

Series posts
Series Overview — RAC architecture, environment, and software
Post 1 — VMware Setup and Openfiler iSCSI Storage
Post 2 — Oracle Linux Configuration and iSCSI Initiator ← this post
Post 3 — Grid Infrastructure 12.2 Installation
Post 4 — Oracle Database Installation and DBCA
Post 5 — Post-Installation and Final Validation

⚙️ Prerequisite: Post 1 completed – VMware configured and Openfiler with iSCSI LUNs ready.


Create the orclrac1 VM

Create the VM in VMware

File → New Virtual Machine → Custom (advanced) → Next
→ Hardware compatibility: select your installed VMware Workstation version → Next
→ I will install the operating system later → Next
→ Guest OS: Linux | Oracle Linux 64-bit → Next
→ Name: orclrac1
→ Location: /vms01/oracle/orclrac1/
→ Processors: 2 sockets × 2 cores → Next
→ Memory: 8192 MB → Next
→ Network: Custom → /dev/vmnet0 (public) → Next
→ I/O Controller: LSI Logic → Next
→ Disk: SCSI | 60 GB | Single file → Next
→ Finish

Adjust Hardware

With the VM created and powered off, adjust the following in Settings:

ItemConfiguration
Memory8192 MB + check Reserve all guest memory
Processors2 × 2 cores + check Virtualize VT-x/AMD-V
Network AdapterCustom → /dev/vmnet0 (public)
Network Adapter 2 (add)Custom → /dev/vmnet1 (interconnect)
Network Adapter 3 (add)Custom → /dev/vmnet2 (iSCSI)
Hard Disk 2 (add)100 GB – SCSI 0:1 – for /u01

To add NICs and disk: Add → Network Adapter / Add → Hard Disk.

Edit orclrac1.vmx

Before powering on the VM, add time sync control and UUID entries to the .vmx file. Check first to avoid duplicates:

grep "EnableUUID\|time.synchronize" /vms01/oracle/orclrac1/orclrac1.vmx

If not present, add:

cat >> /vms01/oracle/orclrac1/orclrac1.vmx << 'EOF'

time.synchronize.continue = "FALSE"
time.synchronize.restore = "FALSE"
time.synchronize.resume.disk = "FALSE"
time.synchronize.shrink = "FALSE"
time.synchronize.tools.startup = "FALSE"
disk.EnableUUID = "TRUE"
EOF

⚠️ Disabling time sync is mandatory for RAC. VMware Tools syncing the clock independently can cause drift between nodes, which may cause Clusterware to evict a node from the cluster.

⚠️ Duplicate entries in the .vmx file prevent the VM from starting. Always check before adding.

Install Oracle Linux 7.6

Mount the ISO OracleLinux-R7-U6-Server-x86_64-dvd.iso and power on the VM. The installer displays an Installation Summary with the following sections to configure:

ScreenConfiguration
Date & TimeSelect your region and city. Network Time: OFF
KeyboardEnglish (US) – already selected by default
Language SupportEnglish (United States) – already selected by default
Installation SourceLocal media – do not change
Software SelectionMinimal Install
Installation DestinationSelect only sda (60 GB) – sdb must remain unchecked. Partitioning: Automatically configure
KdumpUncheck Enable kdump
Network & Host NameDo not configure network – only set hostname: orclrac1.oracle.local → Apply
Security PolicyApply security policy: OFF
Root PasswordStrong password
User CreationDo not create a user

Click Begin Installation. Wait for completion and reboot.

Enable Temporary Network via nmtui

💡 Why do this now? The installation was completed without configuring the network to keep the process simple. nmtui enables the interface temporarily via DHCP – just to get SSH access to the server. From this point on, all commands are run remotely without needing to type anything in the VM console.

In the orclrac1 console, run:

nmtui

Navigate to: Edit a connection → ens33 → check Automatically connect → OK

Then: Activate a connection → select ens33 → Activate → Back → Quit

Get the IP assigned by DHCP:

ip addr show ens33

Note the IP and connect via SSH from the host:

ssh root@<dhcp-ip>

Configure Oracle Linux on orclrac1

From this point all commands are run over SSH.

Fix Interface Names and Configure IPs

Step 1 – Apply GRUB fix:

sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 /' \
  /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

Step 2 – Remove old interface files and create new ones:

rm -f /etc/sysconfig/network-scripts/ifcfg-ens33 \
      /etc/sysconfig/network-scripts/ifcfg-ens34 \
      /etc/sysconfig/network-scripts/ifcfg-ens35

cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << 'EOF'
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.15.170
NETMASK=255.255.255.0
GATEWAY=192.168.15.1
DNS1=8.8.8.8
DEFROUTE=yes
IPV6INIT=no
EOF

cat > /etc/sysconfig/network-scripts/ifcfg-eth1 << 'EOF'
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=10.10.10.1
NETMASK=255.255.255.0
DEFROUTE=no
IPV6INIT=no
EOF

cat > /etc/sysconfig/network-scripts/ifcfg-eth2 << 'EOF'
TYPE=Ethernet
BOOTPROTO=none
NAME=eth2
DEVICE=eth2
ONBOOT=yes
IPADDR=192.168.20.1
NETMASK=255.255.255.0
DEFROUTE=no
IPV6INIT=no
EOF

Step 3 – Reboot:

reboot

After rebooting, connect via SSH using the fixed IP and validate:

ssh root@192.168.15.170

ip addr show eth0    # 192.168.15.170
ip addr show eth1    # 10.10.10.1
ip addr show eth2    # 192.168.20.1

Mount the /u01 Disk

lsblk

Start fdisk on /dev/sdb:

fdisk /dev/sdb

When the prompt appears, enter the following sequence:

KeyAction
nNew partition
pPrimary type
1Partition number
EnterAccept first sector (default)
EnterAccept last sector (default – uses the entire disk)
wWrite and exit
mkfs.xfs /dev/sdb1
mkdir -p /u01
blkid /dev/sdb1    # note the UUID

echo "UUID=<uuid>   /u01   xfs   defaults   0 0" >> /etc/fstab
mount -a
df -h /u01

Configure Hostname and /etc/hosts

hostnamectl set-hostname orclrac1.oracle.local
cat >> /etc/hosts << 'EOF'

192.168.15.170   orclrac1        orclrac1.oracle.local
192.168.15.171   orclrac2        orclrac2.oracle.local

192.168.15.180   orclrac1-vip    orclrac1-vip.oracle.local
192.168.15.181   orclrac2-vip    orclrac2-vip.oracle.local

10.10.10.1       orclrac1-priv   orclrac1-priv.oracle.local
10.10.10.2       orclrac2-priv   orclrac2-priv.oracle.local

192.168.15.190   orclrac-scan    orclrac-scan.oracle.local
192.168.15.191   orclrac-scan    orclrac-scan.oracle.local
192.168.15.192   orclrac-scan    orclrac-scan.oracle.local

192.168.20.10    openfiler       openfiler.oracle.local
EOF

Install Prerequisite Packages

yum install -y oracle-database-server-12cR2-preinstall
yum install -y open-vm-tools iscsi-initiator-utils chrony

Kernel Parameters

grep "shmmax" /etc/sysctl.conf

If not already configured by the preinstall package:

cat >> /etc/sysctl.conf << 'EOF'

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
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
vm.nr_hugepages = 2048
EOF

sysctl -p

Shell Limits

cat >> /etc/security/limits.conf << 'EOF'

oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc     16384
oracle   hard   nproc     16384
oracle   soft   stack     10240
oracle   hard   stack     32768
oracle   hard   memlock   134217728
oracle   soft   memlock   134217728
EOF

Create ASM Groups and Configure the oracle User

The preinstall package already creates the oracle user with basic groups. Here we only create the ASM groups:

groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin

usermod -a -G asmadmin,asmoper,asmdba oracle

echo "oracle:Welcome1" | chpasswd

id oracle

Oracle Directory Structure

mkdir -p /u01/app/12.2.0/grid
mkdir -p /u01/app/oracle/product/12.2.0/dbhome_1
mkdir -p /u01/stage

chown -R oracle:oinstall /u01
chmod -R 775 /u01

Environment Variables

cat >> /home/oracle/.bash_profile << 'EOF'

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/12.2.0/grid
export ORACLE_SID=+ASM1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'
umask 022

alias grid_env='export ORACLE_HOME=/u01/app/12.2.0/grid; export ORACLE_SID=+ASM1; export PATH=$ORACLE_HOME/bin:$PATH; echo "Grid Home: $ORACLE_HOME"'
alias db_env='export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1; export ORACLE_SID=ORCL1; export PATH=$ORACLE_HOME/bin:$PATH; echo "DB Home: $ORACLE_HOME"'
EOF

Disable Firewall and SELinux

systemctl disable firewalld
systemctl stop firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config

Configure Chrony

systemctl enable chronyd
systemctl start chronyd
chronyc tracking

Reboot and Validate

reboot
sestatus           # permissive
df -h /u01         # ~100 GB
ip addr show eth0  # 192.168.15.170
hostname           # orclrac1.oracle.local
id oracle          # confirm ASM groups
chronyc tracking   # synchronized

Clone orclrac1 → orclrac2

⚠️ orclrac1 must be completely powered off before cloning.

Right-click on orclrac1 → Manage → Clone
→ Full clone
→ Name: orclrac2
→ Location: /vms01/oracle/orclrac2/
→ Finish

Regenerate orclrac2 MAC Addresses

Settings → Network Adapter   → Advanced → Generate
Settings → Network Adapter 2 → Advanced → Generate
Settings → Network Adapter 3 → Advanced → Generate

Adjust orclrac2 – Hostname, IPs, and SIDs

Power on orclrac2 and run as root:

hostnamectl set-hostname orclrac2.oracle.local

sed -i 's/192.168.15.170/192.168.15.171/' \
  /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/10.10.10.1/10.10.10.2/' \
  /etc/sysconfig/network-scripts/ifcfg-eth1
sed -i 's/192.168.20.1/192.168.20.2/' \
  /etc/sysconfig/network-scripts/ifcfg-eth2

systemctl restart network

ip addr show eth0    # 192.168.15.171
ip addr show eth1    # 10.10.10.2
ip addr show eth2    # 192.168.20.2
hostname             # orclrac2.oracle.local

Adjust SIDs:

sed -i 's/ORACLE_SID=+ASM1/ORACLE_SID=+ASM2/' /home/oracle/.bash_profile
sed -i 's/ORACLE_SID=ORCL1/ORACLE_SID=ORCL2/' /home/oracle/.bash_profile

Configure iSCSI Initiator – orclrac1

systemctl enable iscsid && systemctl start iscsid

echo "InitiatorName=iqn.2024-01.local.oracle:orclrac1" \
  > /etc/iscsi/initiatorname.iscsi

ping -c 3 192.168.20.10

iscsiadm -m discovery -t sendtargets -p 192.168.20.10

Discovery may return two targets – the iSCSI network (192.168.20.10) and the management network (192.168.15.175). Connect only through the iSCSI IP.

iscsiadm -m node \
  -T iqn.2006-01.com.openfiler:rac-storage \
  -p 192.168.20.10 --login

iscsiadm -m node \
  -T iqn.2006-01.com.openfiler:rac-storage \
  -p 192.168.20.10 --op update \
  -n node.startup -v automatic

systemctl restart iscsid iscsi

Check how many disks appear:

ls -la /dev/disk/by-path/ | grep iscsi

If 6 disks appear – correct, proceed. If 12 appear, disconnect the management network target:

iscsiadm -m node \
  -T iqn.2006-01.com.openfiler:rac-storage \
  -p 192.168.15.175 --logout

iscsiadm -m node \
  -T iqn.2006-01.com.openfiler:rac-storage \
  -p 192.168.15.175 --op delete

Check again. Expected output with 6 disks:

ip-192.168.20.10:3260-iscsi-...-lun-0 -> ../../sdc
ip-192.168.20.10:3260-iscsi-...-lun-1 -> ../../sdd
ip-192.168.20.10:3260-iscsi-...-lun-2 -> ../../sde
ip-192.168.20.10:3260-iscsi-...-lun-3 -> ../../sdf
ip-192.168.20.10:3260-iscsi-...-lun-4 -> ../../sdg
ip-192.168.20.10:3260-iscsi-...-lun-5 -> ../../sdh

Configure iSCSI Initiator – orclrac2

systemctl enable iscsid && systemctl start iscsid

echo "InitiatorName=iqn.2024-01.local.oracle:orclrac2" \
  > /etc/iscsi/initiatorname.iscsi

iscsiadm -m discovery -t sendtargets -p 192.168.20.10

iscsiadm -m node \
  -T iqn.2006-01.com.openfiler:rac-storage \
  -p 192.168.20.10 --login

iscsiadm -m node \
  -T iqn.2006-01.com.openfiler:rac-storage \
  -p 192.168.20.10 --op update \
  -n node.startup -v automatic

systemctl restart iscsid iscsi

Check how many disks appear:

ls -la /dev/disk/by-path/ | grep iscsi

If 12 disks appear instead of 6, follow the same management network logout procedure done on orclrac1.


Validate the Complete Environment

Network Connectivity

From orclrac1:

ping -c 3 192.168.15.171    # orclrac2 public
ping -c 3 10.10.10.2        # orclrac2 interconnect
ping -c 3 192.168.20.10     # openfiler

From orclrac2:

ping -c 3 192.168.15.170    # orclrac1 public
ping -c 3 10.10.10.1        # orclrac1 interconnect
ping -c 3 192.168.20.10     # openfiler

Interconnect Latency

Run on each node separately:

ping -c 50 10.10.10.2 | tail -2

ping -c 50 10.10.10.1 | tail -2

Expected result – avg below 1ms is required for Cache Fusion to work correctly:

rtt min/avg/max/mdev = 0.121/0.198/0.312/0.045 ms

SSH Equivalency

Run as oracle on both nodes:

On orclrac1:

su - oracle
ssh-keygen -t rsa -N ''
ssh-copy-id oracle@orclrac1
ssh-copy-id oracle@orclrac2

On orclrac2:

su - oracle
ssh-keygen -t rsa -N ''
ssh-copy-id oracle@orclrac1
ssh-copy-id oracle@orclrac2

Validate on both nodes:

ssh orclrac1 date && ssh orclrac2 date
ssh orclrac1-priv date && ssh orclrac2-priv date

On the first connection via -priv hostname, SSH asks to confirm the key – type yes.

⚠️ Important: Validation must be done on both nodes and in both directions. The Grid OUI runs scripts remotely in both directions during installation – any failure immediately stops the installer.


Next Up

In Post 3 we’ll install Grid Infrastructure 12.2 with all 19 OUI screens documented and the most common errors you’ll encounter.


Grid Infrastructure iSCSI lab Oracle Database Oracle Linux Oracle RAC RAC Installation
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email WhatsApp
Previous ArticleOracle RAC 12.2 on VMware Workstation – Series Overview
Next Article Oracle RAC 12.2 on VMware Workstation — Post 1: VMware Networking and Openfiler Setup

Related Posts

Oracle

Oracle RAC 12.2 on VMware Workstation – Post 3: Grid Infrastructure Installation

2026-04-05
Read More
Oracle

Oracle RAC 12.2 on VMware Workstation — Post 1: VMware Networking and Openfiler Setup

2026-04-05
Read More
Oracle

Oracle RAC 12.2 on VMware Workstation – Series Overview

2026-04-05
Read More
View 1 Comment

1 Comment

  1. Pingback: Oracle RAC 12.2 — VMware and Openfiler iSCSI | ExecuteStep

Leave A Reply Cancel Reply

Demo
Follow Me
  • Email
  • GitHub
  • LinkedIn
  • RSS
  • YouTube

INS-06006 – Passwordless SSH Connectivity Not Set Up

2026-02-2614 Views

ORA-29548 — How to Fix “Java System Class Reported” in Oracle Database

2026-03-0510 Views

PRVG-2002 — How to Fix “Encountered Error in Copying File” in Oracle RAC

2026-03-078 Views
Demo
Tags
alter-sequence asm clusterware create sequence datapatch grid-infrastructure Grid Infrastructure how-to identity-column identity column ins-08101 installation inventory iSCSI lab listener opatch opatchauto Openfiler openssh ora-01031 ORA-12547 ora-12777 orabasetab oracle oracle oracle-database oracle-home oracle-linux oracle-rac Oracle Database Oracle Linux Oracle RAC out-of-place passwordless-ssh patching patching prvg-2002 RAC Installation redo-log runcluvfy scp tns troubleshooting VMware
Execute Step
YouTube LinkedIn RSS
  • Home
  • About
  • Contact
  • RSS
  • English
    • Português (Portuguese (Brazil))
© 2026 ExecuteStep. Designed by ThemeSphere.

Type above and press Enter to search. Press Esc to cancel.

Ad Blocker Enabled!
Ad Blocker Enabled!
Our website is made possible by displaying online advertisements to our visitors. Please support us by disabling your Ad Blocker.