Blog
How to Apply Patch On Oracle 19c Database Release Update 19.15.0.0.220419 using Oracle opatch utility? ——learnomate
- May 23, 2022
- Posted by: info@learnomate.org
- Category: Oracle DBA

How to Apply Patch On Oracle 19c Database Release Update 19.15.0.0.220419 using Oracle opatch utility?
0 |
Get the patch # that you want to download. |
|
1 |
Download Patch from Oracle Support. https://support.oracle.com/ for the platform your database is hosted on. In this case, my database is hosted on 64-Bit Linux. |
Zip File Name: p33859214_19150000_Linux-x86-64.zip |
9 |
Ensure ORACLE_HOME environment is set |
echo $ORACLE_HOME $echo $ORACLE_HOME /u01/app/oracle/product/19.3.0/dbh_12 $ |
10 |
Check the current Patcheset. |
opatch lsinventory $opatch lsinv |grep applied Patch 29585399 : applied on Thu Apr 18 02:21:33 CDT 2019 Patch 29517242 : applied on Thu Apr 18 02:21:17 CDT 2019 $opatch lsinv |grep desc ARU platform description:: Linux x86-64 Patch description: “OCW RELEASE UPDATE 19.3.0.0.0 (29585399)” Patch description: “Database Release Update : 19.3.0.0.190416 (29517242)” $opatch lspatches -oh /u01/app/oracle/product/19.3.0/dbh_12 29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399) 29517242;Database Release Update : 19.3.0.0.190416 (29517242) OPatch succeeded. $ |
11 |
Unzip the patch |
cd $cd /u99/software/Patches/ unzip p33859214_19150000_Linux-x86-64.zip |
12 |
Verify the Patch Directory is created. In this case, a directory called 33859214 is created. |
|
13 |
Determine whether any currently installed interim patches conflict with this patch From readme.txt % $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/33803476/33806152 % $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/33803476/33815596 |
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u99/software/Patches/33859214/33803476/33806152 $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u99/software/Patches/33859214/33803476/33815596 |
14 |
Run OPatch System Space Checkfrom readme.txt For Oracle home, as home user: Create file /tmp/patch_list_dbhome.txt with the following content: <UNZIPPED_PATCH_LOCATION>/33803476/33806152 <UNZIPPED_PATCH_LOCATION>/33803476/33815596 Run OPatch command to check if enough free space is available in the Oracle home: The command output reports pass and fail messages as per the system space availability:
|
vi /tmp/patch_list_dbhome.txt /u99/software/Patches/33859214/33803476/33806152 /u99/software/Patches/33859214/33803476/33815596 :wq! cat /tmp/patch_list_dbhome.txt $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt |
15 |
Check Patches status before apply using below query |
SET LINESIZE 500 SET PAGESIZE 1000 SET SERVEROUT ON SET LONG 2000000 COLUMN action_time FORMAT A12 COLUMN action FORMAT A10 COLUMN comments FORMAT A30 COLUMN description FORMAT A60 COLUMN namespace FORMAT A20 COLUMN status FORMAT A10 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; col comp_id for a10 col version for a11 col status for a10 col comp_name for a37 select comp_id,comp_name,version,status from dba_registry; |
16 |
Identifying Invalid Objects before patching |
COLUMN object_name FORMAT A30 SELECT owner, object_type, object_name, status FROM dba_objects WHERE status = ‘INVALID’ ORDER BY owner, object_type, object_name; |
17 |
Database Downtime Begins here |
|
18 |
Find all listeners running from the ORACLE_HOME you are patching |
Ensure that all listeners running from this database home should be down. To find what listeners are associated with this ORACLE_HOME, run the following:
|
19 |
Shutdown Listener that is associated with this ORACLE_HOME you are patching. |
|
20 |
Find all DATABASES running from the ORACLE_HOME you are patching: |
|
21 |
Stop all instances running from the ORACLE_HOME you are patching: |
|
22 |
Verify listener and instances associated with ORACLE_HOME you are patching are completely down. |
|
23 |
Take Backup of ORACLE_HOME and Database (Rollback plan) |
cd $ORACLE_HOME tar -cvf oracle_home_17 May_2022.tar $ORACLE_HOME Connect with rman take full backup |
24 |
Change directory to Patch’s Staging Directory |
/u01/app/oracle/product/19.3.0/dbh_12/PATCHES/33859214/33803476/33806152 |
25 |
At this point, patch can be installed. |
$pwd /u01/app/oracle/product/19.3.0/dbh_12/PATCHES/33859214/33803476/33815596 $opatch apply |
26 |
Verify patches are applied |
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production Version 19.15.0.0.0 $opatch lsinv |grep applied Patch 33815596 : applied on Wed May 18 00:20:15 CDT 2022 Patch 33806152 : applied on Wed May 18 00:01:01 CDT 2022 $opatch lsinv |grep desc ARU platform description:: Linux x86-64 Patch description: “OCW RELEASE UPDATE 19.15.0.0.0 (33815596)” Patch description: “Database Release Update : 19.15.0.0.220419 (33806152)” $opatch lspatches -oh /u01/app/oracle/product/19.3.0/dbh_12 33815596;OCW RELEASE UPDATE 19.15.0.0.0 (33815596) 33806152;Database Release Update : 19.15.0.0.220419 (33806152) OPatch succeeded. |
27 |
Once the opatch is completed its patching:
|
|
28 |
Verify listener and instances are started. |
|
29 |
Execute post patch steps and run datapatch command |
$cd $ORACLE_HOME/OPatch $./datapatch -verbose |
31 |
Check opatch lsinventory and list of patches applied in ORACLE_HOME |
$opatch lsinv |grep applied Patch 33815596 : applied on Wed May 18 00:20:15 CDT 2022 Patch 33806152 : applied on Wed May 18 00:01:01 CDT 2022 $opatch lsinv |grep desc ARU platform description:: Linux x86-64 Patch description: “OCW RELEASE UPDATE 19.15.0.0.0 (33815596)” Patch description: “Database Release Update : 19.15.0.0.220419 (33806152)” $opatch lspatches -oh /u01/app/oracle/product/19.3.0/dbh_12 33815596;OCW RELEASE UPDATE 19.15.0.0.0 (33815596) 33806152;Database Release Update : 19.15.0.0.220419 (33806152) |
32 |
Recompile invalid Objects |
select count(*) from all_objects where status = ‘INVALID’ group by owner; SQL> @?/rdbms/admin/utlrp.sql SQL> select count(*) from all_objects where status = ‘INVALID’ group by owner; |
2. |
WinSCP to Server:$ORACLE_HOME/Patches_Staging_Area |
|
3. |
Extract Patch to get the ReadMe.txt |
|
30. |
After applying RU patch,Check the DBA_REGISTRY_SQLPATCH |
SET LINESIZE 500 SET PAGESIZE 1000 SET SERVEROUT ON SET LONG 2000000 COLUMN action_time FORMAT A12 COLUMN action FORMAT A10 COLUMN patch_type FORMAT A10 COLUMN description FORMAT A32 COLUMN status FORMAT A10 COLUMN version FORMAT A10 spool check_patches_19c.txt select CON_ID, TO_CHAR(action_time, ‘YYYY-MM-DD’) AS action_time, PATCH_ID, PATCH_TYPE, ACTION, DESCRIPTION, SOURCE_VERSION, TARGET_VERSION from CDB_REGISTRY_SQLPATCH order by CON_ID, action_time, patch_id; spool off |
4. |
From the ReadMe.txt file, ensure if the patch is: |
|
5. |
Set ORACLE_SID |
. oreanv → DBPA |
6. |
Export PATH to OPatch location |
export PATH=$ORACLE_HOME/OPatch:$ORACLE_HOME/bin:$PATH |
7. |
From the Read.me file, opatch version should be the latest version. To find the current opatch version, check the Patch 6880880. From Readme.txt |
opatch version |
8. |
Upgrade Opatch Tool from 12.2.0.1.17 to 12.2.0.1.30 |
$pwd /u99/software/Patches $cp p6880880_210000_Linux-x86-64.zip /u01/app/oracle/product/19.3.0/dbh_12 cd /u01/app/oracle/product/19.3.0/dbh_12 mv OPatch/ OPatch_BKP $cd /u01/app/oracle/product/19.3.0/dbh_12 $mv OPatch/ OPatch_BKP $ls -ltrh p6880880_210000_Linux-x86-64.zip -rwxr-xr-x. 1 oracle oinstall 119M May 17 21:53 p6880880_210000_Linux-x86-64.zip $pwd /u01/app/oracle/product/19.3.0/dbh_12 $unzip p6880880_210000_Linux-x86-64.zip opatch version |
No |
Description |
Screenshot / Command / Others |
Hope it Helps.
How to Apply Patch On Oracle 19c Database Release Update 19.15.0.0.220419 using Oracle opatch utility?
0 |
Get the patch # that you want to download. |
|
1 |
Download Patch from Oracle Support. https://support.oracle.com/ for the platform your database is hosted on. In this case, my database is hosted on 64-Bit Linux. |
Zip File Name: p33859214_19150000_Linux-x86-64.zip |
9 |
Ensure ORACLE_HOME environment is set |
echo $ORACLE_HOME $echo $ORACLE_HOME /u01/app/oracle/product/19.3.0/dbh_12 $ |
10 |
Check the current Patcheset. |
opatch lsinventory $opatch lsinv |grep applied Patch 29585399 : applied on Thu Apr 18 02:21:33 CDT 2019 Patch 29517242 : applied on Thu Apr 18 02:21:17 CDT 2019 $opatch lsinv |grep desc ARU platform description:: Linux x86-64 Patch description: “OCW RELEASE UPDATE 19.3.0.0.0 (29585399)” Patch description: “Database Release Update : 19.3.0.0.190416 (29517242)” $opatch lspatches -oh /u01/app/oracle/product/19.3.0/dbh_12 29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399) 29517242;Database Release Update : 19.3.0.0.190416 (29517242) OPatch succeeded. $ |
11 |
Unzip the patch |
cd $cd /u99/software/Patches/ unzip p33859214_19150000_Linux-x86-64.zip |
12 |
Verify the Patch Directory is created. In this case, a directory called 33859214 is created. |
|
13 |
Determine whether any currently installed interim patches conflict with this patch From readme.txt % $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/33803476/33806152 % $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/33803476/33815596 |
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u99/software/Patches/33859214/33803476/33806152 $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u99/software/Patches/33859214/33803476/33815596 |
14 |
Run OPatch System Space Checkfrom readme.txt For Oracle home, as home user: Create file /tmp/patch_list_dbhome.txt with the following content: <UNZIPPED_PATCH_LOCATION>/33803476/33806152 <UNZIPPED_PATCH_LOCATION>/33803476/33815596 Run OPatch command to check if enough free space is available in the Oracle home: The command output reports pass and fail messages as per the system space availability:
|
vi /tmp/patch_list_dbhome.txt /u99/software/Patches/33859214/33803476/33806152 /u99/software/Patches/33859214/33803476/33815596 :wq! cat /tmp/patch_list_dbhome.txt $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt |
15 |
Check Patches status before apply using below query |
SET LINESIZE 500 SET PAGESIZE 1000 SET SERVEROUT ON SET LONG 2000000 COLUMN action_time FORMAT A12 COLUMN action FORMAT A10 COLUMN comments FORMAT A30 COLUMN description FORMAT A60 COLUMN namespace FORMAT A20 COLUMN status FORMAT A10 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; col comp_id for a10 col version for a11 col status for a10 col comp_name for a37 select comp_id,comp_name,version,status from dba_registry; |
16 |
Identifying Invalid Objects before patching |
COLUMN object_name FORMAT A30 SELECT owner, object_type, object_name, status FROM dba_objects WHERE status = ‘INVALID’ ORDER BY owner, object_type, object_name; |
17 |
Database Downtime Begins here |
|
18 |
Find all listeners running from the ORACLE_HOME you are patching |
Ensure that all listeners running from this database home should be down. To find what listeners are associated with this ORACLE_HOME, run the following:
|
19 |
Shutdown Listener that is associated with this ORACLE_HOME you are patching. |
|
20 |
Find all DATABASES running from the ORACLE_HOME you are patching: |
|
21 |
Stop all instances running from the ORACLE_HOME you are patching: |
|
22 |
Verify listener and instances associated with ORACLE_HOME you are patching are completely down. |
|
23 |
Take Backup of ORACLE_HOME and Database (Rollback plan) |
cd $ORACLE_HOME tar -cvf oracle_home_17 May_2022.tar $ORACLE_HOME Connect with rman take full backup |
24 |
Change directory to Patch’s Staging Directory |
/u01/app/oracle/product/19.3.0/dbh_12/PATCHES/33859214/33803476/33806152 |
25 |
At this point, patch can be installed. |
$pwd /u01/app/oracle/product/19.3.0/dbh_12/PATCHES/33859214/33803476/33815596 $opatch apply |
26 |
Verify patches are applied |
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production Version 19.15.0.0.0 $opatch lsinv |grep applied Patch 33815596 : applied on Wed May 18 00:20:15 CDT 2022 Patch 33806152 : applied on Wed May 18 00:01:01 CDT 2022 $opatch lsinv |grep desc ARU platform description:: Linux x86-64 Patch description: “OCW RELEASE UPDATE 19.15.0.0.0 (33815596)” Patch description: “Database Release Update : 19.15.0.0.220419 (33806152)” $opatch lspatches -oh /u01/app/oracle/product/19.3.0/dbh_12 33815596;OCW RELEASE UPDATE 19.15.0.0.0 (33815596) 33806152;Database Release Update : 19.15.0.0.220419 (33806152) OPatch succeeded. |
27 |
Once the opatch is completed its patching:
|
|
28 |
Verify listener and instances are started. |
|
29 |
Execute post patch steps and run datapatch command |
$cd $ORACLE_HOME/OPatch $./datapatch -verbose |
31 |
Check opatch lsinventory and list of patches applied in ORACLE_HOME |
$opatch lsinv |grep applied Patch 33815596 : applied on Wed May 18 00:20:15 CDT 2022 Patch 33806152 : applied on Wed May 18 00:01:01 CDT 2022 $opatch lsinv |grep desc ARU platform description:: Linux x86-64 Patch description: “OCW RELEASE UPDATE 19.15.0.0.0 (33815596)” Patch description: “Database Release Update : 19.15.0.0.220419 (33806152)” $opatch lspatches -oh /u01/app/oracle/product/19.3.0/dbh_12 33815596;OCW RELEASE UPDATE 19.15.0.0.0 (33815596) 33806152;Database Release Update : 19.15.0.0.220419 (33806152) |
32 |
Recompile invalid Objects |
select count(*) from all_objects where status = ‘INVALID’ group by owner; SQL> @?/rdbms/admin/utlrp.sql SQL> select count(*) from all_objects where status = ‘INVALID’ group by owner; |
2. |
WinSCP to Server:$ORACLE_HOME/Patches_Staging_Area |
|
3. |
Extract Patch to get the ReadMe.txt |
|
30. |
After applying RU patch,Check the DBA_REGISTRY_SQLPATCH |
SET LINESIZE 500 SET PAGESIZE 1000 SET SERVEROUT ON SET LONG 2000000 COLUMN action_time FORMAT A12 COLUMN action FORMAT A10 COLUMN patch_type FORMAT A10 COLUMN description FORMAT A32 COLUMN status FORMAT A10 COLUMN version FORMAT A10 spool check_patches_19c.txt select CON_ID, TO_CHAR(action_time, ‘YYYY-MM-DD’) AS action_time, PATCH_ID, PATCH_TYPE, ACTION, DESCRIPTION, SOURCE_VERSION, TARGET_VERSION from CDB_REGISTRY_SQLPATCH order by CON_ID, action_time, patch_id; spool off |
4. |
From the ReadMe.txt file, ensure if the patch is: |
|
5. |
Set ORACLE_SID |
. oreanv → DBPA |
6. |
Export PATH to OPatch location |
export PATH=$ORACLE_HOME/OPatch:$ORACLE_HOME/bin:$PATH |
7. |
From the Read.me file, opatch version should be the latest version. To find the current opatch version, check the Patch 6880880. From Readme.txt |
opatch version |
8. |
Upgrade Opatch Tool from 12.2.0.1.17 to 12.2.0.1.30 |
$pwd /u99/software/Patches $cp p6880880_210000_Linux-x86-64.zip /u01/app/oracle/product/19.3.0/dbh_12 cd /u01/app/oracle/product/19.3.0/dbh_12 mv OPatch/ OPatch_BKP $cd /u01/app/oracle/product/19.3.0/dbh_12 $mv OPatch/ OPatch_BKP $ls -ltrh p6880880_210000_Linux-x86-64.zip -rwxr-xr-x. 1 oracle oinstall 119M May 17 21:53 p6880880_210000_Linux-x86-64.zip $pwd /u01/app/oracle/product/19.3.0/dbh_12 $unzip p6880880_210000_Linux-x86-64.zip opatch version |
No |
Description |
Screenshot / Command / Others |
Hope it Helps.