ORA-15027: Active Use of Diskgroup Precludes Operation
ORA-15027: Active Use of Diskgroup “DG_NAME” Precludes Its Dismount
Section titled “ORA-15027: Active Use of Diskgroup “DG_NAME” Precludes Its Dismount”Error Overview
Section titled “Error Overview”Error Text: ORA-15027: active use of diskgroup "DG_NAME" precludes its dismount
ORA-15027 is raised when an ASM operation (typically DISMOUNT DISKGROUP or DROP DISKGROUP) cannot proceed because one or more database instances or other clients are still actively using the diskgroup. ASM refuses to dismount to prevent in-flight I/O failures.
Common Causes
Section titled “Common Causes”Database Instances Still Open
Section titled “Database Instances Still Open”- Database has datafiles, controlfiles, or redo logs in the diskgroup
- One or more RAC instances still mounted with files on the diskgroup
- Pluggable database keeping files open
Background Processes
Section titled “Background Processes”- Recovery slaves still active
- ARCn archiving to FRA in this diskgroup
- DBWR writing buffers
- LGWR active on redo members
External Clients
Section titled “External Clients”- Oracle GoldenGate trail files
- ACFS volumes mounted on filesystem
- Oracle Restart resources still registered
Stale Locks
Section titled “Stale Locks”- Crashed instance left lock metadata
- Failed RAC instance recovery incomplete
Diagnostic Steps
Section titled “Diagnostic Steps”Identify Active Clients
Section titled “Identify Active Clients”-- Connect as SYSASMsqlplus / as sysasm
-- List all clients connected to a diskgroupSELECT c.instance_name, c.db_name, c.status, dg.name AS diskgroupFROM v$asm_client c, v$asm_diskgroup dgWHERE c.group_number = dg.group_numberAND dg.name = 'DATA';
-- Show file usage by clientSELECT c.instance_name, COUNT(*) AS open_filesFROM v$asm_client cGROUP BY c.instance_name;Check File Types in Diskgroup
Section titled “Check File Types in Diskgroup”-- File breakdown by typeSELECT type, COUNT(*) AS file_count, ROUND(SUM(bytes)/1024/1024/1024, 2) AS gbFROM v$asm_fileWHERE group_number = (SELECT group_number FROM v$asm_diskgroup WHERE name = 'DATA')GROUP BY typeORDER BY gb DESC;Cross-Reference Database Files
Section titled “Cross-Reference Database Files”-- From RDBMS instanceSELECT 'DATAFILE' AS type, name FROM v$datafile WHERE name LIKE '+DATA%'UNION ALLSELECT 'TEMPFILE', name FROM v$tempfile WHERE name LIKE '+DATA%'UNION ALLSELECT 'CONTROLFILE', name FROM v$controlfile WHERE name LIKE '+DATA%'UNION ALLSELECT 'REDOLOG', member FROM v$logfile WHERE member LIKE '+DATA%';Check Cluster Resources
Section titled “Check Cluster Resources”# Diskgroup CRS resource and dependenciescrsctl stat res -t -w "TYPE = ora.diskgroup.type"
# Database resources using diskgroupsrvctl config database -d PROD | grep -i diskgroup
# ACFS mount pointssrvctl status filesystemResolution Steps
Section titled “Resolution Steps”1. Identify and Stop All Database Clients
Section titled “1. Identify and Stop All Database Clients”# Stop all databases using the diskgroupfor db in $(srvctl config database); do DG_USE=$(srvctl config database -d $db | grep -i "Disk Groups") if echo "$DG_USE" | grep -q "DATA"; then srvctl stop database -d $db -stopoption immediate fidone
# Stop ACFS filesystemssrvctl stop filesystem -device /dev/asm/myvol1-2582. Dismount from Each ASM Instance
Section titled “2. Dismount from Each ASM Instance”-- On each ASM instance in clusterALTER DISKGROUP data DISMOUNT;
-- For RAC, dismount on all instances-- node1: ALTER DISKGROUP data DISMOUNT;-- node2: ALTER DISKGROUP data DISMOUNT;Or via srvctl:
srvctl stop diskgroup -diskgroup DATA -node "node1,node2"3. Force Dismount (Last Resort)
Section titled “3. Force Dismount (Last Resort)”If clients cannot be cleanly stopped, force dismount may be required. WARNING: This will cause I/O errors in active databases.
ALTER DISKGROUP data DISMOUNT FORCE;Use only when:
- Database instances have already crashed
- Diskgroup has hardware errors and must be released
- Clients are stale/orphaned (not actively writing)
4. Move Files Off Diskgroup First
Section titled “4. Move Files Off Diskgroup First”For permanent dismount/drop, relocate files first:
-- Move datafiles to another diskgroupALTER TABLESPACE users ADD DATAFILE '+DATA_NEW/PROD/users02.dbf' SIZE 10G;
ALTER DATABASE DATAFILE '+DATA/PROD/users01.dbf' OFFLINE;
-- Use RMAN BACKUP AS COPY to migrateRMAN> BACKUP AS COPY DATABASE FORMAT '+DATA_NEW';RMAN> SWITCH DATABASE TO COPY;
-- Move controlfilesSHUTDOWN IMMEDIATE;-- Update parameter file with new locationsALTER SYSTEM SET control_files='+DATA_NEW/PROD/control01.ctl' SCOPE=SPFILE;STARTUP MOUNT;RMAN> RESTORE CONTROLFILE FROM '+DATA/PROD/control01.ctl';
-- Move redo logsALTER DATABASE ADD LOGFILE GROUP 4 ('+DATA_NEW/PROD/redo04.log') SIZE 100M;ALTER DATABASE DROP LOGFILE GROUP 1;5. Check for Stale Lock Cleanup
Section titled “5. Check for Stale Lock Cleanup”After crashed instance, lock cleanup may be needed:
-- Verify no orphaned client metadataSELECT instance_name, db_name, status FROM v$asm_client;
-- Restart ASM to clear stale state (last resort)srvctl stop asm -node node1 -forcesrvctl start asm -node node1Common Scenarios
Section titled “Common Scenarios”Scenario 1: Cannot Dismount FRA
Section titled “Scenario 1: Cannot Dismount FRA”ALTER DISKGROUP fra DISMOUNT;ORA-15027: active use of diskgroup "FRA" precludes its dismountFix: Database is archiving here. Set LOG_ARCHIVE_DEST_n to another location, archive current log, then dismount.
Scenario 2: Cannot Drop Old Diskgroup After Migration
Section titled “Scenario 2: Cannot Drop Old Diskgroup After Migration”DROP DISKGROUP old_data INCLUDING CONTENTS;ORA-15027: active use of diskgroup "OLD_DATA" precludes its dismountFix: Verify all v$asm_client entries are stopped. Check v$asm_file for hidden files (ACFS, GG trails).
Scenario 3: ACFS Volume Active
Section titled “Scenario 3: ACFS Volume Active”ORA-15027: active use of diskgroup "ACFS_DG" precludes its dismountFix: Unmount filesystem first: umount /acfs_mount; srvctl stop filesystem -device /dev/asm/vol1-258
Sample Output
Section titled “Sample Output”SQL> ALTER DISKGROUP fra DISMOUNT;ALTER DISKGROUP fra DISMOUNT*ERROR at line 1:ORA-15032: not all alterations performedORA-15027: active use of diskgroup "FRA" precludes its dismount
SQL> SELECT instance_name, db_name, status FROM v$asm_client 2 WHERE group_number = (SELECT group_number FROM v$asm_diskgroup WHERE name='FRA');
INSTANCE_NAME DB_NAME STATUS---------------- ---------- ------------PROD1 PROD CONNECTEDPROD2 PROD CONNECTEDPROD database has files in FRA — must shut down or migrate before dismount.
Prevention Strategies
Section titled “Prevention Strategies”Pre-Maintenance Checklist
Section titled “Pre-Maintenance Checklist”- List all clients with
SELECT * FROM v$asm_client - List all file types with
SELECT type, COUNT(*) FROM v$asm_file GROUP BY type - Verify no scheduled jobs writing to diskgroup
- Schedule dismount during maintenance window
- Stop dependent ACFS filesystems explicitly
Documentation
Section titled “Documentation”- Keep a diskgroup → application mapping document
- Tag diskgroups by purpose (DATA, FRA, TEMP, REDO)
- Avoid mixing critical and non-critical files in same diskgroup
Use srvctl for Safe Operations
Section titled “Use srvctl for Safe Operations”# srvctl handles dependencies automaticallysrvctl stop diskgroup -diskgroup DATA -node node1Related Errors
Section titled “Related Errors”- ORA-15001: Diskgroup does not exist or is not mounted
- ORA-15032: Not all alterations performed
- ORA-15040: Diskgroup is incomplete
- ORA-15054: Disk in diskgroup does not exist
- ORA-15056: Additional error message
Troubleshooting Checklist
Section titled “Troubleshooting Checklist”- List all clients via
v$asm_client - Inventory files via
v$asm_fileby type - Check for ACFS filesystems on diskgroup
- Stop dependent databases first
- Stop ACFS filesystems before diskgroup dismount
- Use
srvctl stop diskgroupfor safe ordering - Avoid
DISMOUNT FORCEunless instances already down