четверг, 5 февраля 2015 г.

Размер БД Oracle с разбивкой по сегментам

Расчет размера БД Oracle:

select
    sum(bytes)
from
    DBA_EXTENTS
where
    owner=<OWNER_NAME>
;

Размер БД с разбивкой по именам сегментов и их типов (таблицы, индексы и т.д.):
Примечание: в академических целях расписано подробно.

select
    SEGMENT_NAME,
    SEGMENT_TYPE,
    sum(bytes)
from
    DBA_SEGMENTS
where
    owner=<OWNER_NAME>
group by
    SEGMENT_NAME, SEGMENT_TYPE
;

Размер БД по таблицам (с учетом индексов и LOB-сегментов):

select TABLE_NAME, sum(bytes)/1048576 as SIZE_MB from
(
select t.TABLE_NAME, s.bytes
from user_segments s join user_tables t on t.TABLE_NAME=s.SEGMENT_NAME
where s.SEGMENT_TYPE = 'TABLE'
union all
select t.TABLE_NAME, s.bytes
from user_segments s join user_indexes t on t.INDEX_NAME=s.SEGMENT_NAME
where s.SEGMENT_TYPE = 'INDEX'
union all
select t.TABLE_NAME, s.bytes
from user_segments s join user_indexes t on t.INDEX_NAME=s.SEGMENT_NAME
where s.SEGMENT_TYPE = 'LOBINDEX'
union all
select t.TABLE_NAME, s.bytes
from user_segments s join user_lobs t on t.SEGMENT_NAME=s.SEGMENT_NAME
where s.SEGMENT_TYPE = 'LOBSEGMENT'
)
group by TABLE_NAME
order by sum(bytes) desc
;



По мотивам.

Комментариев нет:

Архив