プロが教える店舗&オフィスのセキュリティ対策術

Oracle初心者です。
DBの全容量や今利用している容量(データが蓄積された分)や
残ってる容量などを確認したいのですが、
どのような方法が適切なのでしょうか?

ネットなどで見ても、今ひとつよく分からなかったので
質問させて頂きました。よろしくお願いします。

A 回答 (1件)

DBの容量は、意外と分かりやすいものです



でも、Enterprise ManagerなどのGUIをつかよりも、
SQL を使ってコマンドで調べてみましょう

◆ お答えします

まず、DBのデータは、ファイルに格納されています

ASMのケースもありますが、まずは、通常のファイルシステムの
場合でお答えします


DB容量は、

[______________________________________]
まず、このように全部で格納でいるファイルを作ります。
そのファイルを、データファイル といいます。

そのデータファイルをまとめた入れ物が
テーブルスペースといいます。日本語では、表領域です。

そして、その表領域に、テーブルを作成して、行を格納します

[■■■■■■__________________________]
このように格納されます。(イメージ図です)

この時、2つの尺度があります。

1つ目は、
データファイルがまとまった表領域のサイズがどれくらいで、
その内、どれくらの割合を使われているか

*これは、あとどれくらいで満杯になるかが分かります

[■■■■■■__________________________]
であれば、30%ぐらいでしょうか・・・

2つ目は、
データファイルがまとまった表領域の中で
既に使用済みのテーブルの、空き具合は、どうなっているのか?

*これは、どれくらい、無駄に使っているのかが分かります

実際の現場では、1つ目の確認だけをやれば
まず大丈夫です


◆ では、実際にやってみましょう

データファイルがまとまった表領域のサイズがどれくらいで、
その内、どれくらの割合を使われているかを求めるSQL文


select ddf.TABLESPACE_NAME,
ddf.BYTES,
ddf.BYTES-DFS.BYTES "BYTES_USED",
round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) "PERCENT_USED",
dfs.BYTES "BYTES_FREE",
round((1-((ddf.BYTES-dfs.BYTES)/ddf.BYTES))*100,2) "PERCENT_FREE"
from (select TABLESPACE_NAME,
sum(BYTES) bytes
from dba_data_files
where autoextensible='NO'
group by TABLESPACE_NAME) ddf,
(select TABLESPACE_NAME,
sum(BYTES) bytes
from dba_free_space
group by TABLESPACE_NAME) dfs
where ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME
order by ((ddf.BYTES-dfs.BYTES)/ddf.BYTES) desc

実行結果

列の意味
TABLESPACE_NAME 表領域の名前
BYTES       表領域のサイズ
BYTES_USED     表領域の使用済みサイズ
PERCENT_USED    使用済みの割合
BYTES_FREE    まだ使えるサイズ

WHERE句の意味

where autoextensible='NO'
これは、データファイルの空きが0になったら、
自動拡張するかどうかです。これが、NOなので
今回は自動拡張しないものを、SELECTしています



TABLESPACE_NAME BYTES BYTES_USED PERCENT_USED BYTES_FREE
------------------------------ ---------- ---------- ------------ ----------
PERCENT_FREE
------------
APPS_TS_SEED 3126853632 3061055488
97.9 65798144
2.1

APPS_TS_TX_DATA 5956042752 5764939776
     96.79 191102976
3.21

SYSAUX 497745920 468385792
94.1 29360128
5.9

APPS_TS_TX_IDX 8112570368 7470710784
92.09 641859584
7.91


今回のサンプルでは、
どれも90%を超えているので、これから表領域のサイズを広げる必要がありますね・・・

表領域を広げるには、
  データファイル自体のサイズを広げる
  新たに別のデータファイルを追加する
などがあります。


Your DBA MOTO:TAKER
    • good
    • 1
この回答へのお礼

ご丁寧なご説明、どうもありがとうございました。

お礼日時:2009/10/02 12:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す