OJVM-GI-DB Patch Set Updates (PSU)
TOC
Overview
The following covers applying a OJVM-GI-DB PSU combo patch. Combo patches contain the OJVM PSU in the same zip file as GI PSU and DB PSU for ease of downloading. The OJVM unzips to a separate subdirectory with its own install steps required.
Always read the patch notes. These are just a cheat sheet for an environment where:
- The GI home is not shared.
- The database home is not shared.
- ACFS is not used.
Patch 28317214 is used in these examples (AKA July Patch 2018).
Combo Patch Fun Facts!
GI PSU
- Run GI\DB PSU first then OJVM PSU.
- opatchauto brings down the services, applys the patch and restarts the services on the node.
- opatchauto only patches the individual node.
So you have to run it on all nodes. - opatchauto will patch both the GRID_HOME and ORACLE_HOME on the node.
So you don't have to explicitly execute it on the GI home then the DB home. - For GI\DB PSU's, opatchauto updates the SQL in the database.
So you do not need to run datapatch -verbose afterward. - The GI\DB PSU opatchauto must be run from the GI Home as the root user.
- The OJVM PSU is only applied to the database home via oracle user.
- OJVM PSU must be applied as a Nonrolling Patch.
- The above is derived from various MOS cases including: 3-16179254071, 3-16515328131, 3-17593686831, 3-18616506451.
Prerequisites
- Download and install the latest OPatch.
- Validate Oracle home for both the oracle and grid users.
$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME - Download the latest PSU:
- Go to MOS DB Proactive Patching Doc ID: 756671.1
- From 756671.1, search on: 4.3 Database 12.1.0.2
- Select latest PSU entry: Combo Of OJVM Component 12.1.0.2.nnn DB PSU + GI PSU12.1.0.2.nnn
- Select Patch that matches your OS: Linux x86-64
- Select Download then corresponding patch: pnnn_121020_Linux-x86-64.zip
- As grid user copy patch .zip file to your patches dir on each node.
Example: cp /media/sf_sw/Oracle/patches/Combo_OJVM-GI-DB_PSU/p28317214_121020_Linux-x86-64.zip /u01/orasw/patches/ - Run My Oracle Support's Conflict Checker tool to detect and resolve any conflicts.
If you have never used this go here. - Unzip the file.
One of the biggest reasons patches fail is lack of disk space in your home directories (oracle and grid). Ensure you have 25gb or more free.
List Sub Patches
- You want to identify which is the GI PSU and which is the OJVM PSU.
- There is a README.html in each top-level sub dir that identifies type (GI or OJVM).
Change to the top most patch dir and review README.html in each top-level sub dir.
cd /u01/orasw/patches/28317214 ls -l 27967747 PSU 27923320 OJVM ...
GI PSU
Perform on each sub patch on each node as indicated by patch notes Configuration and PSU Mapping section.
su -
export PATH=$PATH:/u01/app/12.1.0.2/grid/OPatch
cd /u01/app/12.1.0.2/grid/OPatch
./opatchauto apply /u01/orasw/patches/28317214/27967747
Log File Paths:
- PSU: /u01/app/12.1.0.2/grid/cfgtoollogs/opatchauto<DateTime>.log
- PSU: /u01/app/12.1.0.2/grid/cfgtoollogs/opatchauto/core/opatch/opatch<DateTime>.log
OJVM PSU
After the GI PSU has been completed for all nodes, open new console window to apply the OJVM PSU.
su -
export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export PATH=$PATH:$ORACLE_HOME/OPatch
cd $ORACLE_HOME/OPatch
./opatchauto apply /u01/orasw/patches/28317214/27923320 -oh $ORACLE_HOME -nonrolling
- OJVM Log Path: $ORACLE_HOME/cfgtoollogs/opatchautodb/opatch<DateTime>.log
- For Oracle-Restart run the the OJVM without the -nonrolling option.
Load Modified SQL Files Into the Database
Perform this on just node 1.
SQL> shut immediate; SQL> startup upgrade; datapatch -verbose SQL> shut immediate; SQL> startup;
Post Patch Actions
- If any patches where identified during Patch Conflict Detection and Resolution step apply them now.
- Ensure Oracle Inventory for grid and oracle homes shows applied patches.
Show All Patches:$ORACLE_HOME/OPatch/opatch lsinventory|more
Show One:$ORACLE_HOME/OPatch/opatch lsinventory|grep <PatchNumber>
- Perform Status Checks.
APPENDIX
Locking and Unlocking Example
Lock
As root:
export GRID_HOME=/u01/app/12.1.0.2/grid export PATH=$GRID_HOME/bin:$PATH cd /u01/app/12.2.0.1/grid/crs/install ./rootcrs.sh -unlock <<Apply Patches>>
Unlock
As root console used to lock:
cd /u01/app/12.1.0.2/grid/crs/install ./rootcrs.sh -postpatch
Nonrolling Patch Example
Oracle JavaVM Component <vers> Database PSU used for this example.
su - export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export PATH=$PATH:$ORACLE_HOME/OPatch cd $ORACLE_HOME/OPatch ./opatchauto apply /u01/orasw/patches/27726478/27475603 -oh $ORACLE_HOME -nonrolling
Disable Node from Restarting
su - export GRID_HOME=/u01/app/12.1.0.2/grid export PATH=$GRID_HOME/bin:$PATH cd $GRID_HOME/bin crsctl stop crs crsctl disable crs
Rollback Example
As root: from OPatch dir:
- ./opatchauto rollback /u01/orasw/patches/27726478/27468957 -oh /u01/app/grid/product/12.1.0.2/grid
- $ORACLE_HOME/OPatch/opatch lsinventory
Successful Patch Output Example
OPatchAuto successful. --------------------------------Summary-------------------------------- Patching is completed successfully. Please find the summary as follows: Host:lnx01 RAC Home:/u01/app/oracle/product/12.1.0.2/dbhome_1 Version:12.1.0.2.0 Summary: ==Following patches were SKIPPED: Patch: /u01/orasw/patches/27726478/27468957/26983807 Reason: This patch is not applicable to this specified target type - "rac_database" Patch: /u01/orasw/patches/27726478/27468957/27338013 Reason: This patch is not applicable to this specified target type - "rac_database" ==Following patches were SUCCESSFULLY applied: Patch: /u01/orasw/patches/27726478/27468957/27338020 Log: /u01/app/oracle/product/12.1.0.2/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2018-06-20_08-48-33AM_1.log Patch: /u01/orasw/patches/27726478/27468957/27338041 Log: /u01/app/oracle/product/12.1.0.2/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2018-06-20_08-48-33AM_1.log Host:lnx01 CRS Home:/u01/app/12.1.0.2/grid Version:12.1.0.2.0 Summary: ==Following patches were SUCCESSFULLY applied: Patch: /u01/orasw/patches/27726478/27468957/26983807 Log: /u01/app/12.1.0.2/grid/cfgtoollogs/opatchauto/core/opatch/opatch2018-06-20_08-51-00AM_1.log Patch: /u01/orasw/patches/27726478/27468957/27338013 Log: /u01/app/12.1.0.2/grid/cfgtoollogs/opatchauto/core/opatch/opatch2018-06-20_08-51-00AM_1.log Patch: /u01/orasw/patches/27726478/27468957/27338020 Log: /u01/app/12.1.0.2/grid/cfgtoollogs/opatchauto/core/opatch/opatch2018-06-20_08-51-00AM_1.log Patch: /u01/orasw/patches/27726478/27468957/27338041 Log: /u01/app/12.1.0.2/grid/cfgtoollogs/opatchauto/core/opatch/opatch2018-06-20_08-51-00AM_1.log OPatchauto session completed at Wed Jun 20 09:07:33 2018 Time taken to complete the session 24 minutes, 4 seconds
Oracle-Restart GI Session
-- Apply Standard PSU (Oracle-Restart) su - export PATH=$PATH:/u01/app/grid/product/12.1.0.2/grid/OPatch cd /u01/app/grid/product/12.1.0.2/grid/OPatch ./opatchauto apply /u01/orasw/patches/27726478/27468957
Is is bascially the same as for RAC just using the Oracle Restart ORACLE_HOME of the grid user correspondingly.
Rollback Example Session
-- Get Sub Patches cd /u01/orasw/patches/28317214 ls -l 27923320 OJVM 27967747 PSU -- Rollback: OJVM export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export PATH=$PATH:$ORACLE_HOME/OPatch cd $ORACLE_HOME/OPatch ./opatchauto rollback /u01/orasw/patches/28317214/27923320 -oh $ORACLE_HOME -nonrolling -- Rollback: PSU export ORACLE_HOME=/u01/app/12.1.0.2/grid export PATH=$ORACLE_HOME/bin:$PATH export PATH=$PATH:$ORACLE_HOME/OPatch cd $ORACLE_HOME/OPatch ./opatchauto rollback /u01/orasw/patches/28317214/27967747 -oh $ORACLE_HOME [-nonrolling] -- QC $ORACLE_HOME/OPatch/opatch lsinventory
Rollback Example Session: Sub-Patches
-- Determine Sub Patches to Rollback su - oracle $ORACLE_HOME/OPatch/opatch lsinventory Interim patches (2) : Patch 27762253 : applied on Wed Sep 05 14:40:03 EDT 2018 Unique Patch ID: 22108407 Patch description: "OCW PATCH SET UPDATE 12.1.0.2.180717 (27762253)" ... Patch 27547329 : applied on Wed Sep 05 14:38:48 EDT 2018 Unique Patch ID: 22280349 Patch description: "Database Patch Set Update : 12.1.0.2.180717 (27547329)" -- Determine Path To Subpatch Directoies cd /u01/orasw/patches/28317214 ls -l drwxr-xr-x 4 grid oinstall 67 May 29 14:24 27923320 drwxr-xr-x 7 grid oinstall 143 Jul 16 07:10 27967747 cd 27967747 ls -l drwxr-xr-x 4 grid oinstall 48 Jul 16 07:03 26983807 drwxr-xr-x 18 grid oinstall 4096 Jul 16 07:07 27547329 drwxr-xr-x 5 grid oinstall 62 Jul 16 07:08 27762253 drwxr-xr-x 5 grid oinstall 62 Jul 16 07:06 27762277 cd 27762253 pwd /u01/orasw/patches/28317214/27967747/27762253 <-Use THIS for patch path for 27762253 etc.. -- With DB Home set (in this case): Ensure other nodes up then: ./opatchauto rollback /u01/orasw/patches/28317214/27967747/27762253 -oh $ORACLE_HOME -nonrolling ./opatchauto rollback /u01/orasw/patches/28317214/27967747/27547329 -oh $ORACLE_HOME -nonrolling