全表領域のサイズやら使用率やらを求めよう。あとテーブル関係
はい、タイトル通り全表領域の現サイズ、使用量、使用率、空き容量をぱっと出すSQLを
以下のサイトで見つけんたんでメモ。
TechWiki iTakahiro(takaBSD) - Oracle
んじゃあ、それを書きますね。
SQL> select a.TABLESPACE_NAME,
min(a.BYTES)/1024/1024 "現サイズ(MB)",
round(min(a.BYTES)/(1024*1024) - sum(b.BYTES)/(1024*1024),2) "使用量(MB)",
round*1/
(min(a.BYTES)/1024/1024)*100,2) "使用率(%)",
round(sum(b.BYTES)/(1024*1024),2) "空き容量(MB)"
from dba_data_files a, dba_free_space b
where a.FILE_ID = b.FILE_ID
group by a.TABLESPACE_NAME;
TABLESPACE_NAME 現サイズ(MB) 使用量(MB) 使用率(%) 空き容量(MB)
------------------------------ ------------ ---------- ---------- ------------
USER1 1024 21.69 2.12 1002.31
USER2 1024 25.88 2.53 998.13
USER3 1024 20.31 1.98 1003.69
がつっと書きましたんで説明します。
現サイズはdba_data_filesという表領域からBYTESというデータファイルサイズの最小値を
選択しています。
空き容量はdba_free_spaceという表領域からBYTESというデータファイルの残りサイズの
合計値を選択しています。
ここまでは当たり前のことを言ってます私。
でまあ、この現サイズと空き容量を使って、使用量と使用率を求めます。
使用量=(現サイズ-空き容量)を2桁に四捨五入したもの
使用率=*2×100を2桁に四捨五入したもの
となります。てか、これもなんか当たり前っちゃー当たり前なんだよな。
以下おまけ
すべてのテーブルを表示
SQL> SELECT owner,table_name,tablespace_name
FROM all_tables ORDER BY tablespace_name, table_name;
OWNER TABLE_NAME
------------------------------ ------------------------------
TABLESPACE_NAME
------------------------------
自分が所有するテーブルを表示する。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------