5- Patch Exadata KVM Guest Servers (VM Servers)
This is part 5/5 of Exadata Patch series, this section outlines the patching workflow for virtualized DB servers running on Exadata, including all necessary steps: Precheck, Backup, CRS Shutdown, Patch Apply, and Post-Patch Validation. The process is managed using patchmgr and dcli, ensuring a centralized and repeatable approach.
We have RAC include 4 servers, base on that I will apply the patch on VM1 & VM2 from VM3
Step 1: Precheck Phase
Ensure you can connect passwordlessly between peer VMs to facilitate patching:
From VM_3:
Setup Passwordless
cat /u01/stage/XXX_list_Grpb_1_2
EXA1-XXX-DBP1
EXA1-XXX-DBP2
dcli -g /u01/stage/XXX_list_Grpb_1_2 -l root -k -s '-o StrictHostKeyChecking=no'
dcli -g /u01/stage/XXX_list_Grpb_1_2 -l root hostname
Comment: Passwordless SSH is crucial for dcli and patchmgr to function across nodes.
Run precheck:
cd /u01/stage/Exadata_24.1.2.0.0/dbserver_patch_240719
./patchmgr --dbnodes /u01/stage/XXX_list_Grpb_1_2 \
--precheck \
--repo /u01/stage/Exadata_24.1.2.0.0/p36684576_241000_Linux-x86-64.zip \
--target_version 24.1.2.0.0.240711 \
--log_dir auto
Note: Add –skip_gi_db_validation if Grid Infrastructure (GI) is not fully installed.
Step 2: Backup (Optional but Recommended)
cd /u01/stage/Exadata_24.1.2.0.0/dbserver_patch_240719
./patchmgr --dbnodes /u01/stage/XXX_list_Grpb_1_2 \
--backup --rolling \
--repo /u01/stage/Exadata_24.1.2.0.0/p36684576_241000_Linux-x86-64.zip \
--target_version 24.1.2.0.0.240711
Comment: Add –allow_active_network_mounts if your environment uses NFS mounts.
Step 3: Stop CRS and Agents
Disable and stop Clusterware:
dcli -g /u01/stage/XXX_list_Grpb_1_2 -l root "/u01/app/19.0.0.0/grid/bin/crsctl disable crs"
dcli -g /u01/stage/XXX_list_Grpb_1_2 -l root "/u01/app/19.0.0.0/grid/bin/crsctl stop crs"
Validate CRS is down:
dcli -g /u01/stage/XXX_list_Grpb_1_2 -l root "ps -ef | grep grid | grep -v grep"
dcli -g /u01/stage/XXX_list_Grpb_1_2 -l root "ps -ef | grep pmon | grep -v grep"
Stop Enterprise Manager agents:
dcli -g /u01/stage/HYP_list_Grpb_1_2 -l oracle /u01/app/oracle/agent/agent_13.5.0.0.0/bin/emctl stop agent
Step 4: Apply the Patch
Use screen to safely run the patch session:
screen -S patch_Grpb_1_2
./patchmgr --dbnodes /u01/stage/XXX_list_Grpb_1_2 \
--upgrade --repo /u01/stage/Exadata_24.1.2.0.0/p36684576_241000_Linux-x86-64.zip \
--target_version 24.1.2.0.0.240711 [--rolling (no need for rolling here)]
Optional cleanup:
./patchmgr –dbnodes /u01/stage/HYP_list_Grpb_3_4 –precheck -cleanup –log_dir auto
Step 5: Enable CRS and Agents
Start CRS:
dcli -g /u01/stage/XXX_list_Grpb_1_2 -l root /u01/app/19.0.0.0/grid/bin/crsctl enable crs
dcli -g /u01/stage/XXX_list_Grpb_1_2 -l root /u01/app/19.0.0.0/grid/bin/crsctl start crs
Restart EM agents:
dcli -g /u01/stage/XXX_list_Grpb_3_4 -l oracle /u01/app/oracle/agent/agent_13.5.0.0.0/bin/emctl start agent
Once patching is successful on VM1 and VM2, flip the workflow and apply the patch from VM_1 to VM3 and VM4.
🔖 Next: Part 1/5 – Oracle Exadata Patching (Oracle Homes)
🔖 Next: Part 2/5 – Oracle Exadata Patching (RoCE Switches)
🔖 Next: Part 3/5 – Oracle Exadata Patching (Cell Storage)
🔖 Next: Part 4/5 – Oracle Exadata Patching (KVM Host)
🔖 Next: Part 5/5 – Oracle Exadata Patching (KVM Guest)


2 Responses
Is the option “-rolling” in the step 4 really needed ?
Nice catch, Yes, you are correct rolling is not necessary in step 4, I have 4 nodes in my cluster but the node list in my command has two nodes only “/u01/stage/XXX_list_Grpb_1_2”