Oracle 21c SQL構文で表領域のサイズを確認する

環境
OS windows11 pro 64bit
Oracle Database 21c Express Edition

説明
Oracleの表領域の容量は「DBA_DATA_FILES」の「BYTES」で取得します。
空き領域は「DBA_FREE_SPACE」の「BYTES」で取得します。

SQL構文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT
S.TABLESPACE_NAME 表領域
, ROUND(SUM(BYTES) / 1024 / 1024, 1) "ファイル容量"
, ROUND(SUM(BYTES - SUM_BYTES) / 1024 / 1024, 1) "使用容量"
, ROUND(SUM(SUM_BYTES) / 1024 / 1024, 1) "空き容量"
FROM
DBA_DATA_FILES S
LEFT JOIN  (
SELECT
TABLESPACE_NAME
, FILE_ID
, NVL(SUM(BYTES), 0) SUM_BYTES
FROM
DBA_FREE_SPACE
GROUP BY
TABLESPACE_NAME
, FILE_ID
) T
ON S.TABLESPACE_NAME = T.TABLESPACE_NAME
AND S.FILE_ID = T.FILE_ID
GROUP BY
S.TABLESPACE_NAME
ORDER BY
1;
SELECT S.TABLESPACE_NAME 表領域 , ROUND(SUM(BYTES) / 1024 / 1024, 1) "ファイル容量" , ROUND(SUM(BYTES - SUM_BYTES) / 1024 / 1024, 1) "使用容量" , ROUND(SUM(SUM_BYTES) / 1024 / 1024, 1) "空き容量" FROM DBA_DATA_FILES S LEFT JOIN  ( SELECT TABLESPACE_NAME , FILE_ID , NVL(SUM(BYTES), 0) SUM_BYTES FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME , FILE_ID ) T ON S.TABLESPACE_NAME = T.TABLESPACE_NAME AND S.FILE_ID = T.FILE_ID GROUP BY S.TABLESPACE_NAME ORDER BY 1;
SELECT
   S.TABLESPACE_NAME 表領域
  , ROUND(SUM(BYTES) / 1024 / 1024, 1) "ファイル容量"
  , ROUND(SUM(BYTES - SUM_BYTES) / 1024 / 1024, 1) "使用容量"
  , ROUND(SUM(SUM_BYTES) / 1024 / 1024, 1) "空き容量"
FROM
  DBA_DATA_FILES S
  LEFT JOIN  ( 
    SELECT
      TABLESPACE_NAME
      , FILE_ID
      , NVL(SUM(BYTES), 0) SUM_BYTES
    FROM
      DBA_FREE_SPACE 
    GROUP BY
      TABLESPACE_NAME
      , FILE_ID
  ) T 
    ON  S.TABLESPACE_NAME = T.TABLESPACE_NAME 
    AND S.FILE_ID = T.FILE_ID 
GROUP BY
  S.TABLESPACE_NAME 
ORDER BY
  1;

実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
表領域 ファイル容量 使用容量 空き容量
TABSP 4300      3885.6   424.4
表領域 ファイル容量 使用容量 空き容量 TABSP 4300      3885.6   424.4
表領域  ファイル容量 使用容量 空き容量
TABSP   4300      3885.6   424.4

 

Oracle 21c

Posted by arkgame