「Oracle21c」Oracle表領域のサイズ使用状況を確認する方法
環境
Windows 11 Pro 21H2 64bit
Oracle Database 21c Express Edition Release 21.0.0.0.0
SQL構文
SELECT AA.TABLESPACE_NAME "表領域" ,ROUND(BB.SS /1024/1024,1) "ファイル容量(MB)" ,ROUND(CC.SS /1024/1024,1) "空き容量(MB)" , DECODE(BB.SS-CC.SS,NULL,100,ROUND((BB.SS-CC.SS)/BB.SS * 100,2)) "使用率" FROM DBA_TABLESPACES AA LEFT OUTER JOIN ( SELECT SUM(BYTES) SS,TABLESPACE_NAME FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME ) BB ON AA.TABLESPACE_NAME = BB.TABLESPACE_NAME LEFT OUTER JOIN ( SELECT SUM(BYTES) SS,TABLESPACE_NAME FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME ORDER BY TABLESPACE_NAME ) CC ON AA.TABLESPACE_NAME = CC.TABLESPACE_NAME ORDER BY BB.SS DESC NULLS LAST;
説明
DBA_TABLESPACES 表領域の情報のテーブル DBA_DATA_FILES 表領域毎のサイズのテーブル DBA_FREE_SPACE 表領域毎の空き情報のテーブル
Oracleの表領域の容量は「DBA_DATA_FILES」の「BYTES」で取得します。
空き領域は「DBA_FREE_SPACE」の「BYTES」で取得します。
操作例
SQL> COLUMN 表領域 FORMAT A30 SQL> COLUMN ファイル容量(MB) FORMAT "9999999990" SQL> COLUMN 空き容量(MB) FORMAT "9999999990" SQL> COLUMN 使用率 FORMAT "990" SQL> SELECT 2 AA.TABLESPACE_NAME "表領域" 3 ,ROUND(BB.SS /1024/1024,1) "ファイル容量(MB)" 4 ,ROUND(CC.SS /1024/1024,1) "空き容量(MB)" 5 , DECODE(BB.SS-CC.SS,NULL,100,ROUND((BB.SS-CC.SS)/BB.SS * 100,2)) "使用率" 6 FROM 7 DBA_TABLESPACES AA 8 LEFT OUTER JOIN 9 ( 10 SELECT SUM(BYTES) SS,TABLESPACE_NAME FROM DBA_DATA_FILES 11 GROUP BY TABLESPACE_NAME 12 ) BB 13 ON AA.TABLESPACE_NAME = BB.TABLESPACE_NAME 14 LEFT OUTER JOIN 15 ( 16 SELECT SUM(BYTES) SS,TABLESPACE_NAME FROM DBA_FREE_SPACE 17 GROUP BY TABLESPACE_NAME ORDER BY TABLESPACE_NAME 18 ) CC 19 ON AA.TABLESPACE_NAME = CC.TABLESPACE_NAME 20 ORDER BY BB.SS DESC NULLS LAST;
実行結果
表領域 ファイル容量(MB) 空き容量(MB) 使用率 ------------------------------ ---------------- ------------ ------ SYSTEM 1340 1 100 SYSAUX 650 38 94 CFTTABSPA 160 158 1 UNDOTBS1 110 97 12 USERS 5 2 54 TEMP 100 6行が選択されました。