As soon as Oracle released quarterly patch for Jan 2026 , I had to patch one of my Oracle 19c databases from 19.25 to 19.30. Since this is something we DBAs do almost on every quarter, I decided to write down the exact steps I followed. The procedures are the same for all 19c versions.
Note: On production systems, always apply on
test/dev first. Never patch production directly without testing!
Prerequisites
- Oracle
19c database installed on Linux x86-64
- Access
to Oracle Support (MOS
account)
- OS
user with ORACLE_HOME and ORACLE_BASE permissions
- At
least 12 GB free disk space in /home
- WinSCP
or similar tool to transfer files to the server
- Scheduled
maintenance window (database downtime required)
Step 1: Download the Patch and
OPatch Utility
Log in to Oracle Support and download the
following:
- Patch
file: 38597735 → p38597735_190000_MSWIN-x86-64.zip
- OPatch
utility: 6880880 → p6880880_190000_MSWIN -x86-64.zip
Steps to download: Select Patches
& Updates → enter patch number → select platform Linux
x86-64 → download both files and review the README.
Step 2: Check and Update
OPatch
On the server, check your current
OPatch version:
|
cd $ORACLE_HOME/OPatch ./opatch
version |
You need version 12.2.0.1.48
or higher. If it's older, update it:
|
cd %ORACLE_HOME% ren OPatch
OPatch_backup1 robocopy copy
p6880880_190000_MSWIN -x86-64.zip %ORACLE_HOME%
cd %ORACLE_HOME% unzip
p6880880_190000_MSWIN -x86-64.zip |
Step 3: Run Pre-checks
Before applying the patch, check
for conflicts with existing patches:
|
C:\Users\Administrator>cd
C:\software\oracle_patch_19.30\38597735 C:\software\oracle_patch_19.30\38597735>D:\oracle\product\19.3.0\dbhome_1\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 :
D:\oracle\product\19.3.0\dbhome_1 Central
Inventory : C:\Program Files\Oracle\Inventory from : OPatch
version : 12.2.0.1.49 OUI
version : 12.2.0.7.0 Log file
location :
D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\opatch\opatch2026-04-14_19-40-37PM_1.log Invoking
prereq "checkconflictagainstohwithdetail" Prereq
"checkConflictAgainstOHWithDetail" passed. OPatch
succeeded. |
As we see "OPatch
succeeded", we are good to go. If there are conflicts, resolve them before
proceeding.
Step 4: Stop the Database and
Listener
|
sqlplus / as
sysdba SQL> shutdown
immediate SQL> exit lsnrctl stop |
Verify all services are
completely down before moving to the next step.
Step 5: Clean Up Inactive
Patches (Optional but Recommended)
This frees up Oracle Home space
before applying the new patch:
|
cd $ORACLE_HOME/OPatch ./opatch util
listOrderedInactivePatches ./opatch util
deleteInactivePatches |
Step 6: Check Available Disk
Space
Do not proceed if space is
insufficient in oracle home
Step 7: Apply the Patch
|
C:\software\oracle_patch_19.30\38597735>D:\oracle\product\19.3.0\dbhome_1\OPatch\opatch
apply Oracle
Interim Patch Installer version 12.2.0.1.49 Copyright (c)
2026, Oracle Corporation. All rights
reserved. Oracle
Home :
D:\oracle\product\19.3.0\dbhome_1 Central
Inventory : C:\Program Files\Oracle\Inventory from : OPatch
version : 12.2.0.1.49 OUI
version : 12.2.0.7.0 Log file
location :
D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\opatch\opatch2026-04-14_19-41-27PM_1.log Verifying
environment and performing prerequisite checks... -------------------------------------------------------------------------------- Start OOP by
Prereq process. Launch OOP... Oracle
Interim Patch Installer version 12.2.0.1.49 Copyright (c)
2026, Oracle Corporation. All rights
reserved. Oracle
Home :
D:\oracle\product\19.3.0\dbhome_1 Central
Inventory : C:\Program Files\Oracle\Inventory from : OPatch
version : 12.2.0.1.49 OUI
version : 12.2.0.7.0 Log file
location :
D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\opatch\opatch2026-04-14_19-44-33PM_1.log Verifying
environment and performing prerequisite checks... OPatch
continues with these patches:
38597735 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
= 'D:\oracle\product\19.3.0\dbhome_1') Is the local
system ready for patching? [y|n] y User
Responded with: Y Backing up
files... Applying
interim patch '38597735' to OH 'D:\oracle\product\19.3.0\dbhome_1' ApplySession:
Optional component(s) [ oracle.tomcat.crs, 19.0.0.0.0 ] , [ oracle.has.cfs,
19.0.0.0.0 ] , [ oracle.rdbms.tg4msql, 19.0.0.0.0 ] , [ oracle.rdbms.ic,
19.0.0.0.0 ] , [ oracle.rdbms.tg4ifmx, 19.0.0.0.0 ] , [ oracle.network.cman,
19.0.0.0.0 ] , [ oracle.has.deconfig, 19.0.0.0.0 ] , [ oracle.network.gsm,
19.0.0.0.0 ] , [ oracle.assistants.asm, 19.0.0.0.0 ] , [ oracle.wlm.dbwlm,
19.0.0.0.0 ] , [ oracle.rhp.crs, 19.0.0.0.0 ] , [ oracle.has.cvu, 19.0.0.0.0
] , [ oracle.tfa, 19.0.0.0.0 ] , [ oracle.rdbms.tg4sybs, 19.0.0.0.0 ] , [
oracle.usm, 19.0.0.0.0 ] , [ oracle.ons.daemon, 19.0.0.0.0 ] , [
oracle.rdbms.tg4tera, 19.0.0.0.0 ] , [ oracle.options.olap, 19.0.0.0.0 ] , [
oracle.assistants.usm, 19.0.0.0.0 ] , [ oracle.rdbms.tg4db2, 19.0.0.0.0 ] , [
oracle.options.olap.awm, 19.0.0.0.0 ] , [ oracle.has.crs, 19.0.0.0.0 ] not present in the Oracle Home or a higher
version is found. Patching
component oracle.has.common.cvu, 19.0.0.0.0... Patching
component oracle.has.rsf, 19.0.0.0.0... Patching
component oracle.assistants.server, 19.0.0.0.0... Patching
component oracle.ons, 19.0.0.0.0... Patching
component oracle.rdbms.plsql, 19.0.0.0.0... Patching
component oracle.rdbms.util, 19.0.0.0.0... Patching
component oracle.sqlplus.ic, 19.0.0.0.0... Patching
component oracle.sdo.locator.jrf, 19.0.0.0.0... Patching
component oracle.perlint, 5.28.1.0.0... Patching
component oracle.swd.oui.core.min, 12.2.0.7.0... Patching
component oracle.sqlplus, 19.0.0.0.0... Patching
component oracle.dbjava.jdbc, 19.0.0.0.0... Patching
component oracle.network.listener, 19.0.0.0.0... Patching
component oracle.odbc.ic, 19.0.0.0.0... Patching
component oracle.rdbms.rman, 19.0.0.0.0... Patching
component oracle.dbjava.ucp, 19.0.0.0.0... Patching
component oracle.perlint.modules, 5.28.1.0.0... Patching
component oracle.precomp.common.core, 19.0.0.0.0... Patching
component oracle.oracore.rsf, 19.0.0.0.0... Patching
component oracle.ntoledb.odp_net_2, 19.0.0.0.0... Patching
component oracle.has.db, 19.0.0.0.0... Patching
component oracle.ntoramts, 19.0.0.0.0... Patching
component oracle.marvel, 19.0.0.0.0... Patching
component oracle.xdk.parser.java, 19.0.0.0.0... Patching
component oracle.network.client, 19.0.0.0.0... Patching
component oracle.blaslapack, 19.0.0.0.0... Patching
component oracle.tfa.db, 19.0.0.0.0... Patching
component oracle.ctx, 19.0.0.0.0... Patching
component oracle.rdbms.hsodbc, 19.0.0.0.0... Patching
component oracle.ldap.rsf, 19.0.0.0.0... Patching
component oracle.assistants.deconfig, 19.0.0.0.0... Patching
component oracle.sqlj.sqljruntime, 19.0.0.0.0... Patching
component oracle.ldap.owm, 19.0.0.0.0... Patching
component oracle.duma, 19.0.0.0.0... Patching
component oracle.precomp.lang, 19.0.0.0.0... Patching
component oracle.ntoledb, 19.0.0.0.0... Patching
component oracle.rdbms.rsf, 19.0.0.0.0... Patching
component oracle.rdbms.install.common, 19.0.0.0.0... Patching
component oracle.ldap.security.osdt, 19.0.0.0.0... Patching
component oracle.sdo, 19.0.0.0.0... Patching
component oracle.rdbms.rsf.ic, 19.0.0.0.0... Patching
component oracle.wwg.plsql, 19.0.0.0.0... Patching
component oracle.rdbms.lbac, 19.0.0.0.0... Patching
component oracle.oraolap, 19.0.0.0.0... Patching
component oracle.precomp.rsf, 19.0.0.0.0... Patching
component oracle.ntoledbolap, 19.0.0.0.0... Patching
component oracle.assistants.acf, 19.0.0.0.0... Patching
component oracle.rhp.common, 19.0.0.0.0... Patching
component oracle.javavm.server, 19.0.0.0.0... Patching
component oracle.precomp.common, 19.0.0.0.0... Patching
component oracle.network.rsf, 19.0.0.0.0... Patching
component oracle.ovm, 19.0.0.0.0... Patching
component oracle.install.deinstalltool, 19.0.0.0.0... Patching
component oracle.rdbms.oci, 19.0.0.0.0... Patching
component oracle.rsf, 19.0.0.0.0... Patching
component oracle.clrintg.ode_net_2, 19.0.0.0.0... Patching
component oracle.nlsrtl.rsf, 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.ctx.atg, 19.0.0.0.0... Patching
component oracle.javavm.client, 19.0.0.0.0... Patching
component oracle.oraolap.dbscripts, 19.0.0.0.0... Patching
component oracle.rdbms.deconfig, 19.0.0.0.0... Patching
component oracle.dbjava.ic, 19.0.0.0.0... Patching
component oracle.rdbms.dv, 19.0.0.0.0... Patching
component oracle.aspnet_2, 19.0.0.0.0... Patching
component oracle.ldap.client, 19.0.0.0.0... Patching
component oracle.usm.deconfig, 19.0.0.0.0... Patching
component oracle.dbdev, 19.0.0.0.0... Patching
component oracle.ons.ic, 19.0.0.0.0... Patching
component oracle.mgw.common, 19.0.0.0.0... Patching
component oracle.oracler.server, 19.0.0.0.0... Patching
component oracle.has.common, 19.0.0.0.0... Patching
component oracle.xdk.rsf, 19.0.0.0.0... Patching
component oracle.xdk, 19.0.0.0.0... Patching
component oracle.rdbms.dbscripts, 19.0.0.0.0... Patching
component oracle.rdbms.olap, 19.0.0.0.0... Patching
component oracle.rdbms, 19.0.0.0.0... Patching
component oracle.sdo.locator, 19.0.0.0.0... Patching
component oracle.rdbms.scheduler, 19.0.0.0.0... Patching
component oracle.xdk.xquery, 19.0.0.0.0... Patching
component oracle.nlsrtl.rsf.lbuilder, 19.0.0.0.0... Patching
component oracle.jdk, 1.8.0.201.0... Patch
38597735 successfully applied. Sub-set patch
[36878821] has become inactive due to the application of a super-set patch
[38597735]. Please refer
to Doc ID 2161861.1 for any possible further required actions. Log file
location:
D:\oracle\product\19.3.0\dbhome_1\cfgtoollogs\opatch\opatch2026-04-14_19-44-33PM_1.log OPatch
succeeded. |
Watch the output carefully. You
should see success messages for each component. The full process typically
takes 20–30 minutes.
Sample successful output as
above.
Step 8: Start the Database and
Run DataPatch
Start the database first:
|
sqlplus / as
sysdba SQL>
startup |
Then run DataPatch to register
the patch inside the database dictionary:
|
cd %ORACLE_HOME%/OPatch datapatch -verbose |
This step is mandatory — without
it the patch is applied at the binary level but not registered in the database.
Step 9: Verify the Patch
No comments:
Post a Comment