-- +----------------------------------------------------------------------------+ -- | Jeffrey M. Hunter | -- | jhunter@idevelopment.info | -- | www.idevelopment.info | -- |----------------------------------------------------------------------------| -- | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. | -- |----------------------------------------------------------------------------| -- | DATABASE : Oracle | -- | FILE : asm_files.sql | -- | CLASS : Automatic Storage Management | -- | PURPOSE : Provide a summary report of all files, file metadata, and | -- | volume information for all ASM disk groups customized for | -- | Oracle 11g and higher. | -- | NOTE : As with any code, ensure to test this script in a development | -- | environment before attempting to run it in production. | -- +----------------------------------------------------------------------------+ SET TERMOUT OFF; COLUMN current_instance NEW_VALUE current_instance NOPRINT; SELECT rpad(sys_context('USERENV', 'INSTANCE_NAME'), 17) current_instance FROM dual; SET TERMOUT ON; PROMPT PROMPT +------------------------------------------------------------------------+ PROMPT | Report : ASM Files | PROMPT | Instance : ¤t_instance | PROMPT +------------------------------------------------------------------------+ SET ECHO OFF SET FEEDBACK 6 SET HEADING ON SET LINESIZE 180 SET PAGESIZE 50000 SET TERMOUT ON SET TIMING OFF SET TRIMOUT ON SET TRIMSPOOL ON SET VERIFY OFF CLEAR COLUMNS CLEAR BREAKS CLEAR COMPUTES COLUMN full_path FORMAT a75 HEAD 'ASM File Name / Volume Name / Device Name' COLUMN system_created FORMAT a8 HEAD 'System|Created?' COLUMN bytes FORMAT 9,999,999,999,999 HEAD 'Bytes' COLUMN space FORMAT 9,999,999,999,999 HEAD 'Space' COLUMN type FORMAT a18 HEAD 'File Type' COLUMN redundancy FORMAT a12 HEAD 'Redundancy' COLUMN striped FORMAT a8 HEAD 'Striped' COLUMN creation_date FORMAT a20 HEAD 'Creation Date' COLUMN disk_group_name noprint BREAK ON report ON disk_group_name SKIP 1 COMPUTE sum LABEL "" OF bytes space ON disk_group_name COMPUTE sum LABEL "Grand Total: " OF bytes space ON report SELECT CONCAT('+' || db_files.disk_group_name, SYS_CONNECT_BY_PATH(db_files.alias_name, '/')) full_path , db_files.bytes , db_files.space , NVL(LPAD(db_files.type, 18), '') type , db_files.creation_date , db_files.disk_group_name , LPAD(db_files.system_created, 4) system_created FROM ( SELECT g.name disk_group_name , a.parent_index pindex , a.name alias_name , a.reference_index rindex , a.system_created system_created , f.bytes bytes , f.space space , f.type type , TO_CHAR(f.creation_date, 'DD-MON-YYYY HH24:MI:SS') creation_date FROM v$asm_file f RIGHT OUTER JOIN v$asm_alias a USING (group_number, file_number) JOIN v$asm_diskgroup g USING (group_number) ) db_files WHERE db_files.type IS NOT NULL START WITH (MOD(db_files.pindex, POWER(2, 24))) = 0 CONNECT BY PRIOR db_files.rindex = db_files.pindex UNION SELECT '+' || volume_files.disk_group_name || ' [' || volume_files.volume_name || '] ' || volume_files.volume_device full_path , volume_files.bytes , volume_files.space , NVL(LPAD(volume_files.type, 18), '') type , volume_files.creation_date , volume_files.disk_group_name , null FROM ( SELECT g.name disk_group_name , v.volume_name volume_name , v.volume_device volume_device , f.bytes bytes , f.space space , f.type type , TO_CHAR(f.creation_date, 'DD-MON-YYYY HH24:MI:SS') creation_date FROM v$asm_file f RIGHT OUTER JOIN v$asm_volume v USING (group_number, file_number) JOIN v$asm_diskgroup g USING (group_number) ) volume_files WHERE volume_files.type IS NOT NULL /