Keeping OPatch up-to-date is essential for successful patching operations on Oracle Grid Infrastructure (GI) and RDBMS homes. This guide outlines how to update OPatch on all nodes of an Exadata environment using dcli.
Step 1: Update OPatch in the Grid Infrastructure Home
From KVM1 (or any control node):
Ensure you have a list of all VMs in /EXAVMIMAGES/patches/stage/ALL_VMs.
chmod 666 /EXAVMIMAGES/patches/stage/ALL_VMs
Configure SSH passwordless access:
dcli -g /EXAVMIMAGES/patches/stage/ALL_VMs -l root -k -s '-o StrictHostKeyChecking=no'
Test SSH access
dcli -g /EXAVMIMAGES/patches/stage/ALL_VMs -l root hostname
Copy OPatch zip file to all nodes:Conflict and Space Check
dcli -g /EXAVMIMAGES/patches/stage/ALL_VMs -l root -f /tmp/p6880880_190000_Linux-x86-64.zip -d /tmp/
dcli -g /EXAVMIMAGES/patches/stage/ALL_VMs -l root chmod 666 /tmp/p6880880_190000_Linux-x86-64.zip
dcli -g /EXAVMIMAGES/patches/stage/ALL_VMs -l root ls -l /tmp/p6880880_190000_Linux-x86-64.zip
Backup old OPatch and upgrade in GI home:
dcli -g /EXAVMIMAGES/patches/stage/ALL_VMs -l root "mv /u01/app/19.0.0.0/grid/OPatch /u01/app/19.0.0.0/grid/OPatch_$(date +"%FT%H%M")"
Step 2: Update OPatch in the RDBMS Home
From one of the VM nodes (e.g., VM_1):
Prepare a list of database nodes:
vi /u01/stage/SDN_Nodes
EXA1-SDN-DBP1
EXA1-SDN-DBP2
EXA1-SDN-DBP3
EXA1-SDN-DBP4
chmod 666 /u01/stage/SDN_Nodes
Configure SSH equivalence:
dcli -g /u01/stage/SDN_Nodes -l root -k -s '-o StrictHostKeyChecking=no'
Verify SSH login:
dcli -g /u01/stage/SDN_Nodes -l root hostname
Verify GI OPatch version (already updated in previous step):
su - grid
dcli -g /u01/stage/SDN_Nodes -l grid "/u01/app/19.0.0.0/grid/OPatch/opatch version"
dcli -g /u01/stage/SDN_Nodes -l grid "/u01/app/19.0.0.0/grid/OPatch/opatch lspatches"
exit
Update OPatch in RDBMS Home:
su - oracle
dcli -g /u01/stage/SDN_Nodes -l oracle "mv /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch_$(date +"%FT%H%M")"
dcli -g /u01/stage/SDN_Nodes -l oracle "unzip -qo /tmp/p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.0.0.0/dbhome_1"
dcli -g /u01/stage/SDN_Nodes -l oracle "/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch version" | grep Version
dcli -g /u01/stage/SDN_Nodes -l oracle "/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch lspatches"
dcli -g /u01/stage/SDN_Nodes -l root rm /tmp/p6880880_190000_Linux-x86-64.zip
✅ You have now successfully updated the OPatch utility in both Grid Infrastructure and RDBMS homes across all nodes in your Exadata environment.


