Keeping Oracle databases patched is no longer optional—it’s a core responsibility for DBAs who care about security, stability, and long-term support. Oracle Database 19c is the long-term release, and Oracle continues to deliver quarterly Release Updates (RUs) to address security vulnerabilities, bug fixes, and performance improvements.
In this article, we walk through a real-world application of Patch 38632161, which upgrades Oracle Database 19c to Release Update 19.30.0.0.260120. This guide covers OPatch upgrade, pre-checks, patch application, and post-patch validation, all based on an actual production-style environment.
Why Patch 38632161 Matters
Patch 38632161 is a Database Release Update (RU) for Oracle 19c. Unlike one-off interim patches, a Release Update is cumulative. That means:
- It includes all previous security fixes
- Resolves known Oracle bugs
- Improves database stability and performance
- Keeps your system compliant with Oracle’s recommended patching strategy
Applying the latest RU is essential for environments running mission-critical workloads, especially those exposed to external integrations or compliance requirements.

Prerequisite: OPatch Version Requirement
Before applying this patch, Oracle explicitly requires:
OPatch version 12.2.0.1.48 or later
Checking the existing OPatch version showed:
./opatch version
OPatch Version: 12.2.0.1.46
This version is not sufficient, so upgrading OPatch is mandatory before proceeding.
Step 1: Upgrade OPatch Utility
To avoid conflicts, the existing OPatch directory was backed up:
cd $ORACLE_HOME
mv OPatch OPatch_12.2.0.1.46
Next, the latest OPatch was extracted directly into the Oracle Home:
unzip p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.0.0/
After extraction, verification confirmed the upgrade:
./opatch version
OPatch Version: 12.2.0.1.49
✅ OPatch is now compliant with the patch requirement.
How To Download And Install The Latest OPatch
Step 2: Verify Current Patch Level
Before applying a new RU, it’s important to understand the current patch baseline.
Database SQL Patch Status
select action_time, action, status, source_version, target_version
from dba_registry_sqlpatch;
ACTION_TIME ACTION STATUS SOURCE_VERSION TARGET_VERSION
------------------------- --------------- ------------ --------------- ---------------
29-OCT-25 01.14.37.206437 APPLY SUCCESS 19.1.0.0.0 19.28.0.0.0
This confirmed the database was already patched up to 19.28.0.0.0.
Oracle Home Patch Inventory
opatch lspatches
37960098;Database Release Update : 19.28.0.0.250715 (37960098)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
Output showed:
- Database Release Update 19.28
- OCW Release Update 19.3
This is expected and confirms the environment is ready for a higher RU.
Step 3: Extract Patch 38632161
The patch bundle was extracted as follows:
unzip p38632161_190000_Linux-x86-64.zip
Archive: p38632161_190000_Linux-x86-64.zip
creating: 38632161/
creating: 38632161/etc/
creating: 38632161/etc/config/
inflating: 38632161/etc/config/inventory.xml
inflating: 38632161/etc/config/actions.xml
inflating: 38632161/etc/config/stringsubs.xml
inflating: 38632161/README.html
creating: 38632161/custom/
creating: 38632161/custom/scripts/
.
.
inflating: 38632161/files/dg4sybs/driver/lib/libodbc.so
creating: 38632161/files/dg4sybs/driver/locale/
creating: 38632161/files/dg4sybs/driver/locale/en_US/
creating: 38632161/files/dg4sybs/driver/locale/en_US/LC_MESSAGES/
inflating: 38632161/files/dg4sybs/driver/locale/en_US/LC_MESSAGES/HGase23.mo
inflating: PatchSearch.xml
This created the patch directory 38632161/ containing metadata, scripts, binaries, and configuration files required for the upgrade.
Step 4: Run Conflict and Prerequisite Checks
Before touching the Oracle Home, always validate conflicts:
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
The result:
/u01/app/oracle/product/19.0.0/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
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.0.0
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/19.0.0/oraInst.loc
OPatch version : 12.2.0.1.49
OUI version : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19.0.0/cfgtoollogs/opatch/opatch2026-01-21_04-31-57AM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
✅ No conflicts detected.
This step is critical in avoiding failed patch attempts or corrupted Oracle Homes.
Step 5: Shutdown Database and Listener
Oracle requires a clean shutdown before applying a Release Update.
SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
Then stop the listener:
lsnrctl stop
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 22-OCT-2025 09:23:08
Copyright (c) 1991, 2021, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.100)(PORT=1521)))
The command completed successfully
At this point, the system is fully ready for patching.
Step 6: Apply Patch 38632161
Navigate to the patch directory and apply:
opatch apply
After confirming prompts, OPatch performed:
- Environment validation
- File backups
- Component-by-component patching
During execution, OPatch skipped optional components not present in the Oracle Home and continued safely.
The final confirmation:
[oracle@prod 38632161]$ /u01/app/oracle/product/19.0.0/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.0.0
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/19.0.0/oraInst.loc
OPatch version : 12.2.0.1.49
OUI version : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19.0.0/cfgtoollogs/opatch/opatch2026-01-21_04-33-57AM_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
yAll checks passed.
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/19.0.0')
Is the local system ready for patching? [y|n]
y
Could not recognize input. Please re-enter.
Could not recognize input. Please re-enter.
y
User Responded with: Y
Backing up files...
Applying interim patch '38632161' to OH '/u01/app/oracle/product/19.0.0'
ApplySession: Optional component(s) [ oracle.network.gsm, 19.0.0.0.0 ] , [ oracle.assistants.asm, 19.0.0.0.0 ] , [ oracle.crypto.rsf, 19.0.0.0.0 ] , [ oracle.datamining, 19.0.0.0.0 ] , [ oracle.oraolap.mgmt, 19.0.0.0.0 ] , [ oracle.pg4appc, 19.0.0.0.0 ] , [ oracle.pg4mq, 19.0.0.0.0 ] , [ oracle.precomp.companion, 19.0.0.0.0 ] , [ oracle.rdbms.ic, 19.0.0.0.0 ] , [ oracle.rdbms.tg4db2, 19.0.0.0.0 ] , [ oracle.sdo.companion, 19.0.0.0.0 ] , [ oracle.tfa, 19.0.0.0.0 ] , [ oracle.rdbms.tg4msql, 19.0.0.0.0 ] , [ oracle.ons.eons.bwcompat, 19.0.0.0.0 ] , [ oracle.options.olap.api, 19.0.0.0.0 ] , [ oracle.rdbms.tg4sybs, 19.0.0.0.0 ] , [ oracle.net.cman, 19.0.0.0.0 ] , [ oracle.options.olap, 19.0.0.0.0 ] , [ oracle.network.cman, 19.0.0.0.0 ] , [ oracle.pg4mq, 19.0.0.0.0 ] , [ oracle.oraolap.mgmt, 19.0.0.0.0 ] , [ oracle.java.sqlj.sqljruntime, 19.0.0.0.0 ] , [ oracle.datamining, 19.0.0.0.0 ] , [ oracle.xdk.companion, 19.0.0.0.0 ] , [ oracle.rdbms.tg4tera, 19.0.0.0.0 ] , [ oracle.ldap.ztk, 19.0.0.0.0 ] , [ oracle.ons.cclient, 19.0.0.0.0 ] , [ oracle.oid.client, 19.0.0.0.0 ] , [ oracle.rdbms.tg4ifmx, 19.0.0.0.0 ] , [ oracle.jdk, 1.8.0.191.0 ] , [ oracle.jdk, 1.8.0.391.11 ] not present in the Oracle Home or a higher version is found.
Patching component oracle.rdbms.rsf, 19.0.0.0.0...
Patching component oracle.rdbms, 19.0.0.0.0...
Patching component oracle.rdbms.util, 19.0.0.0.0...
Patching component oracle.assistants.acf, 19.0.0.0.0...
Patching component oracle.assistants.deconfig, 19.0.0.0.0...
Patching component oracle.assistants.server, 19.0.0.0.0...
Patching component oracle.blaslapack, 19.0.0.0.0...
Patching component oracle.buildtools.rsf, 19.0.0.0.0...
Patching component oracle.ctx, 19.0.0.0.0...
Patching component oracle.dbdev, 19.0.0.0.0...
Patching component oracle.dbjava.ic, 19.0.0.0.0...
Patching component oracle.dbjava.jdbc, 19.0.0.0.0...
Patching component oracle.dbjava.ucp, 19.0.0.0.0...
Patching component oracle.duma, 19.0.0.0.0...
Patching component oracle.javavm.client, 19.0.0.0.0...
Patching component oracle.ldap.client, 19.0.0.0.0...
Patching component oracle.ldap.owm, 19.0.0.0.0...
Patching component oracle.ldap.rsf, 19.0.0.0.0...
Patching component oracle.ldap.security.osdt, 19.0.0.0.0...
Patching component oracle.marvel, 19.0.0.0.0...
Patching component oracle.network.rsf, 19.0.0.0.0...
Patching component oracle.odbc.ic, 19.0.0.0.0...
Patching component oracle.ons, 19.0.0.0.0...
Patching component oracle.ons.ic, 19.0.0.0.0...
Patching component oracle.oracore.rsf, 19.0.0.0.0...
Patching component oracle.perlint, 5.28.1.0.0...
Patching component oracle.precomp.common.core, 19.0.0.0.0...
Patching component oracle.precomp.rsf, 19.0.0.0.0...
Patching component oracle.rdbms.crs, 19.0.0.0.0...
Patching component oracle.rdbms.dbscripts, 19.0.0.0.0...
Patching component oracle.rdbms.deconfig, 19.0.0.0.0...
Patching component oracle.rdbms.install.common, 19.0.0.0.0...
Patching component oracle.rdbms.oci, 19.0.0.0.0...
Patching component oracle.rdbms.rsf.ic, 19.0.0.0.0...
Patching component oracle.rdbms.scheduler, 19.0.0.0.0...
Patching component oracle.rhp.db, 19.0.0.0.0...
Patching component oracle.rsf, 19.0.0.0.0...
Patching component oracle.sdo, 19.0.0.0.0...
Patching component oracle.sdo.locator.jrf, 19.0.0.0.0...
Patching component oracle.sqlj.sqljruntime, 19.0.0.0.0...
Patching component oracle.sqlplus, 19.0.0.0.0...
Patching component oracle.sqlplus.ic, 19.0.0.0.0...
Patching component oracle.tfa.db, 19.0.0.0.0...
Patching component oracle.wwg.plsql, 19.0.0.0.0...
Patching component oracle.xdk.rsf, 19.0.0.0.0...
Patching component oracle.xdk.parser.java, 19.0.0.0.0...
Patching component oracle.rdbms.lbac, 19.0.0.0.0...
Patching component oracle.ldap.ssl, 19.0.0.0.0...
Patching component oracle.network.aso, 19.0.0.0.0...
Patching component oracle.xdk, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf.core, 19.0.0.0.0...
Patching component oracle.odbc, 19.0.0.0.0...
Patching component oracle.rdbms.rat, 19.0.0.0.0...
Patching component oracle.rdbms.dv, 19.0.0.0.0...
Patching component oracle.oraolap.dbscripts, 19.0.0.0.0...
Patching component oracle.rdbms.hs_common, 19.0.0.0.0...
Patching component oracle.ldap.rsf.ic, 19.0.0.0.0...
Patching component oracle.oraolap, 19.0.0.0.0...
Patching component oracle.install.deinstalltool, 19.0.0.0.0...
Patching component oracle.mgw.common, 19.0.0.0.0...
Patching component oracle.rdbms.rman, 19.0.0.0.0...
Patching component oracle.xdk.server, 19.0.0.0.0...
Patching component oracle.oraolap.api, 19.0.0.0.0...
Patching component oracle.rdbms.hsodbc, 19.0.0.0.0...
Patching component oracle.ctx.atg, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf.core, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf.ic, 19.0.0.0.0...
Patching component oracle.sqlj.sqljruntime, 19.0.0.0.0...
Patching component oracle.wwg.plsql, 19.0.0.0.0...
Patching component oracle.network.client, 19.0.0.0.0...
Patching component oracle.dbtoolslistener, 19.0.0.0.0...
Patching component oracle.rdbms.install.plugins, 19.0.0.0.0...
Patching component oracle.ctx.rsf, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf.lbuilder, 19.0.0.0.0...
Patching component oracle.rdbms.drdaas, 19.0.0.0.0...
Patching component oracle.sdo.locator, 19.0.0.0.0...
Patching component oracle.rdbms.locator, 19.0.0.0.0...
Patching component oracle.network.listener, 19.0.0.0.0...
Patching component oracle.ovm, 19.0.0.0.0...
Patching component oracle.javavm.server, 19.0.0.0.0...
Patching component oracle.xdk.xquery, 19.0.0.0.0...
Patching component oracle.precomp.common, 19.0.0.0.0...
Patching component oracle.precomp.lang, 19.0.0.0.0...
Patching component oracle.jdk, 1.8.0.201.0...
Patch 38632161 successfully applied.
Sub-set patch [37960098] has become inactive due to the application of a super-set patch [38632161].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /u01/app/oracle/product/19.0.0/cfgtoollogs/opatch/opatch2026-01-21_04-33-57AM_1.log
OPatch succeeded.
🔍 Important Note
This message confirms that 19.30 RU supersedes 19.28, which is exactly how Release Updates are designed to behave.
Step 7: Run Datapatch Sanity Checks
After binary patching, SQL-level changes must be validated.
Before running datapatch, Oracle provides a powerful pre-validation step:
./datapatch -sanity_checks
The checks covered:
- Database component status
- Invalid objects
- PDB violations
- Tablespace health
- Scheduler jobs
- Data Pump activity
- JVM, Vault, and GoldenGate triggers
- Central inventory and dictionary consistency
All checks returned:
[oracle@prod OPatch]$ ./datapatch -sanity_checks
SQL Patching sanity checks version 19.30.0.0.0 on Wed 21 Jan 2026 04:42:14 AM +0530
Copyright (c) 2021, 2026, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20260121_044214_16932/sanity_checks_20260121_044214_16932.log
Running checks
Use of uninitialized value $pdb in concatenation (.) or string at /u01/app/oracle/product/19.0.0/sqlpatch/sqlpatch_sanity_checks.pm line 1300.
JSON report generated in /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20260121_044214_16932/sqlpatch_sanity_checks_summary.json file
Checks completed. Printing report:
Check: Database component status - OK
Check: PDB Violations - OK
Check: Invalid System Objects - OK
Check: Tablespace Status - OK
Check: Backup jobs - OK
Check: Temp file exists - OK
Check: Temp file online - OK
Check: Data Pump running - OK
Check: Container status - OK
Check: Oracle Database Keystore - OK
Check: Dictionary statistics gathering - OK
Check: Scheduled Jobs - OK
Check: GoldenGate triggers - OK
Check: Logminer DDL triggers - OK
Check: Check sys public grants - OK
Check: Statistics gathering running - OK
Check: Optim dictionary upgrade parameter - OK
Check: Symlinks on oracle home path - OK
Check: Central Inventory - OK
Check: Java Virtual Machine Enable - OK
Check: Oracle Database Vault Enabled - OK
Check: Queryable Inventory database directories - OK
Check: Queryable Inventory locks - OK
Check: Queryable Inventory package - OK
Check: Queryable Inventory external table - OK
Check: Imperva processes - OK
Check: Guardium processes - OK
Check: Locale - OK
Refer to MOS Note 2975965.1 and debug log
/u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20260121_044214_16932/sanity_checks_debug_20260121_044214_16932.log
SQL Patching sanity checks completed on Wed 21 Jan 2026 04:42:16 AM +0530
✅ This confirms the database is ready for SQL patching and fully consistent.
8. Applying SQL Patches with Datapatch
Now execute the datapatch utility to apply the SQL scripts corresponding to the 19.29 binary patch.
Oracle Cloud consulting
[oracle@TnD-ORA OPatch]$ ./datapatch -verbose
Datapatch connects to the database, gathers registry information, and applies SQL changes:
[oracle@prod OPatch]$ ./datapatch -verbose
SQL Patching tool version 19.30.0.0.0 Production on Wed Jan 21 04:43:11 2026
Copyright (c) 2012, 2026, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_17453_2026_01_21_04_43_11/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 260116203150: Installed
SQL registry:
Applied 19.28.0.0.0 Release_Update 250705030417 successfully on 29-OCT-25 01.14.37.206437 PM
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 (38632161)):
Apply from 19.28.0.0.0 Release_Update 250705030417 to 19.30.0.0.0 Release_Update 260116203150
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/28443995/38632161_apply_TESTDB_2026Jan21_04_44_17.log (no errors)
SQL Patching tool complete on Wed Jan 21 04:49:43 2026
This confirms the SQL registry was successfully updated.
Oracle Database training
9. Verifying Patch Application
To confirm patch installation, query the DBA_REGISTRY_SQLPATCH view.
SQL> set lines 200
SQL> col action_time format a25
SQL> col status format a12
SQL> select action_time, action, status, source_version, target_version from dba_registry_sqlpatch;
The output shows:
ACTION_TIME ACTION STATUS SOURCE_VERSION TARGET_VERSION
------------------------------ --------------- ------------ --------------- ---------------
29-OCT-25 01.14.37.206437 PM APPLY SUCCESS 19.1.0.0.0 19.28.0.0.0
21-JAN-26 04.45.06.946909 AM APPLY SUCCESS 19.28.0.0.0 19.30.0.0.0
[oracle@prod OPatch]$ /u01/app/oracle/product/19.0.0/OPatch/opatch lspatches
38632161;Database Release Update : 19.30.0.0.260120 (38632161)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
This confirms that the Oracle Database has been successfully upgraded to 19.30.0.0.0.
Best Practices Observed in This Patch Cycle
This patching exercise followed several Oracle-recommended best practices:
- ✔ OPatch upgraded before RU application
- ✔ Conflict checks executed in advance
- ✔ Clean database and listener shutdown
- ✔ Post-patch sanity validation
- ✔ No skipped or ignored errors
These steps significantly reduce rollback risk and unplanned downtime.
Final Thoughts
Applying Patch 38632161 (Oracle 19.30 RU) is a straightforward process when done methodically. The key takeaway is that successful patching is not just about running opatch apply, but about preparation, validation, and verification.
For DBAs managing Oracle 19c environments, staying current with Release Updates ensures:
- Better security posture
- Improved database stability
- Continued Oracle support compliance
If you’re planning your next patch cycle, this workflow provides a solid, production-proven reference.
Oracle Critical Patch Update Advisory – January 2026






Comments 3