Managing disks in Oracle ASM (Automatic Storage Management) requires precision and careful execution to avoid data loss. This guide explains the disk replacement procedure in Oracle Grid Infrastructure, with real commands, validation queries, and step-by-step verification.
Prerequisites
-
Activity should be performed using the GRID user unless ASM was installed by the Oracle user.
-
Always connect with:
- sqlplus / as sysasm
- You should see your new disks listed with the correct ownership (
oracle:asmadmin).
2. 📊 Check Existing Disk groups and Disks
Run the following query to confirm disk groups and disk status:
set lines 999;
col diskgroup for a15
col diskname for a15
col path for a35
select a.name DiskGroup,
b.name DiskName,
b.total_mb,
(b.total_mb – b.free_mb) Used_MB,
b.free_mb,
b.path,
b.header_status
from v$asm_disk b, v$asm_diskgroup a
where a.group_number(+) = b.group_number
order by b.group_number, b.name;
Check that your new disks show up as CANDIDATE.
3. ⚖️ Compare Disk Sizes
Before adding, validate both new and old disks have the same size:
asmcmd -p
ASMCMD [+] > lsdg
4. ➕ Add New Disks
Use the ALTER DISKGROUP ... ADD DISK command:
alter diskgroup OCR_VOT add disk ‘/dev/rhdisk14’ rebalance power 40 NOWAIT;
alter diskgroup FRA add disk ‘/dev/rhdisk17’ rebalance power 40 NOWAIT;
alter diskgroup DATA add disk ‘/dev/rhdisk18’ rebalance power 40 NOWAIT;
Repeat for all new devices.
5. 🔄 Monitor Rebalance Operations
Check if rebalance is ongoing:
set lines 1000
set pages 100
select * from v$asm_operation;
If no rows are returned, rebalance has completed.
6. 🗑️ Drop Old Disks
Once the new disks are fully added and synced, drop the old disks:
alter diskgroup OCR_VOT drop disk OCR_VOT_0000 rebalance power 40 NOWAIT;
alter diskgroup FRA drop disk FRA rebalance power 40 NOWAIT;
alter diskgroup DATA drop disk DATA1 rebalance power 40 NOWAIT;
7. ✅ Final Verification
Run the same disk check query again:
set lines 999;
col diskgroup for a15
col diskname for a15
col path for a35
select a.name DiskGroup,
b.name DiskName,
b.total_mb,
(b.total_mb – b.free_mb) Used_MB,
b.free_mb,
b.path,
b.header_status
from v$asm_disk b, v$asm_diskgroup a
where a.group_number(+) = b.group_number
order by b.group_number, b.name;
Old disks should now show as FORMER, and new disks as MEMBER.
Notes
-
Always monitor rebalance progress before proceeding to the next step.
-
Avoid dropping disks until new disks are fully synchronized.
-
Perform this activity in a planned downtime or low-load window.