Oracleの表領域・データファイルのサイズを確認するSQL



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でした。