ORA-15004: Diskgroup Does Not Exist - ASM Diskgroup Resolution Guide
ORA-15004: Diskgroup “diskgroup_name” Does Not Exist
Section titled “ORA-15004: Diskgroup “diskgroup_name” Does Not Exist”Error Overview
Section titled “Error Overview”Error Text: ORA-15004: diskgroup "DGNAME" does not exist
ORA-15004 is raised when ASM is asked to operate on a diskgroup that is not registered in the ASM instance’s metadata. Unlike ORA-15001 (which can mean “exists but not mounted”), ORA-15004 indicates the diskgroup name is unknown to the current ASM instance entirely.
Common Causes
Section titled “Common Causes”Typos and Naming Mistakes
Section titled “Typos and Naming Mistakes”- Misspelled diskgroup name in SQL or RMAN command
- Using the disk label instead of the diskgroup name
- Case-sensitivity mismatch in quoted identifiers
- Trailing spaces or special characters in command
Diskgroup Not Yet Created
Section titled “Diskgroup Not Yet Created”- Attempting to use a diskgroup before
CREATE DISKGROUPcompleted - New diskgroup created on another instance not yet visible
- Diskgroup creation failed silently
Removed or Renamed Diskgroup
Section titled “Removed or Renamed Diskgroup”- Diskgroup was dropped with
DROP DISKGROUP - Diskgroup renamed via
renamedgutility - Wrong ASM instance accessed (multiple ASM homes)
ASM Instance Issues
Section titled “ASM Instance Issues”- Wrong
ORACLE_SIDset when running ASM commands - Connecting to a non-ASM database instance
- ASM instance running in restricted mode
Diagnostic Steps
Section titled “Diagnostic Steps”Verify Diskgroup Existence
Section titled “Verify Diskgroup Existence”-- Connect to ASM instancesqlplus / as sysasm
-- List all diskgroups known to this ASM instanceSELECT name, state, type, total_mbFROM v$asm_diskgroupORDER BY name;
-- Check exact spellingSELECT name FROM v$asm_diskgroup WHERE UPPER(name) LIKE '%DATA%';Check Mount Status of Disks
Section titled “Check Mount Status of Disks”-- Look for orphaned or unmounted disksSELECT path, name, group_number, header_status, mount_statusFROM v$asm_diskWHERE mount_status != 'CACHED'ORDER BY path;
-- Group_number = 0 means disk is not part of a mounted diskgroupSELECT path, header_status, labelFROM v$asm_diskWHERE group_number = 0;Confirm ASM Connection
Section titled “Confirm ASM Connection”# Verify which instance you are connected toecho $ORACLE_SID
# For Grid Infrastructureps -ef | grep asm_pmon
# Should be +ASM, +ASM1, +ASM2 etc.sqlplus / as sysasmSQL> SHOW PARAMETER instance_nameSearch Cluster-Wide
Section titled “Search Cluster-Wide”# In RAC, check from all nodessrvctl config asmsrvctl status diskgroup -diskgroup DATA
# Check if any node has the diskgroup mountedcrsctl stat res ora.DATA.dgResolution Steps
Section titled “Resolution Steps”1. Fix Typos and Wrong Names
Section titled “1. Fix Typos and Wrong Names”-- Confirm exact diskgroup name with caseSELECT name FROM v$asm_diskgroup;
-- Use exact name (no quotes for uppercase)ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/disks/DISK5';
-- Or use double quotes for case-sensitive lookupSELECT * FROM v$asm_diskgroup WHERE name = 'data'; -- finds nothing if upper2. Mount Diskgroup if Dismounted
Section titled “2. Mount Diskgroup if Dismounted”If v$asm_diskgroup shows the diskgroup with state=DISMOUNTED:
ALTER DISKGROUP data MOUNT;
-- Force mount if disks are missingALTER DISKGROUP data MOUNT FORCE;For RAC, use srvctl to mount on all instances:
srvctl start diskgroup -diskgroup DATA3. Recreate Missing Diskgroup
Section titled “3. Recreate Missing Diskgroup”If the diskgroup was accidentally dropped, recreate it (data on dropped diskgroup is lost):
CREATE DISKGROUP data EXTERNAL REDUNDANCY DISK '/dev/oracleasm/disks/DISK1' NAME data_0001 DISK '/dev/oracleasm/disks/DISK2' NAME data_0002 ATTRIBUTE 'compatible.asm' = '19.0.0.0', 'compatible.rdbms' = '19.0.0.0';4. Discover Existing Disks
Section titled “4. Discover Existing Disks”If disks belonging to a known diskgroup exist but the diskgroup is not visible:
-- Force ASM to rescan disksALTER SYSTEM SET asm_diskstring='/dev/oracleasm/disks/*' SCOPE=MEMORY;
-- Then attempt mountALTER DISKGROUP data MOUNT;5. Switch to Correct ASM Instance
Section titled “5. Switch to Correct ASM Instance”# Set environment for correct ASM homeexport ORACLE_HOME=/u01/app/19.0.0/gridexport ORACLE_SID=+ASM1export PATH=$ORACLE_HOME/bin:$PATH
# Now connectsqlplus / as sysasmCommon Scenarios
Section titled “Common Scenarios”Scenario 1: RMAN Backup Fails
Section titled “Scenario 1: RMAN Backup Fails”RMAN> BACKUP DATABASE FORMAT '+FRA/%U';ORA-15004: diskgroup "FRA" does not existFix: Check that FRA diskgroup is mounted, or use the correct name (+RECO, +FAST_RECOVERY_AREA).
Scenario 2: Datafile Add Fails
Section titled “Scenario 2: Datafile Add Fails”SQL> ALTER TABLESPACE users ADD DATAFILE '+USERS_DG/users02.dbf' SIZE 1G;ORA-15004: diskgroup "USERS_DG" does not existFix: Verify spelling against v$asm_diskgroup.
Scenario 3: Database Won’t Open After Patch
Section titled “Scenario 3: Database Won’t Open After Patch”ORA-15004: diskgroup "DATA" does not existFix: ASM instance may not have started. Check crsctl stat res -t -init.
Prevention Strategies
Section titled “Prevention Strategies”Naming Conventions
Section titled “Naming Conventions”- Use uppercase for all diskgroup names (Oracle’s default)
- Avoid special characters and reserved words
- Maintain a documented list of diskgroups per environment
Pre-Operation Checks
Section titled “Pre-Operation Checks”-- Wrap operations in existence checksDECLARE v_count NUMBER;BEGIN SELECT COUNT(*) INTO v_count FROM v$asm_diskgroup WHERE name = 'DATA' AND state = 'MOUNTED';
IF v_count = 0 THEN RAISE_APPLICATION_ERROR(-20001, 'DATA diskgroup not available'); END IF;END;/Monitoring Diskgroup Availability
Section titled “Monitoring Diskgroup Availability”#!/bin/bash# Alert if expected diskgroups are missingEXPECTED="DATA RECO FRA"for dg in $EXPECTED; do STATE=$(sqlplus -s / as sysasm <<EOFSET PAGESIZE 0 FEEDBACK OFFSELECT state FROM v\$asm_diskgroup WHERE name='$dg';EOF) if [ "$STATE" != "MOUNTED" ]; then fidoneRelated Errors
Section titled “Related Errors”- ORA-15001: Diskgroup does not exist or is not mounted
- ORA-15003: Diskgroup already mounted in another lock name space
- ORA-15012: ASM file does not exist
- ORA-15040: Diskgroup is incomplete
- ORA-15110: No diskgroups mounted
Troubleshooting Checklist
Section titled “Troubleshooting Checklist”- Verify exact diskgroup name in
v$asm_diskgroup - Confirm connected to correct ASM instance (
+ASMSID) - Check diskgroup mount status (
MOUNTEDvsDISMOUNTED) - Validate
asm_diskstringincludes expected device paths - In RAC, check diskgroup status across all nodes