Introduction
Typically, Oracle Database software is installed using ./runInstaller with a graphical interface. In environments where a GUI isn't available, silent installation provides an alternative: a response file holds all the necessary configuration details, and the installation runs unattended without any interaction.
In this article, we will do a silent installation of the Oracle binary, a database, and a listener, step by step. We'll also apply the RU 19.27 patch while installing the binary, so the environment comes up already patched rather than needing a separate patching pass afterward.
Prerequisites
Minimum requirements for the Linux environment:
- OS: OEL 7.4 / Red Hat 7.5
- RAM: 4 GB
- CPU: 2 cores
- Disk space: 30 GB
- Root user or sudo access
Download the 19c binary, the RU patch, and the required OPatch version from the links below:
Environment Used in this Guide
| Hostname | uat.oraeasy.com |
|---|---|
| OS | OL 8.5 |
| Oracle Home | /u01/app/oracle/product/19c/dbhome_1 |
Now let's proceed with the installation, step by step.
Prepare the Server
Step 1: Install the Prerequisites
There are two ways to satisfy Oracle 19c's OS-level prerequisites: automatic, using Oracle's preinstall RPM, or manual, installing each package yourself. Both approaches ultimately need to reach the same end state, so pick whichever fits your environment's patching policy.
Automatic setup: this single package takes care of all RPM installation, configuration file changes, and creates the oracle user along with its groups.
[root@uat ~]# yum install -y oracle-database-preinstall-19c
Manual setup: if you'd rather not use the preinstall package, or your environment restricts it, you can install each RPM, edit the configuration files, and create the user and groups yourself.
Install the following RPMs:
[root@uat ~]# yum install -y bc
[root@uat ~]# yum install -y binutils
[root@uat ~]# yum install -y compat-libcap1
[root@uat ~]# yum install -y compat-libstdc++-33
[root@uat ~]# yum install -y dtrace-modules
[root@uat ~]# yum install -y dtrace-modules-headers
[root@uat ~]# yum install -y dtrace-modules-provider-headers
[root@uat ~]# yum install -y dtrace-utils
[root@uat ~]# yum install -y elfutils-libelf
[root@uat ~]# yum install -y elfutils-libelf-devel
[root@uat ~]# yum install -y fontconfig-devel
[root@uat ~]# yum install -y glibc
[root@uat ~]# yum install -y glibc-devel
[root@uat ~]# yum install -y ksh
[root@uat ~]# yum install -y libaio
[root@uat ~]# yum install -y libaio-devel
[root@uat ~]# yum install -y libXrender
[root@uat ~]# yum install -y libXrender-devel
[root@uat ~]# yum install -y libX11
[root@uat ~]# yum install -y libXau
[root@uat ~]# yum install -y libXi
[root@uat ~]# yum install -y libXtst
[root@uat ~]# yum install -y libgcc
[root@uat ~]# yum install -y librdmacm-devel
[root@uat ~]# yum install -y libstdc++
[root@uat ~]# yum install -y libstdc++-devel
[root@uat ~]# yum install -y libxcb
[root@uat ~]# yum install -y make
[root@uat ~]# yum install -y net-tools # Clusterware
[root@uat ~]# yum install -y nfs-utils # ACFS
[root@uat ~]# yum install -y python # ACFS
[root@uat ~]# yum install -y python-configshell # ACFS
[root@uat ~]# yum install -y python-rtslib # ACFS
[root@uat ~]# yum install -y python-six # ACFS
[root@uat ~]# yum install -y targetcli # ACFS
[root@uat ~]# yum install -y smartmontools
[root@uat ~]# yum install -y sysstat
Edit /etc/sysctl.conf with the entries below, then run /sbin/sysctl -p to apply them:
[root@uat ~]# cat /etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
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
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
[root@uat ~]# /sbin/sysctl -p
Edit /etc/security/limits.d/oracle-database-preinstall-19c.conf with the entries below:
[root@uat ~]# cat /etc/security/limits.d/oracle-database-preinstall-19c.conf
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
oracle soft data unlimited
oracle hard data unlimited
Create the oracle user and its related groups:
[root@uat ~]# groupadd -g 54321 oinstall
[root@uat ~]# groupadd -g 54322 dba
[root@uat ~]# useradd -u 54321 -g oinstall -G dba
Step 2: Complete the Remaining Prerequisites
These steps apply regardless of whether you used the automatic or manual method above.
Change the oracle user's password:
[root@uat ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall)
[root@uat ~]#
[root@uat ~]# 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@uat ~]#
Disable the firewall:
[root@uat ~]# systemctl stop firewalld
[root@uat ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Edit /etc/selinux/config and set SELINUX=permissive:
[root@uat ~]# cat /etc/selinux/config|grep permissive
# permissive - SELinux prints warnings instead of enforcing.
SELINUX=permissive
[root@uat ~]#
Create the ORACLE_HOME directory and set the required permissions:
[root@uat ~]# mkdir -p /u01/app/oracle/product/19c/dbhome_1
[root@uat ~]#
[root@uat ~]# chown -R oracle:oinstall /u01
[root@uat ~]# chmod -R 775 /u01
Install the Binary and Apply the RU Patch
Step 3: Download and Unzip the Software
Log in as the oracle user and unzip the 19c binary directly into the ORACLE_HOME you just created, along with the RU patch into a separate patch directory.
[oracle@uat ~]$ ls -lrth
total 2.9G
-rw-r--r--. 1 oracle oinstall 2.9G Aug 27 18:14 LINUX.X64_193000_db_home.zip
[oracle@uat ~]$
[oracle@uat ~]$ unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19c/dbhome_1
[oracle@uat ~]$ cd /tmp/software/
[oracle@uat software]$ ls -lrth
total 2.2G
-rw-r--r--. 1 oracle oinstall 2.2G Aug 27 18:16 19_27_p37642901_190000_Linux-x86-64.zip
-rw-r--r--. 1 oracle oinstall 70M Aug 27 18:16 p6880880_190000_Linux-x86-64_V46.zip
[oracle@uat software]$ unzip 19_27_p37642901_190000_Linux-x86-64.zip -d /u01/patch
Step 4: Update OPatch
Check the OPatch version that ships with the binary, then replace it with the newer version required by the RU patch.
[oracle@uat software]$ cd /u01/app/oracle/product/19c/dbhome_1/OPatch/
[oracle@uat OPatch]$
[oracle@uat OPatch]$ ./opatch version
OPatch Version: 12.2.0.1.17
OPatch succeeded.
[oracle@uat OPatch]$
[oracle@uat OPatch]$ cd ../
[oracle@uat dbhome_1]$ mv OPatch/ OPatch_bkp
[oracle@uat dbhome_1]$
[oracle@uat software]$ ls -lrth
total 2.2G
-rw-r--r--. 1 oracle oinstall 2.2G Aug 27 18:16 19_27_p37642901_190000_Linux-x86-64.zip
-rw-r--r--. 1 oracle oinstall 70M Aug 27 18:16 p6880880_190000_Linux-x86-64_V46.zip
[oracle@uat software]$
[oracle@uat software]$ unzip p6880880_190000_Linux-x86-64_V46.zip -d /u01/app/oracle/product/19c/dbhome_1/
[oracle@uat software]$ cd /u01/app/oracle/product/19c/dbhome_1/OPatch
[oracle@uat OPatch]$
[oracle@uat OPatch]$ ./opatch version
OPatch Version: 12.2.0.1.46
OPatch succeeded.
Step 5: Edit the Installation Response File
Back up the default response file before touching it, then update the parameters below for your environment. Here we're installing software only, Enterprise Edition, and deferring the root script to run manually afterward rather than having the installer attempt it.
[oracle@uat ~]$ cd /u01/app/oracle/product/19c/dbhome_1/install/response
[oracle@uat response]$
[oracle@uat response]$ ls -lrth
total 20K
-rw-r--r--. 1 oracle oinstall 20K Feb 6 2019 db_install.rsp
[oracle@uat response]$
[oracle@uat response]$ cp db_install.rsp db_install_bkp.rsp
Required parameters to modify:
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
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
oracle.install.db.rootconfig.executeRootScript=false
Step 6: Run runInstaller in Silent Mode
Before running the installer, set CV_ASSUME_DISTID to OEL7. Without it, you may hit the following error on some environments:
[WARNING] [INS-08101] Unexpected error while executing the action at state: 'supportedOSCheck'
The -applyRU flag below is what applies the RU 19.27 patch during this same installation run, so the software comes up already patched.
[oracle@uat ~]$ cd /u01/app/oracle/product/19c/dbhome_1
[oracle@uat dbhome_1]$ ls runInstaller
runInstaller
[oracle@uat dbhome_1]$ export CV_ASSUME_DISTID=OEL7
[oracle@uat dbhome_1]$
[oracle@uat dbhome_1]$ ./runInstaller -applyRU /u01/patch/37642901 -silent -responseFile /u01/app/oracle/product/19c/dbhome_1/install/response/db_install.rsp
Preparing the home to patch...
Applying the patch /u01/patch/37642901...
Successfully applied the patch.
The log can be found at: /tmp/InstallActions2025-08-29_09-25-53AM/installerPatchActions_2025-08-29_09-25-53AM.log
Launching Oracle Database Setup Wizard...
[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.
The response file for this session can be found at:
/u01/app/oracle/product/19c/dbhome_1/install/response/db_2025-08-29_09-25-53AM.rsp
You can find the log of this install session at:
/tmp/InstallActions2025-08-29_09-25-53AM/installActions2025-08-29_09-25-53AM.log
As a root user, execute the following script(s):
1. /u01/app/oraInventory/orainstRoot.sh
2. /u01/app/oracle/product/19c/dbhome_1/root.sh
Execute /u01/app/oraInventory/orainstRoot.sh on the following nodes:
[uat]
Execute /u01/app/oracle/product/19c/dbhome_1/root.sh on the following nodes:
[uat]
Successfully Setup Software.
Moved the install session logs to:
/u01/app/oraInventory/logs/InstallActions2025-08-29_09-25-53AM
[oracle@uat dbhome_1]$
Please note: the -applyRU /u01/patch/37642901 clause in runInstaller is what applies the RU patch during installation. It isn't required for a silent installation on its own, if you just want the base binary installed without patching, you can omit it and patch separately afterward.
Step 7: Run the Root Scripts
These two scripts need root privileges because they register the Oracle inventory ownership and set up OS-level integration (like adding dbhome, oraenv, and coraenv to /usr/local/bin), work the installer itself can't do while running as the oracle user.
[root@uat ~]# /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.
[root@uat ~]# /u01/app/oracle/product/19c/dbhome_1/root.sh
Check /u01/app/oracle/product/19c/dbhome_1/install/root_uat.oraeasy.com_2025-08-29_09-41-32-611356488.log for the output of root script
[root@uat ~]#
[root@uat ~]# cat /u01/app/oracle/product/19c/dbhome_1/install/root_uat.oraeasy.com_2025-08-29_09-41-32-611356488.log
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/19c/dbhome_1
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
[root@uat ~]#
Step 8: Check the Oracle Version and Applied Patch
Confirm the version and the patch both came through correctly before moving on to database creation.
[oracle@uat ~]$ . oraenv
ORACLE_SID = [oracle] ? orcl
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/19c/dbhome_1
The Oracle base has been set to /u01/app/oracle
[oracle@uat ~]$
[oracle@uat ~]$ sqlplus -v
SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.27.0.0.0
[oracle@uat ~]$ cd /u01/app/oracle/product/19c/dbhome_1/OPatch
[oracle@uat OPatch]$ ./opatch lspatches
37642901;Database Release Update : 19.27.0.0.250415 (37642901)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.
[oracle@uat OPatch]$
With the binary installed and RU 19.27 confirmed, let's proceed to create a database.
Create the Database
Step 9: Edit the DBCA Response File
As with the installer, back up the default DBCA response file first, then set the parameters for the database you're creating. Here we're creating a Non-CDB database.
[oracle@uat dbca]$ cd /u01/app/oracle/product/19c/dbhome_1/assistants/dbca
[oracle@uat dbca]$
[oracle@uat dbca]$ ls
dbca.rsp dbca.sh doc jlib templates
[oracle@uat dbca]$ cp dbca.rsp dbca_bkp.rsp
[oracle@uat dbca]$ ls
dbca_bkp.rsp dbca.rsp dbca.sh doc jlib templates
Required parameters to modify:
gdbName=orcl
sid=orcl
databaseConfigType=SI
templateName=General_Purpose.dbc
sysPassword=Sys123
systemPassword=Sys123
datafileDestination=/u01/app/oracle/oradata
recoveryAreaDestination=/u01/app/oracle/FRA
Step 10: Create the Required Directories
[oracle@uat dbca]$ mkdir -p /u01/app/oracle/oradata
[oracle@uat dbca]$
[oracle@uat dbca]$ mkdir -p /u01/app/oracle/FRA
Step 11: Run DBCA in Silent Mode
The warnings about the SYS and SYSTEM passwords are expected here, since the response file above uses a short example password. Use a stronger password in a real deployment.
[oracle@uat dbca]$ dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19c/dbhome_1/assistants/dbca/dbca.rsp
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
10% complete
Copying database files
40% complete
Creating and starting Oracle instance
42% complete
46% complete
50% complete
54% complete
60% complete
Completing Database Creation
66% complete
69% complete
70% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/u01/app/oracle/cfgtoollogs/dbca/orcl.
Database Information:
Global Database Name:orcl
System Identifier(SID):orcl
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
[oracle@uat dbca]$
Step 12: Verify /etc/oratab and Log In
[oracle@uat dbca]$ cat /etc/oratab
#
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by either Database Configuration Assistant while creating
# a database or ASM Configuration Assistant while creating ASM instance.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME::
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third field indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
orcl:/u01/app/oracle/product/19c/dbhome_1:N
[oracle@uat dbca]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 29 11:08:53 2025
Version 19.27.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.27.0.0.0
SQL>
SQL> select name,open_mode,database_role from v$database;
NAME OPEN_MODE DATABASE_ROLE
--------- -------------------- ----------------
ORCL READ WRITE PRIMARY
SQL>
With the database orcl created successfully, let's proceed to create the listener in silent mode.
Create the Listener
Step 13: Edit the NETCA Response File
As with the previous two response files, back up the default first, then set the listener parameters below.
[oracle@uat dbca]$ cd /u01/app/oracle/product/19c/dbhome_1/assistants/netca
[oracle@uat netca]$ ls
doc images jlib netca_deinst.sbs netca.rsp netca.sbs
[oracle@uat netca]$
[oracle@uat netca]$ cp netca.rsp netca_bkp.rsp
[oracle@uat netca]$ ls
doc images jlib netca_bkp.rsp netca_deinst.sbs netca.rsp netca.sbs
[oracle@uat netca]$
Required parameters to modify for the listener:
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
NSN_SERVICE={"orcl"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
Step 14: Run NETCA in Silent Mode
[oracle@uat netca]$ netca -silent -orahome /u01/app/oracle/product/19c/dbhome_1 -responsefile /u01/app/oracle/product/19c/dbhome_1/assistants/netca/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "orahome" = /u01/app/oracle/product/19c/dbhome_1
Parameter "responsefile" = /u01/app/oracle/product/19c/dbhome_1/assistants/netca/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/u01/app/oracle/product/19c/dbhome_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
[oracle@uat netca]$
Step 15: Check the Listener Status
[oracle@uat netca]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 29-AUG-2025 12:27:22
Copyright (c) 1991, 2025, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=uat.oraeasy.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 29-AUG-2025 12:26:39
Uptime 0 days 0 hr. 0 min. 43 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/uat/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=uat.oraeasy.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@uat netca]$
With the listener running and registered against the database, the fully silent installation, patching, database creation, and listener setup is complete.
Thank you for reading!
I hope this content has been helpful to you. Your feedback and suggestions are always welcome, feel free to leave a comment or reach out with any queries.
Abhishek Shrivastava
Oracle DBA with hands-on experience managing production Data Guard, RAC, GoldenGate, and APEX environments. I write practical, tested installation and troubleshooting guides based on real deployment work.

Comments
Post a Comment