Keeping your Oracle Database 19c up to date is critical for security, performance, and stability. In this guide, you’ll learn how to apply the latest Oracle 19c Patch 19.30 on a Linux environment.
📌 Prerequisites
Before applying the Oracle 19c Patch 19.30, ensure:
- Oracle Home path is set correctly.
- The database is running.
- Backup of the database and Oracle Home is taken.
- Latest OPatch version (12.2.0.1.40 or higher) installed.
- Sufficient disk space available.
Step 1: Download the Required Patches
These two patches must be downloaded from Oracle Support:
- Oracle 19.30 Database RU Patch
- OJVM Patch (optional but recommended)
Current Database Version
In our case, we just install oracle 19c base version 19.3.0.0.0 only, and we will apply the latest patch on it.

Download OPatch Version
OPatch utility version 12.2.0.1.48 or later to apply this patch. Download the OPatch latest version.

Update OPatch Version
Unzip the OPatch inside the Oracle home directory, but before it take backup of the old OPatch directory.
[oracle@ocptech dbhome_1]$ unzip p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.3.0/dbhome_1/ Check OPatch Version now:
[oracle@ocptech OPatch]$ ./opatch version
OPatch Version: 12.2.0.1.49
OPatch succeeded.Step 2: Prepare Patch Directory
mkdir -p /u01/patch-19.30
cd /u01/patch-19.30
unzip p38632161_190000_Linux-x86-64.zip .Step 3: Stop Database and Listener
Stop all the database services using the following steps:
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
EXIT;
lsnrctl stopStep 4: Check Current Patch Level
$ORACLE_HOME/OPatch/opatch lspatches
[oracle@ocptech ~]$ $ORACLE_HOME/OPatch/opatch lspatches
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)
OPatch succeeded.Step 5: Run Conflict Check
[oracle@ocptech 38632161]$ pwd
/u01/patch-19.30/38632161
[oracle@ocptech 38632161]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir .
Oracle Interim Patch Installer version 12.2.0.1.49
Copyright (c) 2026, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/oracle/product/19.3.0/dbhome_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/19.3.0/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.49
OUI version : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19.3.0/dbhome_1/cfgtoollogs/opatch/opatch2026-03-24_21-52-56PM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.Step 6: Apply the Patch
cd /u01/patches/1930/38632161
$ORACLE_HOME/OPatch/opatch apply👉 Follow on-screen prompts and confirm with y
Output:
[oracle@ocptech 38632161]$ $ORACLE_HOME/OPatch/opatch apply
Oracle Interim Patch Installer version 12.2.0.1.49
Copyright (c) 2026, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/19.3.0/dbhome_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/19.3.0/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.49
OUI version : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19.3.0/dbhome_1/cfgtoollogs/opatch/opatch2026-03-24_22-01-53PM_1.log
Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 38632161
Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/19.3.0/dbhome_1')
Is the local system ready for patching? [y|n]
Step 7: Run Datapatch
Start the database first:
sqlplus / as sysdba
STARTUP;
EXIT;Then run:
$ORACLE_HOME/OPatch/datapatch -verboseOutput:
[oracle@ocptech ~]$ $ORACLE_HOME/OPatch/datapatch -verbose
SQL Patching tool version 19.30.0.0.0 Production on Tue Mar 24 23:38:23 2026
Copyright (c) 2012, 2026, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_21179_2026_03_24_23_38_23/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
Bootstrapping registry and package to current versions...done
Determining current state...done
Current state of interim SQL patches:
No interim patches found
Current state of release update SQL patches:
Binary registry:
19.30.0.0.0 Release_Update 260126024251: Installed
SQL registry:
No release update patches installed
Adding patches to installation queue and performing prereq checks...done
Installation queue:
No interim patches need to be rolled back
Patch 38632161 (Database Release Update : 19.30.0.0.260120(REL-JAN260130) (38632161)):
Apply from 19.1.0.0.0 Feature Release to 19.30.0.0.0 Release_Update 260126024251
No interim patches need to be applied
Installing patches...
Patch installation complete. Total patches installed: 1
Validating logfiles...done
Patch 38632161 apply: SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/38632161/28482211/38632161_apply_INFODB_2026Mar24_23_39_39.log (no errors)
SQL Patching tool complete on Tue Mar 24 23:51:03 2026Step 8: Restart Listener
lsnrctl startStep 9: Verify Patch Applied
$ORACLE_HOME/OPatch/opatch lspatchesOutput:
[oracle@ocptech ~]$ $ORACLE_HOME/OPatch/opatch lspatches
38632161;Database Release Update : 19.30.0.0.260120(REL-JAN260130) (38632161)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.Also, verify in the database:
set lin 300 pagesize 300
col ACTION_TIME for a30
col STATUS for a12
col DESCRIPTION for a44
SELECT * FROM dba_registry_sqlpatch;
OR
select PATCH_ID,ACTION_TIME,SOURCE_VERSION,TARGET_VERSION,STATUS,DESCRIPTION FROM dba_registry_sqlpatch;Output like:

You can check it out our other post related to Oracle Database Patching here.