datablogs

Step by Step Oracle 19c Installation on Redhat Linux 8.10

Oracle 19c Standard Edition 2

Silent Installation on Red Hat Enterprise Linux 8.10

 

A complete, production-ready step-by-step guide

 

Oracle Version

19c SE2 (19.3.0.0.0)

OS Platform

RHEL 8.10 (x86_64)

Install Mode

Silent (Unattended)

Introduction

This guide walks you through a complete, production-ready silent installation of Oracle Database 19c Standard Edition 2 (SE2) on Red Hat Enterprise Linux (RHEL) 8.10. The installation covers everything from OS-level prerequisites and package setup to database creation using DBCA, listener configuration, and instance startup.

Oracle 19c is a Long Term Release (LTS) with extended support, making it the preferred choice for many enterprise deployments. This guide uses a silent (non-GUI) installation approach, ideal for server environments and automation pipelines.

 

Note: All commands in this guide are executed on an AWS EC2 instance running RHEL 8.10. The same steps apply to any bare-metal or virtual machine with a similar configuration.

   

Prerequisites & Environment

Component

Details

Operating System

Red Hat Enterprise Linux 8.10 (Ootpa) — x86_64

Oracle Version

Oracle Database 19c SE2, Release 19.3.0.0.0

Install Media

LINUX.X64_193000_db_home.zip (~2.9 GB)

Oracle Base

/u01/app/oracle

Oracle Home

/u01/app/oracle/product/19.0.0/dbhome_1

Data Files

/u01/app/oracle/oradata

Oracle User

oracle (uid: 54321, group: oinstall)

Database SID

DATABLOGORCL (CDB with 1 PDB)

Character Set

AL32UTF8

SGA Memory

18 GB (totalMemory flag in DBCA)

Step 1: Update the Operating System

1

OS Package Update

Bring all system packages to their latest versions before starting the Oracle installation.

 

Log in as root and run a full system update using dnf:


# Verify OS version

[root@server ~]# cat /etc/os-release


NAME="Red Hat Enterprise Linux"

VERSION="8.10 (Ootpa)"


# Run full system update

[root@server ~]# dnf update -y


The update installs a new kernel (4.18.0-553.111.1.el8_10), along with critical packages including openssh, glibc, systemd, openssl, and grub2. Key packages upgraded include:

       kernel 4.18.0-553.111.1.el8_10 — New kernel with security and bug fixes

       glibc 2.28-251.el8_10.31 — GNU C Library

       openssh 8.0p1-27.el8_10 — SSH server and clients

       openssl 1.1.1k-15.el8_6 — TLS/SSL libraries

       systemd 239-82.el8_10.15 — System and service manager

Step 2: Install Oracle Preinstall RPM

2

Oracle Preinstall Package

Automatically configures OS kernel parameters, security limits, and installs all required dependency packages.

 

Download the Oracle 19c preinstall RPM from Oracle's public repository and install it locally. Although this RPM is built for OL9, it works effectively on RHEL 8 to configure the necessary system parameters:


# Download preinstall RPM from Oracle YUM

[root@server ~]# curl -o oracle-database-preinstall-19c-1.0-1.el9.x86_64.rpm \

  https://yum.oracle.com/repo/OracleLinux/OL9/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el9.x86_64.rpm


# Install it locally

[root@server ~]# dnf -y localinstall oracle-database-preinstall-19c-1.0-1.el9.x86_64.rpm

 

This RPM automatically installs a large set of dependencies needed for Oracle including:

       bc, binutils, gcc, gcc-c++ — Build tools and compilers

       libaio, libaio-devel, libstdc++-devel — Async I/O and C++ libraries

       libX11, libXi, libXtst, libXrender — X11 display libraries

       ksh, make, nfs-utils, rpcbind — Shell, build tools, and network services

       sysstat, smartmontools, xorg-x11-utils — System monitoring tools

       libvirt-libs, libibverbs, librdmacm — Virtualization and RDMA libraries

 

Tip: The preinstall RPM also sets /etc/sysctl.conf kernel parameters (shmall, shmmax, semaphores) and /etc/security/limits.conf entries for the oracle user — saving considerable manual effort.

Step 3: Create Oracle User and Groups

3

OS User & Group Setup

Create the required OS groups and oracle user account for database administration.

 

Create the required groups and the oracle OS user. The preinstall RPM may have already created these the commands below handle that gracefully:


# Create groups (idempotent — safe if already exist)

[root@server ~]# sudo groupadd -g 54321 oinstall

[root@server ~]# sudo groupadd -g 54322 dba


# Create the oracle user

[root@server ~]# sudo useradd -u 54321 -g oinstall -G dba oracle


# Set the oracle user password

[root@server ~]# sudo passwd oracle

 

If you see messages like 'group already exists' or 'user already exists', that is expected — the preinstall RPM created them. The password setup step is still required.

Step 4: Create Directory Structure

4

Directory Layout

Create the Oracle Base, Oracle Home, and data directories with correct ownership.

 

Oracle requires specific directory paths to be created and owned by the oracle user before installation begins:


# Create Oracle software directories

[root@server ~]# sudo mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1


# Create data file directory

[root@server ~]# sudo mkdir -p /u02/oradata


# Set ownership to oracle:oinstall

[root@server ~]# sudo chown -R oracle:oinstall /u01 /u02


# Set group-writable permissions

[root@server ~]# sudo chmod -R 775 /u01 /u02

 

Path

Purpose

/u01/app/oracle

ORACLE_BASE — all Oracle software and configuration

/u01/app/oracle/product/19.0.0/dbhome_1

ORACLE_HOME — 19c software binaries (unzip target)

/u01/app/oraInventory

Central Oracle inventory (auto-created during install)

/u01/app/oracle/oradata

Data files, redo logs, and control files

/u02/oradata

Secondary data directory (optional, for separation)

Step 5: Extract Oracle Software

5

Unzip the Installation Media

Extract the Oracle 19c zip file directly into the Oracle Home directory.

 

Copy the Oracle 19c zip file (LINUX.X64_193000_db_home.zip, ~2.9 GB) into the ORACLE_HOME directory, then extract it there. The zip must be extracted into dbhome_1, not into a subdirectory:


# Switch to oracle user

[root@server ~]# su - oracle


# Navigate to Oracle Home

[oracle@server ~]$ cd /u01/app/oracle/product/19.0.0/dbhome_1


# Extract the zip (the file should already be placed here)

[oracle@server dbhome_1]$ unzip LINUX.X64_193000_db_home.zip


# Fix permissions after extraction

[oracle@server dbhome_1]$ exit

[root@server ~]# chown -R oracle:oinstall /u01 /u02

[root@server ~]# chmod -R 775 /u01 /u02

 

After extraction, the dbhome_1 directory should contain folders like bin, rdbms, sqlplus, install, network, jdk, lib, and others. The zip file itself (2.9 GB) can remain or be deleted to free space.

Step 6: Configure the Response File

6

Response File Setup

Edit db_install.rsp to define all installation parameters for silent mode.

 

The response file drives the entire silent installation. Edit the file located at:


$ORACLE_HOME/install/response/db_install.rsp

 

Below are the key parameters to configure. All other lines in the response file can remain at their defaults:


# Installation type — software only (database created separately with DBCA)

oracle.install.option=INSTALL_DB_SWONLY


# OS group for inventory

UNIX_GROUP_NAME=oinstall


# Inventory location

INVENTORY_LOCATION=/u01/app/oraInventory


# Oracle Home and Base

ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1

ORACLE_BASE=/u01/app/oracle


# Edition — Standard Edition 2

oracle.install.db.InstallEdition=SE2


# OS groups (all mapped to oinstall for simplicity)

oracle.install.db.OSDBA_GROUP=oinstall

oracle.install.db.OSOPER_GROUP=oinstall

oracle.install.db.OSBACKUPDBA_GROUP=oinstall

oracle.install.db.OSDGDBA_GROUP=oinstall

oracle.install.db.OSKMDBA_GROUP=oinstall

oracle.install.db.OSRACDBA_GROUP=oinstall


# Do not auto-run root scripts (we will run them manually)

oracle.install.db.rootconfig.executeRootScript=false

 

Important: oracle.install.option=INSTALL_DB_SWONLY installs only the Oracle software binaries. The database instance is created separately in a later step using DBCA, giving you more control.

Step 7: Run the Silent Installer

7

Execute runInstaller

Launch the Oracle installer in silent mode as the oracle user.

 

Before running the installer, set the CV_ASSUME_DISTID environment variable to bypass the OS compatibility check (since Oracle 19c officially targets OEL/RHEL but we are using the el9 preinstall RPM):


# As root — set the env variable for the session

[root@server dbhome_1]# export CV_ASSUME_DISTID=RHEL8


# Switch to oracle user

[root@server dbhome_1]# su oracle


# Run the silent installer

[oracle@server dbhome_1]$ ./runInstaller -silent -responseFile /u01/app/oracle/product/19.0.0/dbhome_1/install/response/db_install.rsp

 

Expected output upon successful completion:


[WARNING] [INS-32047] The location (/u01/app/oraInventory) specified for the

central inventory is not empty.

   ACTION: It is recommended to provide an empty location for the inventory.


[WARNING] [INS-13014] Target environment does not meet some optional requirements.

   (Optional prereqs only — not fatal)


Successfully Setup Software with warning(s).


As a root user, execute the following script(s):

   1. /u01/app/oraInventory/orainstRoot.sh

   2. /u01/app/oracle/product/19.0.0/dbhome_1/root.sh

 

The [INS-32047] and [INS-13014] warnings are non-critical and can be safely ignored. The installation completes successfully despite these messages.

Step 8: Run Root Scripts

8

Execute Root Configuration Scripts

Run the two root scripts that finalize the Oracle installation at the OS level.

 

After the installer completes, open a new terminal (or exit to root) and run the two root scripts as instructed:


# Exit oracle user back to root

[oracle@server dbhome_1]$ exit


# Script 1: Configure Oracle Inventory permissions

[root@server dbhome_1]# /u01/app/oraInventory/orainstRoot.sh


Changing permissions of /u01/app/oraInventory.

Adding read,write permissions for group.

Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.

The execution of the script is complete.


# Script 2: Configure Oracle Home at OS level

[root@server dbhome_1]# /u01/app/oracle/product/19.0.0/dbhome_1/root.sh


Check .../root_<hostname>_<timestamp>.log for the output of root script

 

These scripts configure the Oracle inventory directory permissions, update /etc/oratab, and set up the required OS-level integrations. They must be run as root.

Step 9: Configure Oracle Environment Variables

9

Set .bash_profile

Configure the oracle user's shell environment with ORACLE_HOME, ORACLE_BASE, and PATH.

 

Switch to the oracle user and edit the .bash_profile to set the Oracle environment variables. These are required every time you work with the database:


[root@server ~]# su oracle

[oracle@server ~]$ vi ~/.bash_profile

 

Add the following lines at the end of the file:


# .bash_profile


# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi


# Oracle Environment Variables

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1

export ORACLE_SID=DATABLOGORCL

export PATH=$PATH:$ORACLE_HOME/bin


# User specific environment and startup programs

 

Save the file and source it to apply immediately:


[oracle@server ~]$ source ~/.bash_profile

 

Note: Set ORACLE_SID to match the database SID you will create. Initially you can set it to 'orcl' and update it once the database is created.

Step 10: Create the Database with DBCA

10

Database Creation

Use DBCA in silent mode to create a Container Database (CDB) with one Pluggable Database (PDB).

 

Run the DBCA command as the oracle user to create the database. This creates a CDB named DATABLOGORCL with one PDB also named DATABLOGORCL:


[oracle@server ~]$ dbca -silent \

  -createDatabase \

  -templateName General_Purpose.dbc \

  -gdbName DATABLOGORCL \

  -sid DATABLOGORCL \

  -createAsContainerDatabase true \

  -numberOfPdbs 1 \

  -pdbName DATABLOGORCL \

  -pdbAdminPassword "<YourPDBPassword>" \

  -sysPassword "<YourSYSPassword>" \

  -systemPassword "<YourSYSTEMPassword>" \

  -datafileDestination /u01/app/oracle/oradata \

  -storageType FS \

  -characterSet AL32UTF8 \

  -totalMemory 18000 \

  -emConfiguration NONE

 

The DBCA process goes through several phases:

       Prepare for db operation — validates parameters and prerequisites

       Copying database files (8–31%) — creates data files from the template

       Creating and starting Oracle instance (32–46%) — initializes SGA and starts processes

       Completing Database Creation (51–54%) — applies catalog and catproc

       Creating Pluggable Databases (58–77%) — creates PDB$SEED and the named PDB

       Executing Post Configuration Actions (100%) — final configuration steps

 

Successful completion message:


Database creation complete. For details check the logfiles at:

 /u01/app/oracle/cfgtoollogs/dbca/DATABLOGORCL.


Database Information:

Global Database Name: DATABLOGORCL

System Identifier(SID): DATABLOGORCL

 

Use strong passwords that meet Oracle standards: at least 8 characters, with uppercase, lowercase, and a digit. Passwords that do not conform generate warnings but the database is still created.

Step 11: Start the Listener

11

Oracle Listener

Start the TNS listener to enable remote client connections to the database.

 

Start the Oracle listener and verify its status:


# Start the listener

[oracle@server ~]$ lsnrctl start


TNSLSNR for Linux: Version 19.0.0.0.0 - Production

System parameter file is $ORACLE_HOME/network/admin/listener.ora

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.234.43.237)(PORT=1521)))


STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production

Start Date                18-MAR-2026 08:25:05

Security                  ON: Local OS Authentication

The command completed successfully

 

After a few minutes, verify that the database registers with the listener:


[oracle@server ~]$ lsnrctl status


Services Summary...

Service "4d4929d61f5d6ac0e063ed2bea0a5a6e" has 1 instance(s).

  Instance "DATABLOGORCL", status READY, has 1 handler(s) for this service...

Service "DATABLOGORCL" has 1 instance(s).

  Instance "DATABLOGORCL", status READY, has 1 handler(s) for this service...

Service "DATABLOGORCLXDB" has 1 instance(s).

  Instance "DATABLOGORCL", status READY, has 1 handler(s) for this service...

The command completed successfully

 

When you see 'status READY' for the DATABLOGORCL service, the listener is correctly registered and the database is accepting connections.

Step 12: Verify the Installation

12

Validation

Connect with SQL*Plus and verify the CDB and PDB status.

 

Connect to the database using SQL*Plus and validate the installation:


# Connect as SYSDBA

[oracle@server ~]$ sqlplus / as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Wed Mar 18 08:29:16 2026

Version 19.3.0.0.0


Connected to:

Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production

Version 19.3.0.0.0


# Check PDB status

SQL> show pdbs;


    CON_ID CON_NAME               OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

         2 PDB$SEED               READ ONLY  NO

         3 DATABLOGORCL           READ WRITE NO


SQL> exit

 

The output confirms a successful installation: Oracle 19c SE2 is running, the CDB is open, PDB$SEED is in READ ONLY mode (normal), and the DATABLOGORCL PDB is in READ WRITE mode (open and usable).

Step 13: Manual Instance Startup (If Required)

13

Instance Startup

Start a previously stopped database instance using SQL*Plus startup command.

 

If the instance is not running (e.g., after a reboot or manual shutdown), start it using:


[oracle@server ~]$ sqlplus / as sysdba


Connected to an idle instance.


SQL> startup;


ORACLE instance started.


Total System Global Area 1.4160E+10 bytes

Fixed Size              9151056 bytes

Variable Size        1912602624 bytes

Database Buffers     1.2214E+10 bytes

Redo Buffers           24399872 bytes

Database mounted.

Database opened.


SQL> exit

 

The SGA is approximately 14 GB (1.4160E+10 bytes), consistent with the -totalMemory 18000 flag passed to DBCA. Oracle automatically allocates memory between SGA and PGA.

Troubleshooting Common Issues

INS-32013: Oracle base location is empty

This error occurs when running runInstaller as root or when ORACLE_BASE is not set in the response file.

       Ensure you are running runInstaller as the oracle user, not root

       Verify ORACLE_BASE=/u01/app/oracle is correctly set in db_install.rsp

Listener shows 'no services' after start

The database registers with the listener automatically after startup, but may take 1-2 minutes. Also verify ORACLE_SID in .bash_profile matches the database SID.


# Check if the instance is running

SQL> select instance_name, status from v$instance;


# Manually register with listener

SQL> alter system register;

CV_ASSUME_DISTID required

If you get OS compatibility errors during the prerequisite check, export this variable before running the installer:


export CV_ASSUME_DISTID=RHEL8

Database does not auto-start after reboot

Set the restart flag in /etc/oratab and configure the dbstart service:


# Edit /etc/oratab

DATABLOGORCL:/u01/app/oracle/product/19.0.0/dbhome_1:Y  # Change N to Y

Summary

This guide walked through a complete silent installation of Oracle 19c SE2 on RHEL 8.10. Here is a quick recap of the steps performed:

 

1.     Updated the OS with dnf update -y

2.     Installed the oracle-database-preinstall-19c RPM to configure system parameters and dependencies

3.     Created OS groups (oinstall, dba) and the oracle user

4.     Created the directory structure (/u01, /u02) with correct ownership

5.     Extracted LINUX.X64_193000_db_home.zip into ORACLE_HOME

6.     Configured db_install.rsp with INSTALL_DB_SWONLY, SE2 edition, and all paths

7.     Ran runInstaller -silent as the oracle user

8.     Executed orainstRoot.sh and root.sh as root

9.     Set environment variables in oracle user's .bash_profile

10.  Created the CDB + PDB using dbca -silent

11.  Started the listener with lsnrctl start

12.  Verified the installation via SQL*Plus and show pdbs

 

The database is now ready for use. For production environments, consider configuring automatic startup on boot, setting up ARCHIVELOG mode, implementing RMAN backups, and enabling Oracle Enterprise Manager for monitoring.


datablog.com  |  Oracle DBA Series

Oracle 19c SE2 on RHEL 8.10 — Silent Installation Guide

0 Comments