Oracleの表領域のサイズを確認するSQL(表領域単位)
表領域単位
Oracleの表領域の空きが今どれくらいあるか?
EMを使えば可視化されているのでわかりやすいのですが、いちいち面倒です。やはりSQLで参照したいですね。
まずは、表領域単位で容量・空き容量・使用率を取得します。
Oracleの表領域の容量は「DBA_DATA_FILES」の「BYTES」で取得できます。空き領域は「DBA_FREE_SPACE」の「BYTES」で取得できます。
-- 表領域を表領域単位で確認する SELECT A.TABLESPACE_NAME 表領域 , ROUND(SUM(BYTES) / 1024 / 1024, 1) "ファイル容量(MB)" , ROUND(SUM(BYTES - SUM_BYTES) / 1024 / 1024, 1) "使用容量(MB)" , ROUND(SUM(SUM_BYTES) / 1024 / 1024, 1) "空き容量(MB)" , ROUND((SUM(BYTES - SUM_BYTES) / 1024) / (SUM(BYTES) / 1024) * 100, 1) "使用率(%)" FROM DBA_DATA_FILES A LEFT JOIN ( SELECT TABLESPACE_NAME , FILE_ID , NVL(SUM(BYTES), 0) SUM_BYTES FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME , FILE_ID ) B ON A.TABLESPACE_NAME = B.TABLESPACE_NAME AND A.FILE_ID = B.FILE_ID GROUP BY A.TABLESPACE_NAME ORDER BY 1;
表領域 | ファイル容量
(MB) |
使用容量
(MB) |
空き容量
(MB) |
使用率
(%) |
EXAMPLE | 100 | 22.8 | 77.2 | 22.8 |
IDXSP | 3400 | 3193.5 | 206.5 | 93.9 |
TABSP | 3300 | 2885.6 | 424.4 | 87.4 |
Oracleの表領域のサイズを確認するSQL(データファイ単位)
データファイル単位
次は、データファイル単位の容量です。
表領域単位だとぼやけてしまうので、ファイル単位で細かく領域を管理します。表領域のデータファイル単位で容量、空き領域、使用率をもとめます。
Oracleの表領域の容量は「DBA_DATA_FILES」の「BYTES」で取得できます。空き領域は「DBA_FREE_SPACE」の「BYTES」で取得できます。
データファイルは「FILE_ID」なので、「FILE_ID」毎にサイズを集計しました。
-- 表領域をデータファイル単位で確認 SELECT A.TABLESPACE_NAME 表領域 , FILE_NAME データファイル , ROUND(BYTES / 1024 / 1024, 1) "ファイル容量(MB)" , ROUND((BYTES - NVL(SUM_BYTES, 0)) / 1024 / 1024, 1) "使用容量(MB)" , ROUND(NVL(SUM_BYTES, 0) / 1024 / 1024, 1) "空き容量(MB)" , ROUND(((BYTES - NVL(SUM_BYTES, 0)) / 1024) / (BYTES / 1024) * 100, 1) "使用率(%)" FROM DBA_DATA_FILES A LEFT JOIN ( SELECT TABLESPACE_NAME , FILE_ID , SUM(BYTES) SUM_BYTES FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME , FILE_ID ) B ON A.TABLESPACE_NAME = B.TABLESPACE_NAME AND A.FILE_ID = B.FILE_ID ORDER BY 1, 2;
表領域 | データファイル | ファイル
容量(MB) |
使用容量(MB) | 空き容量(MB) | 使用率(%) |
EXAMPLE | D:\ORADT\EXAMPLE01.DBF | 100 | 22.8 | 77.2 | 22.8 |
IDXSP | D:\ORADT\IDXSP.DBF | 3400 | 3193.5 | 206.5 | 93.9 |
TABSP | D:\ORADT\TABSP.DBF | 3300 | 2885.6 | 414.4 | 87.4 |
以上、Oracleの表領域とデータファイルのサイズを確認するSQLでした。
コメント