Oracle 19c Standalone Database Patching high level steps: Upgrade from 19.3 to 19.20.
Posted by Mir Sayeed Hassan on March 22nd, 2026
Oracle 19c Standalone Database Patching high level steps: Upgrade from 19.3 to 19.20.
Steps to Perform Before Patch Implementation
Here demonstrates the complete patching process across three phases:
-
Pre-Patch
-
Patching
-
Post-Patch
Let us start with Pre-patch
Check the status of database and its version.
SQL> select name, open_mode, database_role, version from V$database, v$instance; NAME | OPEN_MODE | DATABASE_ROLE | VERSION - - - - - - - - - — - — - - - — - - - - - - - - - MIRDB OPEN READ WRITE 19.3.0
Or you can also issue the database version.
SQL> select banner_full from v$version;
BANNER_FULL
----------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Verify the current Patch level
SQL> select TO_CHAR(action_time, 'YYYY-MM-DD') AS action_time, ACTION, STATUS, DESCRIPTION, PATCH_ID from sys.dba_registry_sqlpatch order by action_time; ACTION_TIME ACTION STATUS DESCRIPTION PATCH_ID ---------- --------------- ------------------------- ————————————————————————————— 2021-12-23 APPLY SUCCESS Database Release Update : 19.3.0.0.190416 (29517242) 29517242
Verify the existing patches applied by using the OS Level
[oracle@mirdb1 OPatch]$ ./opatch lspatches 29517242;Database Release Update : 19.3.0.0.190416 (29517242)
Verify the opatch utility version
[oracle@mirdb1 OPatch]$ ./opatch version OPatch Version: 12.2.0.1.17
Download the require Patch and Database Patch from the oracle support website.
Note: login to www.support.oracle.com, goto patches and updates, then goto search by patch number and OS Version and here you have to give the patch number to download.
OPatch Number : 6880880 is opatch version that is 12.2.0.1.39
DB Patch Number: 35320081 is patch version that is 19.20.0.0
Ensure Oracle Home and Inventory are backed up prior to apply the patches.
[oracle@mirdb1 dbhome_1]$ tar -pcvf /u01/dbbackup/dbbackup.tar dbhome_1
[oracle@mirdb1 dbhome_1]$ cp -R inventory
/u01/dbbackup
Perform a full database backup using RMAN.
RMAN>backup as compressed backupset database include current controlfile plus archivelog;
Verify the Invalid Objects from Database.
SQL> select * from dba_objects where status = ‘INVALID’; ---------- --------------- -------------------------—————— 5
Place the downloaded patches into the folder at OS Level and unzip the Database Patch (RU).
[root@mirdb1 ~]# mkdir -p /u01/patches/
[root@mirdb1 ~]# cd /u01/patches/
[root@mirdb1 patches]# ls -l total 3042520 -rwxr-x---. 1 oracle oinstall 2990370786 Mar 20 14:47 p35320081 _190000_Linux-x86-64.zip -rwxr-x---. 1 oracle oinstall 125167420 Mar 20 14:47 p6880880_190000_Linux-x86-64.zip
Rename old OPatch directory to backup
mv OPATCH OPATCH_MAR_20_2026
Unzip OPatch to Oracle_home
To apply the OPatch, Just unzip the OPatch in Oracle_Home directory.
[oracle@mirdb1 patches]$ unzip p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.0.0.0/dbhome_1/
Check the OPatch version applied.
[oracle@oraclelab1 OPatch]$ ./opatch version OPatch Version: 12.2.0.1.39
Now unzip the RU Patch
[root@mirdb1 ~]# mkdir -p /u01/patches/
[root@mirdb1 ~]# cd /u01/patches/
[root@mirdb1 patches]# ls -l
[root@mirdb1 patches]# unzip p6880880_190000_Linux-x86-64.zip
Now run the prerequisite conflict check from patch folder which you have done the unzip
[35320081]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./ Oracle Interim Patch Installer version 12.2.0.1.39 Copyright (c) 2023, 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.39 OUI version : 12.2.0.7.0 3 Log file location : /u01/app/oracle/product/19.0.0.0/dbhome_1/cfgtoollogs/opatch/opatch2023-09-17_15-38-56PM_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded.
Start the RU Patching.
You have to shutdown the database and its listener.
SQL> Shutdown immediate;
[oracle@mirdb1 ~]$ lsnrctl stop
Note: Incase if you are using the other than the default listener name, you have to specify the given listener name correctly.
Set the OPatch Path
[oracle@mirdb1 ~]$ export PATH=$ORACLE_HOME/OPatch:$PATH
Verify
which opatch
[oracle@mirdb1 ~]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch
Now start applying the Patch with apply.
[oracle@mirdb1 ~]$ cd /u01/patches/
[oracle@mirdb1 35320081]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch apply Oracle Interim Patch Installer version 12.2.0.1.39 Copyright (c) 2023, 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.39 OUI version : 12.2.0.7.0 Log file location : /u01/app/oracle/product/19.0.0.0/dbhome_1/cfgtoollogs/opatch/opatch2023-09-17_17-53-13PM_1.log Verifying environment and performing prerequisite checks... OPatch continues with these patches: 35320081 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... Patching component oracle.mgw.common, 19.0.0.0.0... www.linkedin.com/in/mohammed-ishaq-5aab95155 Patching component oracle.odbc, 19.0.0.0.0... Patching component oracle.precomp.lang, 19.0.0.0.0... Patching component oracle.precomp.common, 19.0.0.0.0... Patching component oracle.jdk, 1.8.0.201.0... Patch 35320081 successfully applied. Sub-set patch [29517242] has become inactive due to the application of a super-set patch [35320081]. 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/opatch2023-09-17_17-53-13PM_1.log OPatch succeeded. POST PATCH
Post Patch
Verify the all the patches which is applied.
[oracle@mirdb1 35320081]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch lspatches 35320081;Database Release Update : 19.20.0.0.230718 (35320081) OPatch succeeded.
Now Start the database & start the listener.
SQL> Startup;
[oracle@mirdb1 ~]$ lsnrctl start
Check the database version.
SQL> select banner_full from v$version; BANNER_FULL -------------------------------------------------------------------------------- Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.20.0.0.0
Start running the Database Datapatch Verbose.
Note: This is very important as the database might contain pluggable database in it., therefore it will applied to all the pluggable database which will be exist in the container database.
[oracle@mirdb1 OPatch]$ ./datapatch -verbose SQL Patching tool version 19.20.0.0.0 Production on Sun Sep 17 18:54:16 2023 Copyright (c) 2012, 2023, Oracle. All rights reserved. Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_28669_2023_09_17_18_54_16/sqlpatch_invocation.log Connecting to database...OK Gathering database info...done Bootstrapping registry and package to current versions...done ——————————————— Determining current state...done Installing patches... Patch installation complete. Total patches installed: 1 Validating logfiles...done Patch 35320081 apply: SUCCESS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/35320081/25314491/35320081_apply_DEVDB_2023Sep17_18_58_20.log (no errors) SQL Patching tool complete on Sun Sep 17 19:33:55 2023
Verify the patches applied in database by running the below query.
SQL> Select TO_CHAR(action_time, 'YYYY-MM-DD') AS action_time, action, status, description, patch_id from sys.dba_registry_sqlpatch order by action_time; ACTION_TIM ACTION STATUS DESCRIPTION PATCH_ID ---------- --------------- ------------------------- ————————————————————————————————— 2021-12-23 APPLY SUCCESS Database Release Update : 19.3.0.0.190416 (29517242) 29517242 2023-09-17 APPLY SUCCESS Database Release Update : 19.20.0.0.230718 (35320081) 35320081
Verify the INVALID Objects from Database.
SQL> select count(*) from dba_objects where status ='INVALID'; COUNT(*) ---------- 0
Note: In-case if you see any of the Invalid objects exist after applying the patch., Run the Invalid compile script to validate.
SQL>@ORACLE_HOME/rdbms/admin/utilrp.sql;






