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

USER_A 所有のテーブル TABLE_A に対し、
1.ALTER TABLE USER_A.TABLE_A MOVE STORAGE (INITIAL 20M);
を実行したあと、
2.select * from dba_extents where segment_name = 'TABLE_A' and owner = 'USER_A' order by extent_id
を実行してみたところ、BYTES列が、全て1048576(つまり、1MB)になっていました。

1.を実行した時点で、InitialExtentのサイズは20MBになっているはずなのだから、
2.の結果のBYTESのうち、1レコードは20MBになっていないとおかしいのではないか、と感じています。
※dba_tablesで、USER_A の TABLE_A の INITIAL_EXTENT が 20MB になっていることは確認しています。

dba_extents はエクステント1つ々々に対する情報を表しているのだ、と私は理解していたのですが、
私の理解は間違っているでしょうか。


以上です。
ご回答よろしくお願い致します。

A 回答 (1件)

テーブルスペースの管理方法はなんですか?



ローカル管理かつUNIFORMになっているのではないでしょうか。
http://otndnld.oracle.co.jp/skillup/oracle9i/2_1 …

ローカル管理だと、INITIALで指定されたサイズと同サイズ分の
エクステント(複数)を確保しにいきます。

>BYTES列が、全て1048576
ということならUNIFORMサイズが1MBなだけだと思いますよ。
※デフォルトが1MBだし。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
恥ずかしながら、「UNIFORM」「AUTOALLOCATE」の存在を初めて知りました。
調べてみたところ、表領域の設定は「AUTOALLOCATE」で、EXTENTが全て1MBだったのは偶然だったようです。

ともかく、ご回答を元に納得できました。
ありがとうございました!

お礼日時:2009/08/06 11:00

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