- ANKUSH THAVALI
- 23 May, 2022
- 0 Comments
- 6 Mins Read
How to Apply Patch On Oracle 19c Database Release Update 19.15.0.0.220419 using Oracle opatch utility? ——learnomate
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.