“Holy space usage, DBAtman!”
OK, So now you have a lot of databases on same DG, and don’t know how much of DG is being used by each database?
Here is something that may help you:
@asm_usage.sql
-- aka asm-db.sql set pages 350 timing on col gname form a10 col dbname form a10 col file_type form a16 break on gname skip 2 on dbname skip 1 compute sum label total_db of gb on dbname compute sum label total_diskg of gb on gname SELECT gname, dbname, file_type, round(SUM(space)/1024/1024) mb, round(SUM(space)/1024/1024/1024) gb, COUNT(*) "#FILES" FROM ( SELECT gname, regexp_substr(full_alias_path, '[[:alnum:]_]*',1,4) dbname, file_type, space, aname, system_created, alias_directory FROM ( SELECT concat('+'||gname, sys_connect_by_path(aname, '/')) full_alias_path, system_created, alias_directory, file_type, space, level, gname, aname FROM ( SELECT b.name gname, a.parent_index pindex, a.name aname, a.reference_index rindex , a.system_created, a.alias_directory, c.type file_type, c.space FROM v$asm_alias a, v$asm_diskgroup b, v$asm_file c WHERE a.group_number = b.group_number AND a.group_number = c.group_number(+) AND a.file_number = c.file_number(+) AND a.file_incarnation = c.incarnation(+) ) START WITH (mod(pindex, power(2, 24))) = 0 AND rindex IN ( SELECT a.reference_index FROM v$asm_alias a, v$asm_diskgroup b WHERE a.group_number = b.group_number AND ( mod(a.parent_index, power(2, 24))) = 0 ) CONNECT BY prior rindex = pindex ) WHERE NOT file_type IS NULL and system_created = 'Y' ) GROUP BY gname, dbname, file_type ORDER BY gname, dbname, file_type /
Continue reading “Shared Diskgroup for Several Databases: How much each Database is really using?”