Oracle ASM Failure Groups: Mirroring, Rebalance Power, and Verification
Configure Oracle ASM failure groups for disk mirroring, control rebalance power, and verify rebuild progress after a disk failure.
02 Mar 2026, 14:26 UTC

The Problem: Unprotected ASM Disk Groups and Silent Rebuilds
\nOracle Automatic Storage Management (ASM) stores database files across disks in disk groups. If a disk group uses external redundancy and a disk fails, ASM has no mirrored copy to fall back on. Even with normal or high redundancy, an uncontrolled rebalance can saturate I/O and slow production workloads while ASM rebuilds redundancy. The useful takeaway is to define failure groups before you need them, choose a rebalance power that matches your maintenance window, and verify the operation with dynamic performance views rather than assuming the disk group healed.
\n\nDesired Outcome
\nCreate or modify an ASM disk group with explicit failure groups so that ASM mirrors extents across separate failure sets. After a disk is dropped or fails, confirm that ASM rebalances to restore redundancy and that you can monitor progress and throttle the rebuild if necessary.
\n\nPrerequisites
\n- \n
- Oracle Grid Infrastructure and an ASM instance running on the node \n
- SQL*Plus access as SYSASM, or OS membership in the OSASM/OSDBA group \n
- Raw disks or LUNs visible to ASM with consistent size characteristics within a failure group \n
- Oracle Database 12c Release 2 or later; examples assume Oracle 19c ASM behavior \n
Step 1: Inspect Existing Disk Groups and Failure Groups
\nConnect to SQL*Plus on a node running the ASM instance as a user with SYSASM privileges:
\nsqlplus / as sysasm\nRun:
\nSELECT name, type, sector_size, block_size, allocation_unit_size, state\nFROM v$asm_diskgroup;\n\nSELECT dg.name AS disk_group, fd.failgroup, fd.name AS disk_name, fd.path, fd.header_status, fd.mode_status\nFROM v$asm_diskgroup dg\nJOIN v$asm_disk fd ON fd.group_number = dg.group_number\nORDER BY dg.name, fd.failgroup;\nExpected check: Look for type values of EXTERNAL, NORMAL, or HIGH. External redundancy means no mirroring; normal means two-way mirroring; high means three-way. Each disk should show MEMBER in header_status and ONLINE in mode_status.
Risk: Do not drop disks from a production disk group until you confirm that redundancy can survive the loss.
\n\nStep 2: Create a Disk Group with Failure Groups
\nA failure group is a set of disks that share a common failure point, such as the same disk controller or storage enclosure. ASM mirrors extents to disks in different failure groups.
\nExample as SYSASM:
\nCREATE DISKGROUP DATA NORMAL REDUNDANCY\n FAILGROUP controller1 DISK '/dev/oracleasm/disks/disk01' NAME disk01,\n DISK '/dev/oracleasm/disks/disk02' NAME disk02\n FAILGROUP controller2 DISK '/dev/oracleasm/disks/disk03' NAME disk03,\n DISK '/dev/oracleasm/disks/disk04' NAME disk04\n ATTRIBUTE 'compatible.asm' = '19.0.0.0',\n 'compatible.rdbms' = '19.0.0.0',\n 'au_size' = '4M';\nWhere to run: SQL*Plus connected to the ASM instance as SYSASM.
\nPermissions: SYSASM or a user in the OSASM group.
\nRisk: Creating a disk group initializes the disks. Ensure the paths are unused and correct; mistyping a path can affect data on an unintended device.
\nExpected check: Query V$ASM_DISKGROUP and confirm type = NORMAL and state = MOUNTED.
Step 3: Set Rebalance Power and Understand the Trade-Off
\nWhen a disk is dropped or fails, ASM rebalances extents to restore redundancy. The REBALANCE POWER value controls how aggressively ASM rebuilds. Higher power finishes faster but consumes more I/O and CPU; lower power throttles the rebuild to protect production workloads.
Change power on an active rebalance:
\nALTER DISKGROUP DATA REBALANCE POWER 4;\nWhere to run: SQL*Plus connected to ASM as SYSASM.
\nValid values: Typically 0 to 11, where 0 pauses automatic rebalance and higher numbers increase parallelism. Default depends on ASM version and disk group attributes.
\nRisk: Setting power too high during peak hours can increase latency for database sessions reading from the disk group.
\n\nStep 4: Drop a Disk and Monitor Rebalance Progress
\nTo test or remove a disk:
\nALTER DISKGROUP DATA DROP DISK disk02;\nMonitor the operation:
\nSELECT operation, state, power, actual_power, sofar, totalwork,\n ROUND(sofar/totalwork*100, 2) AS pct_complete,\n start_time, est_minutes\nFROM v$asm_operation;\nExpected check: state should move from WAITING or RUNNING to COMPLETED. pct_complete should increase over time. If est_minutes is large and the system is busy, reduce power with the ALTER DISKGROUP command above.
Verify redundancy restoration:
\nSELECT name, type, state\nFROM v$asm_diskgroup\nWHERE name = 'DATA';\nAlso confirm the dropped disk no longer appears as MEMBER in V$ASM_DISK, or appears with header_status = FORMER.
Expected Checks and Verification
\n- \n
- Redundancy level:
V$ASM_DISKGROUP.TYPEmatches your protection requirement (NORMAL or HIGH for mirroring). \n - Failure group spread: Each disk in
V$ASM_DISKbelongs to a failure group, and mirrored extents reside in different groups. \n - Rebalance completion:
V$ASM_OPERATION.STATEreachesCOMPLETEDafter a disk drop. \n - Disk status: Replaced or new disks show
HEADER_STATUS = MEMBERandMODE_STATUS = ONLINE. \n
Recovery Options
\nIf a disk failure leaves the disk group unable to restore redundancy because too many disks are missing:
\n- \n
- Replace the failed hardware and add a new disk to the same failure group: \n
ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/disks/disk05' NAME disk05 FAILGROUP controller1;\nASM automatically rebalances to redistribute extents. Monitor with V$ASM_OPERATION.
If rebalance is harming performance, lower power:
\nALTER DISKGROUP DATA REBALANCE POWER 1;\nTo pause entirely (not recommended for long periods because redundancy remains below target):
\nALTER DISKGROUP DATA REBALANCE POWER 0;\nRollback note: Dropping a disk is a state-changing operation. There is no direct undo for DROP DISK; recovery requires adding replacement storage and letting ASM rebalance. Do not drop multiple disks simultaneously from a NORMAL redundancy group unless you are certain at least one copy of every extent remains online.
Limitations
\n- \n
- Failure groups cannot span disk groups: A failure group belongs to exactly one disk group. \n
- External redundancy offers no mirroring: Use it only when the underlying storage array provides RAID protection. \n
- Rebalance power is not a hard I/O cap: It influences parallelism and throttle behavior but does not guarantee a specific throughput limit. \n
- Disk group compatibility: Some features require matching COMPATIBLE.ASM and COMPATIBLE.RDBMS versions across instances in a cluster. \n
Quick Verification Checklist
\n✓ V$ASM_DISKGROUP shows TYPE = NORMAL or HIGH and STATE = MOUNTED\n✓ V$ASM_DISK shows each disk assigned to a FAILGROUP\n✓ After DROP DISK, V$ASM_OPERATION shows STATE progressing to COMPLETED\n✓ Replacement disk shows HEADER_STATUS = MEMBER and MODE_STATUS = ONLINE\n✓ REBALANCE POWER adjusted before peak production hours if needed