oracle releases quarterly patches to entire exadata stack, recently I did X-5-8 full stack patching. It took 2 days to complete all the activities. Here I explain the patching process.
Quarterly patch contents:
— IB firmware patches.
— Cell server patches.
— Compute node patches.
— Oracle home patches.
It comes in Rolling and Non-rolling patches. if we choose rolling it takes lot of time to complete patching of all nodes. On a rough estimation it takes around 45 min for each cell server, and if the patch content size is high then it might take longer.
Its not like the quarterly patch contains all component upgrades, some of the component version remain same but they are embedded into other new versions.
Rolling patching process.
— Copy the uncompressed patch file to all the compute nodes.
— Unzip the zip file.
dcli -l root -g /home/oracle/db_groups /u01/app/oracle/patches/p00000_12.1.0.2.zip
dcli -l root -g /home/oracle/db_groups “unzip /u01/app/oracle/patches/p00000_12.1.0.2.zip”
— IB switch upgrade
$./patchmgr -ibswitches <path> -upgrade -ibswitch_precheck
$./patchmgr -ibswitches <patch> -upgrade
$ ibswitches
— Cell patching
$./patchmgr -cells cell_group -rolling -patch_check_prereq
this check fails multiple times on rpm checks, you need to remove 32bit rpms due to yum requirements.
$./patchmgr -cells cell_group -rolling -patch
Once the patching is done, make sure to review the imageinfo:
$imageinfo ## This has to show the active version and image status.
— Compute node patching.
stop the cluster on the node which is being patched.
$./dbnodeupdate.sh -u -l <patch_location> -v -N ##it’s precheck.
$./dbnodeupdate.sh -u -l <patch>
Once completed, use below query to get the info:
$imageinfo
$imagehistory
if the image status is fail, review the post checks in /var/log/cellos/validations.log. If you see all are success you can modify the status using “imagestatus -set success”
— Oracle home patching.
$ $GRID_HOME/OPatch/opatchauto apply <patchlocation> -ocmrf <ocm response file> -oh $GRID_HOME
— RDBMS home patching.
$ $ORACLE_HOME/OPatch/opatch auto <patch location>
After all oracle home patching, apply JVM patch:
$ $ORACLE_HOME/OPatch/opatch apply JVM patch ## This need to be applied on only one node in a cluster.
Post patching, open the dbs in upgrade mode and run datapatch for post upgrade scripts.