This guide walks through the complete process of applying the Oracle 19c January 2026 Critical Patch Update (CPU) in a CDB/PDB environment. The bundle includes the following patches:
- Bundle Patch 38658587 — January 2026 Oracle Database 19c Bundle Patch
- DBSU Patch 38632161 — Database Release Update: 19.30.0.0.260120
- OJVM Patch 38523609 — OJVM Release Update: 19.30.0.0.260120
- Overlay Patch 34672698 — Required overlay/conflict resolution patch
Step 1: Capture Database Details
echo $ORACLE_SID
sqlplus / as sysdba
select name from v$database;
show pdbs;
Step 2: Pre-Patch Checks (CDB and PDB Level)
sqlplus / as sysdba
-- Check invalid objects
Set lines 230
set pages 100
col OBJECT_NAME for a40
col OBJECT_TYPE for a40
col OWNER for a20
select OBJECT_NAME, OBJECT_TYPE, OWNER,
to_char(LAST_DDL_TIME,'DD-MON-YYYY HH24:MI:SS'), status
from dba_objects
where status='INVALID'
order by owner;
-- Check patch registry
col ACTION_TIME for a30
set pages 100
set lines 300
col status for a15
col description for a60
col ACTION for a15
select patch_id,action,status,action_time,description
from dba_registry_sqlpatch;
-- Check component versions
COL comp_name FOR a44 HEA 'Component'
COL version FOR a17 HEA 'Version'
COL status FOR a17 HEA 'Status'
col COMP_ID for a12
SELECT COMP_ID,comp_name, version, status FROM dba_registry;
Step 3: Comment Out Crontab Entries
(/usr/bin/crontab -l | /bin/sed 's/^/##JAN_2026##&/g' | /usr/bin/crontab)
Step 4: Place OEM Blackout (If Applicable)
If Oracle Enterprise Manager (OEM) is monitoring this database, place a blackout to suppress false alerts during the patching window.
Step 5: Shutdown Database and Take Oracle Home Backup
Bring down the database and listener, then take a TAR backup of the Oracle Home before applying any patches. This is your rollback point.
Step 6: Apply DBSU Patch 38632161
export PATH=$ORACLE_HOME/OPatch:$PATH
cd /<PATCH_STAGING_DIR>/JAN_2026/38658587/38632161
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch rollback -id 34672698
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply
opatch lsinventory | grep 38632161
Step 7: Apply OJVM Patch 38523609
export PATH=$ORACLE_HOME/OPatch:$PATH
cd /<PATCH_STAGING_DIR>/JAN_2026/38658587/38523609
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply
opatch lsinventory | grep 38523609
opatch lspatches
Step 8: Change oradism File Permissions (Pre-Overlay)
# Run as root
chown oracle:oinstall /<ORACLE_HOME>/bin/oradism
chmod 755 /<ORACLE_HOME>/bin/oradism
Step 9: Apply Overlay Patch 34672698
export PATH=$ORACLE_HOME/OPatch:$PATH
cd /<PATCH_STAGING_DIR>/JAN_2026/34672698
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply
opatch lsinventory | grep 34672698
Step 10: Revert oradism File Permissions
# Run as root
chown root:oinstall /<ORACLE_HOME>/bin/oradism
chmod 4750 /<ORACLE_HOME>/bin/oradism
Step 11: Start Database and Listener
sqlplus / as sysdba
startup;
alter pluggable database all open;
exit;
echo $TNS_ADMIN
lsnrctl start LISTENER
Step 12: Run Datapatch
cd $ORACLE_HOME/OPatch
./datapatch -verbose
Step 13: Final Checks and Remove OEM Blackout
Confirm the database and listener are up and running, then remove the OEM blackout if one was placed in Step 4.
Step 14: Re-enable Crontab Jobs
(/usr/bin/crontab -l | /bin/sed 's/##JAN_2026##//g' | /usr/bin/crontab)
Step 15: Post-Patch Validation — Real Output
After patching, verify the installed patches using OPatch. Below is the actual output from a production patching run:
[oracle@<HOSTNAME> OPatch]$ opatch lspatches
34672698;ORA-00800 SOFT EXTERNAL ERROR, ARGUMENTS [SET PRIORITY FAILED], [VKTM], DISM(16)
38523609;OJVM RELEASE UPDATE: 19.30.0.0.260120 (38523609)
38632161;Database Release Update : 19.30.0.0.260120 (38632161)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.
Verify patch registry — confirm patches 38523609 and 38632161 show APPLY SUCCESS:
PATCH_ID ACTION STATUS ACTION_TIME DESCRIPTION
---------- --------- -------- ------------------------------ -----------------------------------------------------------
38194382 ROLLBACK SUCCESS 03-FEB-26 02.39.24.188908 PM OJVM RELEASE UPDATE: 19.29.0.0.251021 (38194382)
38523609 APPLY SUCCESS 03-FEB-26 02.39.39.457321 PM OJVM RELEASE UPDATE: 19.30.0.0.260120 (38523609)
38632161 APPLY SUCCESS 03-FEB-26 02.40.30.102001 PM Database Release Update : 19.30.0.0.260120 (38632161)
Verify all 15 database components are VALID:
COMP_ID Component Version Status
------------ -------------------------------------------- ----------------- -----------------
CATALOG Oracle Database Catalog Views 19.0.0.0.0 VALID
CATPROC Oracle Database Packages and Types 19.0.0.0.0 VALID
RAC Oracle Real Application Clusters 19.0.0.0.0 OPTION OFF
JAVAVM JServer JAVA Virtual Machine 19.0.0.0.0 VALID
XML Oracle XDK 19.0.0.0.0 VALID
CATJAVA Oracle Database Java Packages 19.0.0.0.0 VALID
APS OLAP Analytic Workspace 19.0.0.0.0 VALID
XDB Oracle XML Database 19.0.0.0.0 VALID
OWM Oracle Workspace Manager 19.0.0.0.0 VALID
CONTEXT Oracle Text 19.0.0.0.0 VALID
ORDIM Oracle Multimedia 19.0.0.0.0 VALID
SDO Spatial 19.0.0.0.0 VALID
XOQ Oracle OLAP API 19.0.0.0.0 VALID
OLS Oracle Label Security 19.0.0.0.0 VALID
DV Oracle Database Vault 19.0.0.0.0 VALID
15 rows selected.
Patch History Reference
The table below shows the complete CPU patching history demonstrating consistent quarterly patching from May 2022 through January 2026:
| Patch ID | Action | Date | Description |
|---|---|---|---|
| 33561310 / 33515361 | APPLY | 22-MAY-22 | OJVM + DB RU 19.14.0.0.220118 |
| 34086870 / 34133642 | APPLY | 02-AUG-22 | OJVM + DB RU 19.16.0.0.220719 |
| 34411846 / 34419443 | APPLY | 06-DEC-22 | OJVM + DB RU 19.17.0.0.221018 |
| 34786990 / 34765931 | APPLY | 07-MAR-23 | OJVM + DB RU 19.18.0.0.230117 |
| 35050341 / 35042068 | APPLY | 04-MAY-23 | OJVM + DB RU 19.19.0.0.230418 |
| 35354406 / 35320081 | APPLY | 01-AUG-23 | OJVM + DB RU 19.20.0.0.230718 |
| 35648110 / 35643107 | APPLY | 02-JAN-24 | OJVM + DB RU 19.21.0.0.231017 |
| 36199232 / 36233263 | APPLY | 13-MAY-24 | OJVM + DB RU 19.23.0.0.240416 |
| 36414915 / 36582781 | APPLY | 06-AUG-24 | OJVM + DB RU 19.24.0.0.240716 |
| 36878697 / 36912597 | APPLY | 03-DEC-24 | OJVM + DB RU 19.25.0.0.241015 |
| 37102264 / 37260974 | APPLY | 04-MAR-25 | OJVM + DB RU 19.26.0.0.250121 |
| 37499406 / 37642901 | APPLY | 06-MAY-25 | OJVM + DB RU 19.27.0.0.250415 |
| 37847857 / 37960098 | APPLY | 05-AUG-25 | OJVM + DB RU 19.28.0.0.250715 |
| 38194382 / 38291812 | APPLY | 04-NOV-25 | OJVM + DB RU 19.29.0.0.251021 |
| 38523609 / 38632161 | APPLY | 03-FEB-26 | OJVM + DB RU 19.30.0.0.260120 |
Patch Summary
| Patch ID | Description | Type | Status |
|---|---|---|---|
| 38658587 | Oracle Database 19c Bundle Patch – January 2026 | Bundle | SUCCESS |
| 38632161 | Database Release Update: 19.30.0.0.260120 | Security | SUCCESS |
| 38523609 | OJVM Release Update: 19.30.0.0.260120 | Component | SUCCESS |
| 34672698 | Overlay / Conflict Resolution Patch | Overlay | SUCCESS |
Key Takeaways
- Always capture pre and post-patch snapshots for comparison
- Never skip Datapatch — OPatch alone does not apply SQL-level changes
- Revert
oradismpermissions after patching to avoid security issues - Verify all patch IDs show SUCCESS in
dba_registry_sqlpatchafter Datapatch - Verify all 15 components show VALID in
dba_registryafter patching - Maintain a consistent quarterly patching cadence to keep the database current and secure
Written by Syed Anwar Ahmed — Oracle Apps DBA with 11 years of production experience.
Connect: sdanwarahmed@gmail.com | LinkedIn
Leave a comment