2026-03-12 20:23:15
This commit is contained in:
166
vg/schema_size_details.sql
Normal file
166
vg/schema_size_details.sql
Normal file
@@ -0,0 +1,166 @@
|
||||
@@header
|
||||
|
||||
/*
|
||||
*
|
||||
* Author : Vishal Gupta
|
||||
* Purpose : Display schema Object sizes
|
||||
* Compatibility :
|
||||
* Parameters : 1 - owner (% - wildchar, \ - escape char) , this could also be passed as OWNER.OBJECT_NAME
|
||||
* 2 - Object name (% - wildchar, \ - escape char)
|
||||
* 3 - Object Type (% - wildchar, \ - escape char)
|
||||
* 4 - Minimum SizeMB (Default 0 MB)
|
||||
* 5 - Tablespace ((% - wildchar, default value = %)
|
||||
*
|
||||
* Revision History:
|
||||
* ===================
|
||||
* Date Author Description
|
||||
* --------- ------------ -----------------------------------------------------
|
||||
* 25-Jul-16 Vishal Gupta Added tablespace as the input parameter
|
||||
* 02-SEP-14 Vishal Gupta Added object_name and object_type as input parameters
|
||||
* 23-May-13 Vishal Gupta Created
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/************************************
|
||||
* INPUT PARAMETERS
|
||||
************************************/
|
||||
UNDEFINE owner
|
||||
UNDEFINE object_name
|
||||
UNDEFINE object_type
|
||||
UNDEFINE min_size_mb
|
||||
UNDEFINE tbs
|
||||
|
||||
DEFINE owner="&&1"
|
||||
DEFINE object_name="&&2"
|
||||
DEFINE object_type="&&3"
|
||||
DEFINE min_size_mb="&&4"
|
||||
DEFINE tbs="&&5"
|
||||
|
||||
|
||||
COLUMN _owner NEW_VALUE owner NOPRINT
|
||||
COLUMN _object_name NEW_VALUE object_name NOPRINT
|
||||
COLUMN _object_type NEW_VALUE object_type NOPRINT
|
||||
COLUMN _min_size_mb NEW_VALUE min_size_mb NOPRINT
|
||||
COLUMN _tbs NEW_VALUE tbs NOPRINT
|
||||
|
||||
|
||||
set term off
|
||||
|
||||
SELECT UPPER(DECODE('&&owner','','%','&&owner')) "_owner"
|
||||
, UPPER(DECODE('&&object_name','','%','&&object_name')) "_object_name"
|
||||
, UPPER(DECODE('&&object_type','','%','&&object_type')) "_object_type"
|
||||
, DECODE('&&min_size_mb','','100','&&min_size_mb') "_min_size_mb"
|
||||
, DECODE('&&tbs','','%','&&tbs') "_tbs"
|
||||
FROM DUAL;
|
||||
|
||||
SELECT CASE
|
||||
WHEN INSTR('&&owner','.') != 0 THEN SUBSTR(UPPER('&&owner'),1,INSTR('&&owner','.')-1)
|
||||
ELSE DECODE(UPPER('&&owner'),'','%',UPPER('&&owner'))
|
||||
END "_owner"
|
||||
, CASE
|
||||
WHEN INSTR('&&owner','.') != 0 THEN SUBSTR(UPPER('&&owner'),INSTR('&&owner','.')+1)
|
||||
ELSE DECODE(UPPER('&&object_name'),'','%',UPPER('&&object_name'))
|
||||
END "_object_name"
|
||||
/*, CASE
|
||||
WHEN INSTR('&&owner','.') != 0 THEN DECODE(UPPER('&&object_name'),'','%',UPPER('&&object_name'))
|
||||
ELSE DECODE(UPPER('&&object_type'),'','%',UPPER('&&object_type'))
|
||||
END "_object_type"
|
||||
*/
|
||||
FROM DUAL;
|
||||
set term on
|
||||
|
||||
|
||||
PROMPT **************************************************
|
||||
PROMPT * Input Parameter
|
||||
PROMPT * - Owner = '&&owner'
|
||||
PROMPT * - Object Name = '&&object_name'
|
||||
PROMPT * - Object Type = '&&object_type'
|
||||
PROMPT * - Minimum SizeMB = '&&min_size_mb'
|
||||
PROMPT * - Tablesapce = '&&tbs'
|
||||
PROMPT **************************************************
|
||||
PROMPT
|
||||
PROMPT
|
||||
|
||||
PROMPT **************************************************
|
||||
PROMPT * Schema Sizes
|
||||
PROMPT **************************************************
|
||||
|
||||
COLUMN owner HEADING "SchemaOwner" FORMAT a20
|
||||
COLUMN "Size(GB)" HEADING "Size(GB)" FORMAT 999,999 JUSTIFY RIGHT
|
||||
|
||||
select owner
|
||||
, TO_CHAR(ROUND(SUM(bytes)/1024/1024/1024,2),'999,999,999.99') "Size(GB)"
|
||||
from dba_segments s
|
||||
where s.owner LIKE '&&OWNER'
|
||||
AND s.segment_name LIKE '&&OBJECT_NAME'
|
||||
AND s.segment_type LIKE '&&OBJECT_TYPE'
|
||||
AND s.tablespace_name LIKE '&&tbs'
|
||||
GROUP BY owner
|
||||
order by ROUND(SUM(bytes)/1024/1024/1024,2) desc
|
||||
;
|
||||
|
||||
|
||||
PROMPT
|
||||
PROMPT
|
||||
PROMPT **************************************************
|
||||
PROMPT * Schema Objects
|
||||
PROMPT **************************************************
|
||||
|
||||
COLUMN owner HEADING "SchemaOwner" FORMAT a20
|
||||
COLUMN segment_name HEADING "SegmentName" FORMAT a30
|
||||
COLUMN segment_type HEADING "SegmentType" FORMAT a15
|
||||
COLUMN segment_size HEADING "Total Size (MB)" FORMAT 999,999,999,999 JUSTIFY RIGHT
|
||||
COLUMN lob_size HEADING "Lob Size (MB)" FORMAT 999,999,999,999 JUSTIFY RIGHT
|
||||
COLUMN tablespace_name HEADING "TablespaceName" FORMAT a30
|
||||
|
||||
|
||||
SELECT ROUND(SUM(s.bytes)/power(1024,2)) segment_size
|
||||
, s.owner
|
||||
, DECODE(s.segment_type
|
||||
, 'LOBSEGMENT',l.table_name
|
||||
, 'LOBINDEX' ,l.index_name
|
||||
, s.segment_name
|
||||
) segment_name
|
||||
, DECODE( SUBSTR(s.segment_type,1,DECODE(INSTR(s.segment_type,' '),0,LENGTH(s.segment_type),INSTR(s.segment_type,' ')-1))
|
||||
, 'LOBSEGMENT','TABLE'
|
||||
, 'LOBINDEX' ,'INDEX'
|
||||
, SUBSTR(s.segment_type,1,DECODE(INSTR(s.segment_type,' '),0,LENGTH(s.segment_type),INSTR(s.segment_type,' ')-1))
|
||||
) segment_type
|
||||
, s.tablespace_name
|
||||
, ROUND(SUM(DECODE(s.segment_type
|
||||
, 'LOBSEGMENT',s.bytes
|
||||
, 'LOBINDEX' ,s.bytes
|
||||
, 0 ))/power(1024,2)) lob_size
|
||||
FROM dba_segments s
|
||||
LEFT OUTER JOIN dba_lobs l ON l.owner = s.owner AND l.segment_name = s.segment_name AND (s.segment_type = 'LOBSEGMENT' or s.segment_type = 'LOBINDEX')
|
||||
WHERE s.owner LIKE '&&OWNER'
|
||||
AND DECODE(s.segment_type
|
||||
, 'LOBSEGMENT',l.table_name
|
||||
, 'LOBINDEX' ,l.index_name
|
||||
, s.segment_name
|
||||
) LIKE '&&OBJECT_NAME'
|
||||
AND DECODE( SUBSTR(s.segment_type,1,DECODE(INSTR(s.segment_type,' '),0,LENGTH(s.segment_type),INSTR(s.segment_type,' ')-1))
|
||||
, 'LOBSEGMENT','TABLE'
|
||||
, 'LOBINDEX' ,'INDEX'
|
||||
, SUBSTR(s.segment_type,1,DECODE(INSTR(s.segment_type,' '),0,LENGTH(s.segment_type),INSTR(s.segment_type,' ')-1))
|
||||
) LIKE '&&OBJECT_TYPE'
|
||||
AND s.tablespace_name LIKE '&&tbs'
|
||||
GROUP BY s.owner
|
||||
, DECODE(s.segment_type
|
||||
, 'LOBSEGMENT',l.table_name
|
||||
, 'LOBINDEX' ,l.index_name
|
||||
, s.segment_name
|
||||
)
|
||||
, DECODE( SUBSTR(s.segment_type,1,DECODE(INSTR(s.segment_type,' '),0,LENGTH(s.segment_type),INSTR(s.segment_type,' ')-1))
|
||||
, 'LOBSEGMENT','TABLE'
|
||||
, 'LOBINDEX' ,'INDEX'
|
||||
, SUBSTR(s.segment_type,1,DECODE(INSTR(s.segment_type,' '),0,LENGTH(s.segment_type),INSTR(s.segment_type,' ')-1))
|
||||
)
|
||||
, s.tablespace_name
|
||||
HAVING ROUND(SUM(s.bytes)/power(1024,2)) > &&min_size_mb
|
||||
ORDER BY segment_size desc
|
||||
;
|
||||
|
||||
@@footer
|
||||
Reference in New Issue
Block a user