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.
[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/0Required 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 DisabledInstall 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-supportCreate 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.
[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 /bootWith 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: doneLoad, 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.
