ORA-15012: ASM File Does Not Exist - Locate and Recover ASM Files
ORA-15012: ASM File “filename” Does Not Exist
Section titled “ORA-15012: ASM File “filename” Does Not Exist”Error Overview
Section titled “Error Overview”Error Text: ORA-15012: ASM file '+DG/path/file.dbf' does not exist
ORA-15012 occurs when Oracle attempts to open or reference an ASM file by its fully qualified or alias name and ASM cannot locate it. The file may have been dropped, the alias may be orphaned, or the path may include a typo or unmounted diskgroup.
Common Causes
Section titled “Common Causes”File Was Dropped or Deleted
Section titled “File Was Dropped or Deleted”- Datafile or tempfile dropped from database while ASM file remained orphaned
- Manual
ASMCMD rmof a file still referenced by control file - RMAN cleanup operation removed the underlying file
ALTER DATABASE DROP DATAFILEdid not remove ASM alias
Orphaned Aliases
Section titled “Orphaned Aliases”- Alias points to a file_number that no longer exists
- Two-stage rename failed mid-operation
- Diskgroup rebalance left stale alias pointers
Path Typos
Section titled “Path Typos”- Wrong diskgroup name in path
- Missing slash or extra character in alias
- Case sensitivity in quoted alias names
- Incorrect file_number/incarnation pair
Diskgroup State
Section titled “Diskgroup State”- Required diskgroup not mounted
- Diskgroup mounted on different ASM instance
- File belongs to a dismounted secondary diskgroup
Diagnostic Steps
Section titled “Diagnostic Steps”Verify File Existence with ASMCMD
Section titled “Verify File Existence with ASMCMD”# Connect to ASMasmcmd
# Navigate to expected pathASMCMD> cd +DATA/PROD/DATAFILEASMCMD> ls -l
# Search for fileASMCMD> find +DATA users01
# Show file alias and underlying physical nameASMCMD> ls -l +DATA/PROD/DATAFILE/users.265.1234567890Check ASM Metadata
Section titled “Check ASM Metadata”-- Connect as SYSASMsqlplus / as sysasm
-- Look up file by aliasSELECT a.name AS alias, a.file_number, a.file_incarnation, f.bytes/1024/1024 AS size_mbFROM v$asm_alias aLEFT JOIN v$asm_file f ON a.file_number = f.file_number AND a.file_incarnation = f.incarnationWHERE a.name = 'USERS01.DBF';
-- Find orphaned aliases (no matching file)SELECT a.system_created, a.name, a.file_number, a.file_incarnationFROM v$asm_alias aLEFT JOIN v$asm_file f ON a.group_number = f.group_number AND a.file_number = f.file_numberWHERE f.file_number IS NULL AND a.alias_directory = 'N';
-- All files in a diskgroupSELECT file_number, incarnation, type, bytes/1024/1024 AS mbFROM v$asm_fileWHERE group_number = (SELECT group_number FROM v$asm_diskgroup WHERE name = 'DATA');Verify Database References
Section titled “Verify Database References”-- Connect to RDBMS instanceSELECT file_id, file_name, status, online_statusFROM dba_data_filesWHERE file_name LIKE '%file_in_question%';
-- Check controlfile referencesSELECT name FROM v$datafile WHERE name LIKE '+DATA%';SELECT name FROM v$tempfile WHERE name LIKE '+DATA%';SELECT member FROM v$logfile WHERE member LIKE '+DATA%';Resolution Steps
Section titled “Resolution Steps”1. File Genuinely Missing - Restore from Backup
Section titled “1. File Genuinely Missing - Restore from Backup”-- Take affected datafile offlineALTER DATABASE DATAFILE '+DATA/PROD/DATAFILE/users.265.1234567890' OFFLINE;
-- Restore via RMANRMAN> RESTORE DATAFILE 5;RMAN> RECOVER DATAFILE 5;
-- Bring onlineALTER DATABASE DATAFILE 5 ONLINE;2. Orphaned Alias Cleanup
Section titled “2. Orphaned Alias Cleanup”# Connect to ASMCMDasmcmd
# Remove orphaned alias (does not delete file if referenced)ASMCMD> rm +DATA/PROD/DATAFILE/orphan_alias.dbf
# For directory orphansASMCMD> rmalias +DATA/PROD/DATAFILE/old_alias3. Wrong Path - Use Correct Reference
Section titled “3. Wrong Path - Use Correct Reference”-- Find actual location in controlfileSELECT file#, name FROM v$datafile WHERE file# = 5;
-- Or rebuild controlfile referenceALTER DATABASE RENAME FILE '+OLD_DG/file.dbf' TO '+DATA/PROD/DATAFILE/file.265.1234567890';4. Mount Required Diskgroup
Section titled “4. Mount Required Diskgroup”-- If diskgroup is dismountedALTER DISKGROUP fra MOUNT;
-- Then retry the operation5. Recover from Failed Rename
Section titled “5. Recover from Failed Rename”-- Verify two-stage rename completionSELECT file_number, incarnation FROM v$asm_file WHERE group_number = 1;
-- Match file aliases to filesSELECT a.name, a.file_number, f.file_numberFROM v$asm_alias a, v$asm_file fWHERE a.file_number = f.file_number(+);Common Scenarios
Section titled “Common Scenarios”Scenario 1: RMAN Cannot Find Backup
Section titled “Scenario 1: RMAN Cannot Find Backup”ORA-15012: ASM file '+FRA/PROD/BACKUPSET/2026_01_15/o1_mf_nnndf_TAG_xxxx.bkp' does not existFix: Run RMAN> CROSSCHECK BACKUP; DELETE EXPIRED BACKUP; to remove stale catalog entries.
Scenario 2: Tempfile Dropped Externally
Section titled “Scenario 2: Tempfile Dropped Externally”ALTER TABLESPACE temp DROP TEMPFILE '+DATA/PROD/TEMPFILE/temp01.dbf';ORA-15012: ASM file '+DATA/PROD/TEMPFILE/temp01.dbf' does not existFix: Use ALTER DATABASE TEMPFILE '...' DROP; to remove from controlfile only.
Scenario 3: After Database Clone
Section titled “Scenario 3: After Database Clone”ORA-15012: ASM file '+OLD_DATA/CLONE/DATAFILE/system.256.1234' does not existFix: Recreate controlfile with correct path or use RMAN DUPLICATE DB_FILE_NAME_CONVERT.
Sample Output
Section titled “Sample Output”SQL> ALTER DATABASE DATAFILE '+DATA/PROD/DATAFILE/users.265.999' RESIZE 2G;ALTER DATABASE DATAFILE '+DATA/PROD/DATAFILE/users.265.999' RESIZE 2G*ERROR at line 1:ORA-01237: cannot extend datafile 5ORA-01110: data file 5: '+DATA/PROD/DATAFILE/users.265.999'ORA-15012: ASM file '+DATA/PROD/DATAFILE/users.265.999' does not exist
SQL> SELECT file#, name FROM v$datafile WHERE file# = 5;
FILE# NAME---------- -------------------------------------------------- 5 +DATA/PROD/DATAFILE/users.265.998765432The controlfile points to incarnation 998765432, not 999 — typo or stale reference caused the error.
Prevention Strategies
Section titled “Prevention Strategies”Use Aliases Instead of System Names
Section titled “Use Aliases Instead of System Names”-- Create alias on file creationALTER DISKGROUP data ADD ALIAS '+DATA/PROD/users.dbf' FOR '+DATA/PROD/DATAFILE/users.265.1234567890';
-- Reference via alias (stable across recreations)ALTER DATABASE RENAME FILE '+DATA/PROD/DATAFILE/users.265.1234567890' TO '+DATA/PROD/users.dbf';Cleanup Procedures
Section titled “Cleanup Procedures”# Regular orphan cleanup scriptasmcmd <<EOFlsofls --absolutepath +DATA/PROD/DATAFILEEOF
# Cross-check with databasesqlplus -s / <<EOFSELECT name FROM v\$datafile;SELECT name FROM v\$tempfile;SELECT member FROM v\$logfile;EOFBackup Catalog Maintenance
Section titled “Backup Catalog Maintenance”RMAN> CROSSCHECK BACKUP;RMAN> CROSSCHECK ARCHIVELOG ALL;RMAN> DELETE NOPROMPT EXPIRED BACKUP;RMAN> DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;Related Errors
Section titled “Related Errors”- ORA-01110: Data file [N]: ‘filename’
- ORA-15001: Diskgroup does not exist or is not mounted
- ORA-15004: Diskgroup does not exist
- ORA-15032: Not all alterations performed
- ORA-15045: ASM file name not in reference form
Troubleshooting Checklist
Section titled “Troubleshooting Checklist”- Verify exact file path with
asmcmd ls -l - Confirm diskgroup is mounted
- Check
v$asm_aliasandv$asm_filefor orphans - Cross-reference path in
v$datafile/v$tempfile - Run RMAN
CROSSCHECKif error involves backups - Restore from backup if file genuinely missing