dba_hist_tbspc_space_usage
Jun 10th, 2010 by yavor
Много полезно, за всички, които си пазят AWR snapshots за по-дълъг период от време. От тази таблица може да се изкара trend за нарастването на базата. Примерно по месеци изглеждат така:
-
SELECT tsu.snap_id, TO_CHAR(sn.mon, 'Mon.YYYY'), ROUND(SUM(tsu.tablespace_size * NVL(ts.blocksize, p.VALUE))/1024/1024/1024, 2) GB_size
-
FROM dba_hist_tbspc_space_usage tsu,
-
sys.ts$ ts,
-
v$parameter p,
-
(SELECT TRUNC(begin_interval_time, 'MONTH') Mon, MIN(snap_id) snap_id
-
FROM dba_hist_snapshot
-
GROUP BY TRUNC(begin_interval_time, 'MONTH')) sn
-
WHERE p.name = 'db_block_size'
-
AND tsu.tablespace_id = ts.ts#(+)
-
AND sn.snap_id = tsu.snap_id
-
GROUP BY tsu.snap_id, sn.mon
-
ORDER BY 1
Този SQL идва с няколко забележки:
- малко ми е тъпо размера на tablespace да се пази в блокове, а не байтове. Отне ми известно време да схвана какви са числата. Документацията не помага много ![]()
- ако в миналото е имало tablespace, който в последствие е drop-нат, се приема, че е бил с default-ния block size. Аз, лично не намерих друг начин
- още нещо леко тъпо: v$tablespace няма изведена колонка blocksize, докато dba_tablespaces няма ts#. Заради тази… хм… неконсистентност в поведението, предпочетох да използвам директно sys.ts$. На който не му харесва това, може да си ги join-не по tablespace_name
Не работи когато си на raw devices. Показва винаги едно и също число.