Oracle で各表領域の空き領域と断片化情報を表示する方法
Oracle データベースの各表領域ごとの空き領域と断片化情報を表示する方法を記載します。この SQL は SYS ユーザーあるいは SYSTEM ユーザーで実行する必要があります。Oracle8i、Oracle9i、Oracle10g で動作確認済みです。COMP SUM OF nfrags totsiz avasiz ON REPORT BREAK ON REPORT SET PAGES 100 COL tsname FORMAT a16 JUSTIFY c HEADING 'Tablespace' COL nfrags FORMAT 999,990 JUSTIFY c HEADING 'Free|Frags' COL mxfrag FORMAT 999,999 JUSTIFY c HEADING 'Largest|Frag (MB)' COL totsiz FORMAT 999,999 JUSTIFY c HEADING 'Total|(MB)' COL avasiz FORMAT 999,999 JUSTIFY c HEADING 'Available|(MB)' COL pctusd FORMAT 990 JUSTIFY c HEADING 'Pct|Used' SELECT TOTAL.TABLESPACE_NAME tsname, D nfrags, C / 1024 / 1024 mxfrag, A / 1024 / 1024 totsiz, B / 1024 / 1024 avasiz, (1 - NVL(B,0) / A) * 100 pctusd FROM (SELECT SUM(bytes) A, tablespace_name FROM dba_data_files GROUP BY tablespace_name) TOTAL, (SELECT SUM(bytes) B, MAX(bytes) C, COUNT(bytes) D, tablespace_name FROM dba_free_space GROUP BY tablespace_name) FREE WHERE TOTAL.TABLESPACE_NAME = FREE.TABLESPACE_NAME (+);
結果として表示される各列はそれぞれ次のようになります。
Tablespace : 表領域名
Free Frags : 空き領域における断片化数
Largest Frag (MB) : 空き領域が断片化している場合、その最大サイズ(MB)
Total (MB) : 表領域が属するデータファイルのサイズ(MB)
Available (MB) : 表領域における使用可能エクステントのサイズ(MB)
PctUsed : 表領域における使用率(%)