Skip to content

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 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.

  • 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
  • Attempting to use a diskgroup before CREATE DISKGROUP completed
  • New diskgroup created on another instance not yet visible
  • Diskgroup creation failed silently
  • Diskgroup was dropped with DROP DISKGROUP
  • Diskgroup renamed via renamedg utility
  • Wrong ASM instance accessed (multiple ASM homes)
  • Wrong ORACLE_SID set when running ASM commands
  • Connecting to a non-ASM database instance
  • ASM instance running in restricted mode
-- Connect to ASM instance
sqlplus / as sysasm
-- List all diskgroups known to this ASM instance
SELECT name, state, type, total_mb
FROM v$asm_diskgroup
ORDER BY name;
-- Check exact spelling
SELECT name FROM v$asm_diskgroup WHERE UPPER(name) LIKE '%DATA%';
-- Look for orphaned or unmounted disks
SELECT path, name, group_number, header_status, mount_status
FROM v$asm_disk
WHERE mount_status != 'CACHED'
ORDER BY path;
-- Group_number = 0 means disk is not part of a mounted diskgroup
SELECT path, header_status, label
FROM v$asm_disk
WHERE group_number = 0;
Terminal window
# Verify which instance you are connected to
echo $ORACLE_SID
# For Grid Infrastructure
ps -ef | grep asm_pmon
# Should be +ASM, +ASM1, +ASM2 etc.
sqlplus / as sysasm
SQL> SHOW PARAMETER instance_name
Terminal window
# In RAC, check from all nodes
srvctl config asm
srvctl status diskgroup -diskgroup DATA
# Check if any node has the diskgroup mounted
crsctl stat res ora.DATA.dg
-- Confirm exact diskgroup name with case
SELECT 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 lookup
SELECT * FROM v$asm_diskgroup WHERE name = 'data'; -- finds nothing if upper

If v$asm_diskgroup shows the diskgroup with state=DISMOUNTED:

ALTER DISKGROUP data MOUNT;
-- Force mount if disks are missing
ALTER DISKGROUP data MOUNT FORCE;

For RAC, use srvctl to mount on all instances:

Terminal window
srvctl start diskgroup -diskgroup DATA

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';

If disks belonging to a known diskgroup exist but the diskgroup is not visible:

-- Force ASM to rescan disks
ALTER SYSTEM SET asm_diskstring='/dev/oracleasm/disks/*' SCOPE=MEMORY;
-- Then attempt mount
ALTER DISKGROUP data MOUNT;
Terminal window
# Set environment for correct ASM home
export ORACLE_HOME=/u01/app/19.0.0/grid
export ORACLE_SID=+ASM1
export PATH=$ORACLE_HOME/bin:$PATH
# Now connect
sqlplus / as sysasm
RMAN> BACKUP DATABASE FORMAT '+FRA/%U';
ORA-15004: diskgroup "FRA" does not exist

Fix: Check that FRA diskgroup is mounted, or use the correct name (+RECO, +FAST_RECOVERY_AREA).

SQL> ALTER TABLESPACE users ADD DATAFILE '+USERS_DG/users02.dbf' SIZE 1G;
ORA-15004: diskgroup "USERS_DG" does not exist

Fix: 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 exist

Fix: ASM instance may not have started. Check crsctl stat res -t -init.

  • Use uppercase for all diskgroup names (Oracle’s default)
  • Avoid special characters and reserved words
  • Maintain a documented list of diskgroups per environment
-- Wrap operations in existence checks
DECLARE
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;
/
#!/bin/bash
# Alert if expected diskgroups are missing
EXPECTED="DATA RECO FRA"
for dg in $EXPECTED; do
STATE=$(sqlplus -s / as sysasm <<EOF
SET PAGESIZE 0 FEEDBACK OFF
SELECT state FROM v\$asm_diskgroup WHERE name='$dg';
EOF
)
if [ "$STATE" != "MOUNTED" ]; then
echo "WARN: $dg not mounted (state=$STATE)" | mail [email protected]
fi
done
  • 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
  • Verify exact diskgroup name in v$asm_diskgroup
  • Confirm connected to correct ASM instance (+ASM SID)
  • Check diskgroup mount status (MOUNTED vs DISMOUNTED)
  • Validate asm_diskstring includes expected device paths
  • In RAC, check diskgroup status across all nodes