How to calculate the actual size of a table. Как вычислить размер таблицы в базе данных Oracle
Иногда возникает необходимость вычислить размер таблицы в БД Oracle.
Как это сделать?
1. Скомпилируйте следующую функцию в своей БД:
CREATE OR REPLACE FUNCTION
SYS.RAZMER_TABLICY_RAW(pNazvanie in varchar, pOwner in varchar2)
return number
is
val number(16);
sz number(16);
begin
sz := 0;
--Определим
размер сегментов данных таблицы
--Calculate
size of table data segments
select
sum(t.bytes) into val
from
dba_segments t
where
t.segment_name = upper(pNazvanie)
and
t.owner = upper(pOwner);
dbms_output.put_line('size of table data segments = ' || val);
sz := sz + nvl(val,0);
--Определим
размер сегментов индексов таблицы
--Calculate
size of table indexes segments
select
sum(s.bytes) into val
from
dba_indexes t
inner join
dba_segments s
on
t.index_name = s.segment_name
where
t.table_name = upper(pNazvanie)
and
t.owner = upper(pOwner);
dbms_output.put_line('size of table indexes segments = ' || val);
sz := sz + nvl(val,0);
--Определим
размер blob-полей в таблице
--Calculate
size of table blob segments
select
sum(s.bytes) into val
from
dba_lobs t
inner join
dba_segments s on t.segment_name = s.segment_name
where
t.table_name = upper(pNazvanie)
and
t.owner = upper(pOwner);
dbms_output.put_line('size of table blob segments = ' || val);
sz := sz + nvl(val,0);
return sz;
end razmer_tablicy_raw;
2. Выполните следующий именованный блок:
pnazvanie - название таблицы
powner - название схемы-владельца таблицы
declare
result number;
begin
--Call
the function
result :=
sys.razmer_tablicy_raw(pnazvanie => 'recon_account_oldstate',
powner =>
'dev_oim');
dbms_output.put_line('table size = ' || result || ' bytes');
dbms_output.put_line('table size = ' || result/1024 || ' kb');
dbms_output.put_line('table size = ' || result/1024/1024 || ' Mb');
end;
Комментариев нет:
Отправить комментарий