かきスタンプ

福岡でフリーランスの物流系のエンジニアやってます。

Oracle:表領域ごとの使用量、使用率、空き容量を表示

Oracleにて、表領域ごとの使用量、使用率、空き容量を表示するSQLを書いてみた。

SQL

select 
    DBA_DATA_FILES.TABLESPACE_NAME
   ,min(DBA_DATA_FILES.BYTES)/1024/1024  as  "現サイズ(MB)"
   ,round(min(DBA_DATA_FILES.BYTES)/(1024*1024) - sum(DBA_FREE_SPACE.BYTES)/ (1024 *1024),2)  as  "使用量(MB)"
   ,round( (min(DBA_DATA_FILES.BYTES)/(1024 *1024) - sum(DBA_FREE_SPACE.BYTES)/(1024 *1024))/ (min(DBA_DATA_FILES.BYTES)/1024/1024) *100,2)  as  "使用率(%)"
   ,round(sum(DBA_FREE_SPACE.BYTES)/(1024 *1024),2) "空き容量(MB)"
from 
    DBA_DATA_FILES
   ,DBA_FREE_SPACE
where  1=1
  and  DBA_DATA_FILES.FILE_ID = DBA_FREE_SPACE.FILE_ID
group by 
    DBA_DATA_FILES.TABLESPACE_NAME
order by 1

実行結果例

NAME SIZE(MB) 使用量(MB) 使用率(%) 空き(MB)
TABLESPACE01 4103.3 2899.2 70.66 1204
TABLESPACE02 730 676.5 92.68 53.44
TABLESPACE03 370 361.3 97.65 8.69

 

SQL plusで実行したい場合は、1行あたりの表示文字数を変更。

 set linesize 500

など。