3- Patch Exadata Cell Servers (Storage Servers)
This is part 3/5 of Exadata Patch series, in this section we will do patch for Exadata Cell Servers.
Before applying any cell patch, verify the health of the storage layer.
Below are the key checks and pre-steps I carry out:
- Make Sure No Issues in Storage Disks
Run the next commands to verify all physical, cell, and grid disks are in normal and active states:
dcli -l root -g /EXAVMIMAGES/patches/stage/cell_group 'cellcli -e list physicaldisk' | grep -v normal
dcli -l root -g /EXAVMIMAGES/patches/stage/cell_group 'cellcli -e list celldisk' | grep -v normal
dcli -l root -g /EXAVMIMAGES/patches/stage/cell_group 'cellcli -e list griddisk attributes name,asmmodestatus,asmdeactivationoutcome' | grep -vi yes
Expected Output: These commands should return no data — which indicates all disks are healthy.
- Drop Old Alert History
Clear out old alert histories before patching:
dcli -l root -g cell_group drop alerthistroy all
- Set disk_repair_time for ASM Disk Groups
Ensure each ASM disk group has the correct disk_repair_time setting as per your internal standards or Oracle’s recommendation (typically 3.6h or higher).
If your ASM compatible.asm parameter is < 12.1.0.2.0, then the disk_repair_time parameter value it taken into account; if your ASM compatible.asm parameter is >= 12.1.0.2.0 then the failgroup_repair_time parameter value it taken into account knowing that failgroup_repair_time default is 24h
disk_repair_time to at least 8h
-- Check COMPATIBLE.ASM
SQL>column dg format a15
SQL>column attribute format a30
SQL>column value format a15
SQL>select dg.name dg,a.name attribute,a.value from v$asm_diskgroup dg, v$asm_attribute a where dg.group_number=a.group_number and a.name='compatible.asm' order by dg;
-- Check COMPATIBLE.ADVM
SQL>column dg format a15
SQL>column attribute format a30
SQL>column value format a15
SQL>select dg.name dg,a.name attribute,a.value from v$asm_diskgroup dg, v$asm_attribute a where dg.group_number=a.group_number and a.name='compatible.advm' order by dg;
-- Check FAILGROUP_REPAIR_TIME (min 24h)
SQL>column dg format a15
SQL>column attribute format a30
SQL>column value format a15
SQL>select dg.name dg,a.name attribute,a.value from v$asm_diskgroup dg, v$asm_attribute a where dg.group_number=a.group_number and a.name='failgroup_repair_time' order by dg;
-- Check DISK_REPAIR_TIME (min 8.5h)
SQL>column dg format a15
SQL>column attribute format a30
SQL>column value format a15
SQL>select dg.name dg,a.name attribute,a.value from v$asm_diskgroup dg, v$asm_attribute a where dg.group_number=a.group_number and a.name='disk_repair_time' order by dg;
-- For each diskgroup set disk_repair_time to 24h
alter diskgroup XXXXX SET ATTRIBUTE 'disk_repair_time' = '24h' ;
-- set ASM_POWER_LIMIT
alter system set ASM_POWER_LIMIT = 8 scope=both;
check if there are any operation (resync) running on the disks
SQL> select * from gv$asm_operation;
Patch Precheck
Run a dry-run check using patchmgr:
cd ${PATCH_LOCATION}/cells/patch_24.1.2.0.0.240711
./patchmgr -cells /EXAVMIMAGES/patches/stage/cell_group -patch_check_prereq -rolling -log_dir auto
Apply the Patch
screen -S Patch_cell
./patchmgr -cells /EXAVMIMAGES/patches/stage/cell_group -patch -rolling -log_dir auto
After Patching
Check the logs generated in the patchmgr log directory
Run standard Exadata health checks to verify the patch success
Reset changed parameters to the default value
🔖 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)

