REferences
selectsegment_name table_name,
sum(bytes)/(1024*1024) table_size_meg
from user_extents
where segment_type='TABLE'
and segment_name = '&table_name'
group by segment_name;
Read more on what all to remember while getting the size of a table. Click here
Create your own function for the purpose:
CREATE OR REPLACE FUNCTION get_table_size
(t_table_name VARCHAR2)RETURN NUMBER IS
l_size NUMBER;
BEGIN
SELECT sum(bytes)/(1024*1024)
INTO l_size
FROM user_extents
WHERE segment_type='TABLE'
AND segment_name = t_table_name;
RETURN l_size;EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/
Example:
SELECT get_table_size('EMP') Table_Size from dual;
Result:
Table_Size
0.0625
sum(bytes)/(1024*1024) table_size_meg
from user_extents
where segment_type='TABLE'
and segment_name = '&table_name'
group by segment_name;
Read more on what all to remember while getting the size of a table. Click here
Create your own function for the purpose:
CREATE OR REPLACE FUNCTION get_table_size
(t_table_name VARCHAR2)RETURN NUMBER IS
l_size NUMBER;
BEGIN
SELECT sum(bytes)/(1024*1024)
INTO l_size
FROM user_extents
WHERE segment_type='TABLE'
AND segment_name = t_table_name;
RETURN l_size;EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/
Example:
SELECT get_table_size('EMP') Table_Size from dual;
Result:
Table_Size
0.0625
SELECT
owner, table_name, TRUNC(sum(bytes)/1024/1024/1024) GBFROM
(SELECT segment_name table_name, owner, bytesFROM dba_segmentsWHERE segment_type in ('TABLE','TABLE PARTITION')
UNION ALL
SELECT i.table_name, i.owner, s.bytesFROM dba_indexes i, dba_segments sWHERE s.segment_name = i.index_nameAND s.owner = i.ownerAND s.segment_type in ('INDEX','INDEX PARTITION')
UNION ALL
SELECT l.table_name, l.owner, s.bytesFROM dba_lobs l, dba_segments sWHERE s.segment_name = l.segment_nameAND s.owner = l.ownerAND s.segment_type IN ('LOBSEGMENT','LOB PARTITION')
UNION ALL
SELECT l.table_name, l.owner, s.bytesFROM dba_lobs l, dba_segments sWHERE s.segment_name = l.index_nameAND s.owner = l.ownerAND s.segment_type = 'LOBINDEX')
---WHERE owner in UPPER('&owner')
GROUP BY table_name, ownerHAVING SUM(bytes)/1024/1024 > 10 /* Ignore really small tables */
ORDER BY SUM(bytes) desc
owner, table_name, TRUNC(sum(bytes)/1024/1024/1024) GBFROM
(SELECT segment_name table_name, owner, bytesFROM dba_segmentsWHERE segment_type in ('TABLE','TABLE PARTITION')
UNION ALL
SELECT i.table_name, i.owner, s.bytesFROM dba_indexes i, dba_segments sWHERE s.segment_name = i.index_nameAND s.owner = i.ownerAND s.segment_type in ('INDEX','INDEX PARTITION')
UNION ALL
SELECT l.table_name, l.owner, s.bytesFROM dba_lobs l, dba_segments sWHERE s.segment_name = l.segment_nameAND s.owner = l.ownerAND s.segment_type IN ('LOBSEGMENT','LOB PARTITION')
UNION ALL
SELECT l.table_name, l.owner, s.bytesFROM dba_lobs l, dba_segments sWHERE s.segment_name = l.index_nameAND s.owner = l.ownerAND s.segment_type = 'LOBINDEX')
---WHERE owner in UPPER('&owner')
GROUP BY table_name, ownerHAVING SUM(bytes)/1024/1024 > 10 /* Ignore really small tables */
ORDER BY SUM(bytes) desc
-----------------------------Another Approach ----------------------------------------------
select partition_name,num_rows from dba_tab_partitions where table_name='TABLE_NAME';
select table_name, num_rows from DBA_TABLES where table_name = 'DOCUMENT_INDEX_VALUE';
select owner, table_name, round((num_rows*avg_row_len)/(1024*1024)) MB
from all_tables
where table_name='DOCUMENT_INDEX_VALUE';
from all_tables
where table_name='DOCUMENT_INDEX_VALUE';
No comments:
Post a Comment