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
など。