Дисковое пространство Oracle, используемое таблицей - PullRequest
2 голосов
/ 17 сентября 2010

У меня есть таблица в базе данных Oracle, которая получает пару миллионов новых строк каждый месяц. В каждой строке есть столбец, в котором указана дата его создания.

Я бы хотел выполнить запрос, который увеличивает объем дискового пространства за последние 6 месяцев. Другими словами, результатом будет таблица с двумя столбцами, где в каждой строке будет указано название месяца и дисковое пространство, использованное в течение этого месяца.

Спасибо

Ответы [ 2 ]

4 голосов
/ 17 сентября 2010

В этой статье описан метод получения таблицы роста: http://www.dba -oracle.com / t_table_growth_reports.htm

column "Percent of Total Disk Usage" justify right format 999.99
column "Space Used (MB)" justify right format 9,999,999.99
column "Total Object Size (MB)" justify right format 9,999,999.99
set linesize 150
set pages 80
set feedback off

select * from (select to_char(end_interval_time, 'MM/DD/YY') mydate, sum(space_used_delta) / 1024 / 1024 "Space used (MB)", avg(c.bytes) / 1024 / 1024 "Total Object Size (MB)", 
round(sum(space_used_delta) / sum(c.bytes) * 100, 2) "Percent of Total Disk Usage"
from 
   dba_hist_snapshot sn, 
   dba_hist_seg_stat a, 
   dba_objects b, 
   dba_segments c
where begin_interval_time > trunc(sysdate) - &days_back
and sn.snap_id = a.snap_id
and b.object_id = a.obj#
and b.owner = c.owner
and b.object_name = c.segment_name
and c.segment_name = '&segment_name'
group by to_char(end_interval_time, 'MM/YY'))
order by to_date(mydate, 'MM/YY');
2 голосов
/ 17 сентября 2010

DBA_TABLES (или эквивалент) дает AVG_ROW_LEN, так что вы можете просто умножить это на количество строк, созданных в месяц.аналогично существующим строкам.Если у вас есть куча исторических данных, которые были «маленькими» (например, 50 байт), но новые строки больше (150 байт), то оценки будут слишком низкими.

Кроме того, как цифры обновленияв вещи?Если строка начинается с 50 байтов и увеличивается до 150 через два месяца, как вы учитываете эти 100 байтов?

Наконец, таблицы не растут для каждой вставки строки.Время от времени выделенное пространство заполняется, и оно уходит и выделяет другой кусок.В зависимости от настроек таблицы следующий блок может составлять, например, 50% от существующего размера таблицы.Таким образом, вы можете физически не расти в течение трех месяцев, а затем сделать огромный скачок, а затем не расти еще шесть месяцев.

...