Step-by-Step Oracle Database 19c Installation with ASM

Installing Oracle Database 19c on Automatic Storage Management (ASM) is one of the most reliable and recommended approaches for building a high-performance and highly available database environment. ASM simplifies storage management, improves performance, and ensures better scalability for your Oracle workloads.
In this step-by-step guide, we will walk through the complete installation process of Oracle Database 19c with ASM from preparing the environment to configuring Grid Infrastructure and finally creating the database. Whether you are setting up a test machine or preparing for a production-ready environment, this guide will help you complete the installation smoothly and efficiently.

Mount Point Details:
[root@dba-simplified ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/ol-root   47G  7.8G   39G  17% /
devtmpfs             1.9G     0  1.9G   0% /dev
tmpfs                1.9G     0  1.9G   0% /dev/shm
tmpfs                1.9G  9.6M  1.9G   1% /run
tmpfs                1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1            1.9G  322M  1.6G  17% /boot
/dev/mapper/ol-u01    95G  5.6G   90G   6% /u01
/dev/mapper/ol-home   60G   43M   60G   1% /home
/dev/mapper/ol-var   9.4G  2.8G  6.6G  30% /var
tmpfs                379M  4.0K  379M   1% /run/user/42
tmpfs                379M   40K  379M   1% /run/user/54321
tmpfs                379M     0  379M   0% /run/user/0
Required Files (Oracle and Grid Software):
[root@dba-simplified ~]# cd /u01/files/
[root@dba-simplified files]# ls -ltr
total 5809468
-rw-r--r-- 1 oracle oinstall 3059705302 Nov 20  2025 LINUX.X64_193000_db_home.zip
-rw-r--r-- 1 oracle oinstall 2889184573 Nov 20  2025 LINUX.X64_193000_grid_home.zip

Prerequisites:

Disable Firewall:
[root@dba-simplified ~]# systemctl stop firewalld
[root@dba-simplified ~]# systemctl disable firewalld
[root@dba-simplified ~]#
[root@dba-simplified ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
Disable SELinux:
[root@dba-simplified ~]# 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@dba-simplified ~]# getenforce
Disabled

Install Required Packages:
[root@dba-simplified ~]# yum -y install oracle-database-preinstall-19c.x86_64

[root@dba-simplified ~]# yum -y install wget oracleasm kmod-oracleasm oracleasm-support
Create Grid User and Groups
[root@dba-simplified ~]# groupadd -g 54327 asmdba
[root@dba-simplified ~]# groupadd -g 54328 asmoper
[root@dba-simplified ~]# groupadd -g 54329 asmadmin
[root@dba-simplified ~]#
[root@dba-simplified ~]# useradd -u 54322 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid
[root@dba-simplified ~]#
[root@dba-simplified ~]# id grid
uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54330(racdba),54327(asmdba),54328(asmoper),54329(asmadmin)
[root@dba-simplified ~]#
[root@dba-simplified ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
[root@dba-simplified ~]#
[root@dba-simplified ~]# usermod -a -G asmdba,asmoper,asmadmin oracle
[root@dba-simplified ~]#
[root@dba-simplified ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba),54327(asmdba),54328(asmoper),54329(asmadmin)
[root@dba-simplified ~]#
Create Required Directories
[root@dba-simplified ~]# mkdir -p /u01/app/grid/19/grid_home
[root@dba-simplified ~]# mkdir -p /u01/app/oracle/19/db_home
[root@dba-simplified ~]# mkdir -p /u01/app/oraInventory
[root@dba-simplified ~]#
[root@dba-simplified ~]# chown -R oracle:oinstall /u01
[root@dba-simplified ~]# chown -R grid:oinstall /u01/app/grid
[root@dba-simplified ~]# chown -R grid:oinstall /u01/app/oraInventory

Configure Disks and Oracle ASM

Shut down the virtual machine and add two new disks, one 10 GB and one 20 GB, which will be used as ASM storage. The steps below explain how to attach these disks to your Virtual Machine.
Start the virtual machine and verify that the newly added disks are visible on the server.
[root@dba-simplified ~]# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb           8:16   0    10G  0 disk    <--- Disk 1
sr0          11:0    1  1024M  0 rom
sdc           8:32   0    20G  0 disk    <--- Disk 2
sda           8:0    0   220G  0 disk
├─sda2        8:2    0 218.1G  0 part
│ ├─ol-swap 252:1    0   7.5G  0 lvm  [SWAP]
│ ├─ol-u01  252:4    0  94.8G  0 lvm  /u01
│ ├─ol-var  252:2    0   9.3G  0 lvm  /var
│ ├─ol-root 252:0    0  46.6G  0 lvm  /
│ └─ol-home 252:3    0    60G  0 lvm  /home
└─sda1        8:1    0   1.9G  0 part /boot
With the new disks (sdb and sdc) now visible on the system, the next step is to create partitions for ASM.
[root@dba-simplified ~]# 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 0x01e44924.

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@dba-simplified ~]#
[root@dba-simplified ~]# 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 0x5fd59388.

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-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@dba-simplified ~]#
Now Configure the ASM driver
[root@dba-simplified ~]# 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 []: oinstall
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: done
Load, Create, and Verify the ASM Disks
[root@dba-simplified ~]# 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/oracleasm
[root@dba-simplified ~]# oracleasm createdisk DATA /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@dba-simplified ~]# oracleasm createdisk RECO /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@dba-simplified ~]# oracleasm listdisks
DATA
RECO

Oracle Gird Software Installation

Navigate to the directory containing the Oracle Grid software and unzip it into the Grid Home location.
[grid@dba-simplified ~]$ cd /u01/files/
[grid@dba-simplified files]$ ls -ltr
total 5809468
-rwxrwxr-x 1 oracle oinstall 3059705302 Nov 20 21:18 LINUX.X64_193000_db_home.zip
-rwxrwxr-x 1 oracle oinstall 2889184573 Nov 20 21:18 LINUX.X64_193000_grid_home.zip
[grid@dba-simplified files]$
[grid@dba-simplified files]$ unzip -oq LINUX.X64_193000_grid_home.zip -d /u01/app/grid/19/grid_home/
[grid@dba-simplified files]$
Configure Grid Infrastructure by running the ./gridSetup.sh script from the Grid Home directory.
[grid@dba-simplified ~]$ cd /u01/app/grid/19/grid_home
[grid@dba-simplified grid_home]$ ./gridSetup.sh
Launching Oracle Grid Infrastructure Setup Wizard...
Here, we have two warnings. Memory warning can be ignored since this is a testing environment, and the package warning can be resolved by installing the required package on the server.
[root@dba-simplified ~]# cd /u01/app/grid/19/grid_home/cv/rpm
[root@dba-simplified rpm]# yum install cvuqdisk-1.0.10-1.rpm
[root@dba-simplified ~]# ps -ef|grep pmon
grid     15388     1  0 18:13 ?        00:00:00 asm_pmon_+ASM
root     17378  4041  0 18:16 pts/2    00:00:00 grep --color=auto pmon
As you can see now Grid Infrastructure is successfully installed.

Oracle Database Software Installation

Navigate to the directory containing the Oracle Database software and unzip it into the Oracle Home location.
[oracle@dba-simplified ~]$ cd /u01/files/
[oracle@dba-simplified files]$ ls -ltr
total 5809468
-rwxrwxr-x 1 oracle oinstall 3059705302 Nov 20 21:18 LINUX.X64_193000_db_home.zip
-rwxrwxr-x 1 oracle oinstall 2889184573 Nov 20 21:18 LINUX.X64_193000_grid_home.zip
[oracle@dba-simplified files]$
[oracle@dba-simplified files]$ unzip -oq LINUX.X64_193000_db_home.zip -d /u01/app/oracle/19/db_home/
[oracle@dba-simplified files]$
Now, run the ./runInstaller script from the Oracle Home directory.
[oracle@dba-simplified ~]$ cd /u01/app/oracle/19/db_home
[oracle@dba-simplified db_home]$
[oracle@dba-simplified db_home]$ ./runInstaller
Launching Oracle Database Setup Wizard...
As you can see now Oracle Database Software is successfully installed.

Oracle Database Creation

Now, navigate to the bin directory inside the Oracle Home and run ./dbca to create the database.
[oracle@dba-simplified ~]$ cd /u01/app/oracle/19/db_home/
[oracle@dba-simplified db_home]$ cd bin/
[oracle@dba-simplified bin]$
[oracle@dba-simplified bin]$ ./dbca
[oracle@dba-simplified ~]$ ps -ef|grep pmon
oracle    1118     1  0 19:43 ?        00:00:00 ora_pmon_testdb
oracle    4276 14377  0 19:50 pts/2    00:00:00 grep --color=auto pmon
grid     15388     1  0 18:13 ?        00:00:00 asm_pmon_+ASM
As you can see, the Oracle Database has been successfully created.

Conclusion: You’ve now completed the full installation of Oracle Database 19c with Oracle ASM from preparing the storage and OS, configuring ASM disks, installing Grid Infrastructure, and creating the database. With this setup, your environment is optimized for performance, scalability and high availability. Use these steps as your reliable blueprint for future deployments.

Post a Comment

© Ayaan Israr - All rights reserved. Premium By Ayaan Israr