Keeping an Oracle Database environment up to date is crucial for maintaining performance, stability, and security. Oracle’s Release Updates (RU) deliver not only bug fixes but also critical security patches and enhancements that ensure compatibility with evolving OS platforms. In this article, we’ll walk through the process of applying the Oracle Database 19.29.0.0.0 Release Update (Patch 38291812) on a Red Hat Linux environment using the OPatch utility.
This step-by-step guide demonstrates how to validate prerequisites, apply the patch safely, and verify its successful installation using SQL*Plus and Data Patch utilities.

1. Environment Overview
For this patching session, we are working with the following setup:
| Component | Details |
|---|---|
| Operating System | Red Hat Enterprise Linux |
| Oracle Database Version (Before Patch) | 19.14.0.0.0 |
| Target Version | 19.29.0.0.0 |
| Patch Number | 38291812 |
| OPatch Version | 12.2.0.1.47 |
| Oracle Home | /u01/app/oracle/product/19.0.0.0/dbhome_1 |
Before applying any patch, it’s best practice to confirm the current OPatch version and ensure the Oracle environment is correctly set up.
[oracle@TnD-ORA OPatch]$ ./opatch version
OPatch Version: 12.2.0.1.47
This confirms the latest OPatch version compatible with Oracle 19c.
2. Checking Existing Patches
Next, review the patches currently applied to the environment to avoid conflicts or duplicates.
[oracle@TnD-ORA OPatch]$ ./opatch lspatches
33515361;Database Release Update : 19.14.0.0.220118 (33515361)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
From this output, we can see that the database is running the 19.14 Release Update. The new patch, 38291812, will replace this and bring the system up to 19.29.
3. Pre-Check for Patch Conflicts
Before patching, Oracle recommends checking for any conflicts between the new patch and existing components.
unzip p38291812_<version>_<platform>.zip
cd 38291812
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
The check returned a “Prereq passed” message:
[oracle@TnD-ORA 38291812]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle Interim Patch Installer version 12.2.0.1.47
Copyright (c) 2025, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/oracle/product/19.0.0.0/dbhome_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/19.0.0.0/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.47
OUI version : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19.0.0.0/dbhome_1/cfgtoollogs/opatch/opatch2025-10-22_09-21-33AM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
This confirms that there are no conflicts, and we can safely proceed.
4. Shutting Down the Database And Listener
All Oracle instances using the target Oracle Home must be stopped before applying the patch.
Database Shutdown
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
Listener shutdown
[oracle@TnD-ORA 38291812]$ 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=172.25.164.61)(PORT=1521)))
The command completed successfully
This step ensures no data corruption or file locks occur during patching.
5. Applying the Patch
Once the system is ready, run the OPatch apply command from within the extracted patch directory.
cd <PATCH_TOP_DIR>/38291812
[oracle@TnD-ORA 38291812]$ $ORACLE_HOME/OPatch/opatch apply
The process begins with environment validation, file backups, and patch component application. The system prompts for confirmation:
[oracle@TnD-ORA 38291812]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch apply
Oracle Interim Patch Installer version 12.2.0.1.47
Copyright (c) 2025, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/19.0.0.0/dbhome_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/19.0.0.0/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.47
OUI version : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19.0.0.0/dbhome_1/cfgtoollogs/opatch/opatch2025-10-22_09-23-17AM_1.log
Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 38291812
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.0.0.0/dbhome_1')
Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '38291812' to OH '/u01/app/oracle/product/19.0.0.0/dbhome_1'
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.pg4appc, 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.rdbms.tg4tera, 19.0.0.0.0 ] , [ oracle.oid.client, 19.0.0.0.0 ] , [ oracle.network.cman, 19.0.0.0.0 ] , [ oracle.rdbms.tg4sybs, 19.0.0.0.0 ] , [ oracle.xdk.companion, 19.0.0.0.0 ] , [ oracle.ons.cclient, 19.0.0.0.0 ] , [ oracle.ons.eons.bwcompat, 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.options.olap, 19.0.0.0.0 ] , [ oracle.rdbms.tg4ifmx, 19.0.0.0.0 ] , [ oracle.ldap.ztk, 19.0.0.0.0 ] , [ oracle.net.cman, 19.0.0.0.0 ] , [ oracle.options.olap.api, 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, 19.0.0.0.0...
Patching component oracle.rdbms.rsf, 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.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.rdbms.locator, 19.0.0.0.0...
Patching component oracle.network.aso, 19.0.0.0.0...
Patching component oracle.ctx.atg, 19.0.0.0.0...
Patching component oracle.ovm, 19.0.0.0.0...
Patching component oracle.rdbms.lbac, 19.0.0.0.0...
Patching component oracle.ctx.rsf, 19.0.0.0.0...
Patching component oracle.ldap.rsf.ic, 19.0.0.0.0...
Patching component oracle.rdbms.rman, 19.0.0.0.0...
Patching component oracle.network.client, 19.0.0.0.0...
Patching component oracle.xdk.xquery, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf.core, 19.0.0.0.0...
Patching component oracle.oraolap, 19.0.0.0.0...
Patching component oracle.xdk.server, 19.0.0.0.0...
Patching component oracle.rdbms.install.plugins, 19.0.0.0.0...
Patching component oracle.odbc, 19.0.0.0.0...
Patching component oracle.oraolap.api, 19.0.0.0.0...
Patching component oracle.xdk.parser.java, 19.0.0.0.0...
Patching component oracle.oraolap.dbscripts, 19.0.0.0.0...
Patching component oracle.rdbms.rat, 19.0.0.0.0...
Patching component oracle.install.deinstalltool, 19.0.0.0.0...
Patching component oracle.dbtoolslistener, 19.0.0.0.0...
Patching component oracle.rdbms.hsodbc, 19.0.0.0.0...
Patching component oracle.rdbms.drdaas, 19.0.0.0.0...
Patching component oracle.ldap.ssl, 19.0.0.0.0...
Patching component oracle.xdk, 19.0.0.0.0...
Patching component oracle.rdbms.dm, 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.javavm.server, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf.lbuilder, 19.0.0.0.0...
Patching component oracle.mgw.common, 19.0.0.0.0...
Patching component oracle.network.listener, 19.0.0.0.0...
Patching component oracle.rdbms.dv, 19.0.0.0.0...
Patching component oracle.sdo.locator, 19.0.0.0.0...
Patching component oracle.rdbms.hs_common, 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 38291812 successfully applied.
Sub-set patch [33515361] has become inactive due to the application of a super-set patch [38291812].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /u01/app/oracle/product/19.0.0.0/dbhome_1/cfgtoollogs/opatch/opatch2025-10-22_09-23-17AM_1.log
OPatch succeeded.
After confirming, OPatch begins applying updates to multiple Oracle components such as:
- oracle.rdbms
- oracle.network
- oracle.javavm
- oracle.sqlplus
- oracle.ldap
- oracle.odbc
Once the patching of all subcomponents completes, OPatch displays the success message:
6. Starting Up the Database
After applying the binary patch, start the Oracle instance to bring the database online.
SQL> startup;
ORACLE instance started.
Database mounted.
Database opened.
Verify the database version:
SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.29.0.0.0
This confirms the binary version upgrade was successful.
7. Running Datapatch Sanity Checks
Before applying the SQL portion of the patch, run datapatch sanity checks to ensure the database and Oracle Home are in a consistent state.
[oracle@TnD-ORA OPatch]$ ./datapatch -sanity_checks
The results show all checks marked OK, including:
- Database component status
- Tablespace status
- Backup jobs
- Data Pump running status
- Dictionary statistics
- Oracle Vault and JVM enablement
- Queryable Inventory and Central Inventory integrity
This verification ensures no blockers exist for SQL patching.
[oracle@TnD-ORA OPatch]$ ./datapatch -sanity_checks
SQL Patching sanity checks version 19.29.0.0.0 on Wed 22 Oct 2025 09:38:10 AM +0530
Copyright (c) 2021, 2025, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20251022_093809_22193/sanity_checks_20251022_093809_22193.log
Running checks
JSON report generated in /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20251022_093809_22193/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
SQL Patching sanity checks completed on Wed 22 Oct 2025 09:38:13 AM +0530
8. Applying SQL Patches with Datapatch
Now execute the datapatch utility to apply the SQL scripts corresponding to the 19.29 binary patch.
[oracle@TnD-ORA OPatch]$ ./datapatch -verbose
Datapatch connects to the database, gathers registry information, and applies SQL changes:
[oracle@TnD-ORA-CSE1 OPatch]$ ./datapatch -verbose
SQL Patching tool version 19.29.0.0.0 Production on Wed Oct 22 09:38:51 2025
Copyright (c) 2012, 2025, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_22257_2025_10_22_09_38_51/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.29.0.0.0 Release_Update 251002005342: 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 38291812 (Database Release Update : 19.29.0.0.251021 (38291812)):
Apply from 19.1.0.0.0 Feature Release to 19.29.0.0.0 Release_Update 251002005342
No interim patches need to be applied
Installing patches...
Patch installation complete. Total patches installed: 1
Validating logfiles...done
Patch 38291812 apply: SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/38291812/28130960/38291812_apply_UPULDB_2025Oct22_09_40_56.log (no errors)
SQL Patching tool complete on Wed Oct 22 10:03:54 2025
This confirms the SQL registry was successfully updated.
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
------------------------- ---------- -------- --------------- ---------------
22-OCT-25 10.03.01 AM APPLY SUCCESS 19.1.0.0.0 19.29.0.0.0
This confirms that the Oracle Database has been successfully upgraded to 19.29.0.0.0.
10. Post-Patch Validation
After patching, it’s essential to perform post-installation validation:
- Check listener and services using
lsnrctl status. - Verify Database Health via
alert.logfor any warnings. - Test application connectivity to ensure smooth operations.
- Take a fresh backup to secure the updated environment.
- Recompile invalids if needed:
$ORACLE_HOME/rdbms/admin/utlrp.sql
These post-patch checks confirm the system’s readiness for production workloads.
11. Rollback (if needed)
You can roll back from the same patch top directories:
# Then rollback the DB RU
$ORACLE_HOME/OPatch/opatch rollback -id 38291812
12. Key Takeaways
Applying Oracle patches regularly ensures that your database benefits from the latest security and stability enhancements. The 19.29 Release Update includes cumulative bug fixes and performance improvements over previous RUs.
Lessons from this patching session:
- Always confirm OPatch and OUI versions are compatible with the new patch.
- Perform conflict checks and sanity checks before patching.
- Shut down all database instances using the Oracle Home before applying the patch.
- Run datapatch after binary patching to update SQL components.
- Validate patch application using the DBA_REGISTRY_SQLPATCH view.
13. Conclusion
The Oracle 19.29 patching process on Red Hat Linux showcases the precision and reliability of Oracle’s OPatch utility and datapatch framework. From pre-checks to final verification, each step ensures the integrity of the database environment and minimal downtime.
With successful application of Patch 38291812, the database is now operating at Version 19.29.0.0.0, benefiting from the latest security updates and performance enhancements provided by Oracle Corporation.
Regular patch maintenance should be an integral part of every DBA’s routine, keeping systems secure, compliant, and optimized for future workloads.
NEW RELEASE UPDATE






HI, how about with 5 instance, in the same ORACLE_HOME
Only executing datapatch for each instance, its OK?
export ORACLE_SID=DBX
./datapatch -verbose
Yes, that’s correct. If you have multiple databases/instances using the same ORACLE_HOME, you need to run datapatch for each database after setting the appropriate ORACLE_SID.
Example:
export ORACLE_SID=DBX
./datapatch -verbose
Then repeat for the remaining instances. datapatch updates the SQL components inside each database, so it must be executed once per database.