Step-by-Step Guide: Applying Oracle 19c CPU Patch – January 2026 (Patch 38658587)

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 IDActionDateDescription
33561310 / 33515361APPLY22-MAY-22OJVM + DB RU 19.14.0.0.220118
34086870 / 34133642APPLY02-AUG-22OJVM + DB RU 19.16.0.0.220719
34411846 / 34419443APPLY06-DEC-22OJVM + DB RU 19.17.0.0.221018
34786990 / 34765931APPLY07-MAR-23OJVM + DB RU 19.18.0.0.230117
35050341 / 35042068APPLY04-MAY-23OJVM + DB RU 19.19.0.0.230418
35354406 / 35320081APPLY01-AUG-23OJVM + DB RU 19.20.0.0.230718
35648110 / 35643107APPLY02-JAN-24OJVM + DB RU 19.21.0.0.231017
36199232 / 36233263APPLY13-MAY-24OJVM + DB RU 19.23.0.0.240416
36414915 / 36582781APPLY06-AUG-24OJVM + DB RU 19.24.0.0.240716
36878697 / 36912597APPLY03-DEC-24OJVM + DB RU 19.25.0.0.241015
37102264 / 37260974APPLY04-MAR-25OJVM + DB RU 19.26.0.0.250121
37499406 / 37642901APPLY06-MAY-25OJVM + DB RU 19.27.0.0.250415
37847857 / 37960098APPLY05-AUG-25OJVM + DB RU 19.28.0.0.250715
38194382 / 38291812APPLY04-NOV-25OJVM + DB RU 19.29.0.0.251021
38523609 / 38632161APPLY03-FEB-26OJVM + DB RU 19.30.0.0.260120

Patch Summary

Patch IDDescriptionTypeStatus
38658587Oracle Database 19c Bundle Patch – January 2026BundleSUCCESS
38632161Database Release Update: 19.30.0.0.260120SecuritySUCCESS
38523609OJVM Release Update: 19.30.0.0.260120ComponentSUCCESS
34672698Overlay / Conflict Resolution PatchOverlaySUCCESS

Key Takeaways

  • Always capture pre and post-patch snapshots for comparison
  • Never skip Datapatch — OPatch alone does not apply SQL-level changes
  • Revert oradism permissions after patching to avoid security issues
  • Verify all patch IDs show SUCCESS in dba_registry_sqlpatch after Datapatch
  • Verify all 15 components show VALID in dba_registry after 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


Discover more from Syed Anwar Ahmed – Oracle DBA Blog

Subscribe to get the latest posts sent to your email.

Comments

Leave a comment

Discover more from Syed Anwar Ahmed – Oracle DBA Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading