1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
CREATE OR REPLACE Function TabCount(
p_owner In Varchar2,
p_tabname In Varchar2
) Return Number
Authid current_user
Is
l_Cnt Number;
Begin
Execute Immediate 'Select count(*) From '||p_owner||'.'||p_tabname Into l_Cnt;
Return l_Cnt;
End;
/
Select tablespace_name, count(*), Sum(rowCnt), Sum(Bytes), Count(RowCnt)
From (
Select t.owner, t.table_name, t.tablespace_name, s.bytes,
case t.rowCnt
When 0 Then Null
Else t.rowCnt
end RowCnt
From
(SELECT owner, table_name, tablespace_name, TabCount(owner, table_name) RowCnt
FROM DBA_TABLES
WHERE (owner, table_name) IN (SELECT owner, TABLE_NAME
FROM all_tab_columns
WHERE DATA_TYPE LIKE 'LONG%'
)
) t,
(SELECT owner, segment_name, Sum(bytes) Bytes
FROM dba_segments
Where SEGMENT_TYPE = 'TABLE'
Group by owner, segment_name
) s
Where t.owner = s.owner
And t.table_name = s.segment_name)
Group By tablespace_name
/ |