Размер занимаемого таблицей табличного пространства можно посмотреть в представлении dba_extents с помощью следующего запроса:
SELECT owner, segment_name, segment_type,tablespace_name, ROUND(SUM (BYTES) / 1024 / 1024) "SIZE (MB)", SUM (blocks) blocks, COUNT (*) extents FROM dba_extents WHERE owner = ‘HR’ AND segment_name = 'EMPLOYEES' AND segment_type = ‘TABLE’ GROUP BY owner, segment_name, segment_type, tablespace_name
Размер таблицы так же можно посмотреть и в представлении dba_extents:
SELECT a.owner "Схема", a.table_name "Таблица", b.bytes "Размер (Мб)", TRUNC((a.blocks * 100) / b.blocks) "Занято(%)", b.extents "Экстентов" FROM dba_tables a, ( SELECT owner, segment_name, sum(bytes)/1024/1024 bytes, sum(blocks) blocks, count(*) extents FROM dba_extents WHERE segment_type = 'TABLE' GROUP BY owner, segment_name ) b WHERE a.owner = 'HR' AND a.table_name = 'EMPLOYEES' AND a.owner = b.owner AND a.table_name = b.segment_name
Эти два последние запроса можно использовать и для определения размера схемы. Достаточно убрать только лишние столбцы из GROUP BY и WHERE.
Использование пакета sys.dbms_space то же даёт представление о размере таблицы:
SET ECHO OFF; SET SERVEROUTPUT ON; DECLARE var1 number; var2 number; var3 number; var4 number; var5 number; var6 number; var7 number; BEGIN sys.dbms_space.unused_space('HR', 'EMPLOYEES', 'TABLE', var1, var2, var3, var4, var5, var6, var7); dbms_output.put_line('Всего блоков в сегменте = ' || var1); dbms_output.put_line('Всего байт в сегменте = ' || var2); dbms_output.put_line('Неиспользованных блоков = ' || var3); dbms_output.put_line('Неиспользованных байт = ' || var4); dbms_output.put_line('Номер файла последнего экстента, который содержит данные = ' || var5); dbms_output.put_line('Номер блока последнего экстента, который содержит данные = ' || var6); dbms_output.put_line('Последний блок в пределах экстента, который содержит данные = ' || var7); end; / SET ECHO ON;