フリーブロックに関する検証 その7
<フリーブロックに関する検証 その7> ペンネーム ちゃむ
1.minimum extentに関して<前々回説明>
2.少ないフリーブロックの断片をなるべく残さないような動き<前回説明>
3.フリーブロックをどのように使うかを表わしたフローチャート
2_1.create tablespaceで空きスペースが5ブロック以下になるようなSIZE
を指定したとき
2_2.minimum extentを変更したとき
2_2.に関してもう少しだけ説明を加える。前回は、minimum extentを指定し
なかったとき(default 0)の動きを見た。
一見すると、db_block_size=2kのときエクステントをアロケーションする単位
は、1ブロックから5ブロックまでは、minimum extent 2k(1ブロック)を指定し
たときの動きで、6ブロック以上からは、minimum extent 10k(5ブロック)を指
定したときの動きに見える。しかし、はたして、本当にまったく同じ割り当て
方だろうか?
以下の問題に答えていただきたい。
問題
DB_BLOCK_SIZE=2Kでminimum extent 0 のとき(デフォールトのとき)と
minimum extent 10K (5ブロック)のときで、114ブロックのフリーブロックの
連続領域のテーブルスペースにinitial 114ブロックのテーブルを作成すると以
下のどちらになだろうか?
1.115ブロックとろうとして、エラーになる。
2.114ブロックきっちりとる。
正解はこちら
minimum extent 0 のとき 2.
minimum extent 10K のとき 1.
ということで、minimum extent 10Kを指定したときには、あくまでも5ブロック
単位でしか領域を割り当てられないことを示し、minimum extent 0のときは、6
ブロックを以上のエクステントを割り当てるときは5ブロック単位で割り当てよ
うとするが、もし割り当てられないと切り上げる前の値、上記の例では114ブロ
ックを割り当てる動きをする。フリーブロックの断片をなるべく残さないような
動きで少し違いが出たことがわかる。以下に検証結果の様子を示す。
/*フリーブロックを114ブロックもつテーブルスペースをminimum extent 0,10k
でそれぞれ作成*/
create tablespace tbs114_m0 datafile '/shome/share/tbs114_m0' SIZE 230k minimum extent 0 default storage (pctincrease 0); create tablespace tbs114_m5 datafile '/shome/share/tbs114_m5' SIZE 230k minimum extent 10k default storage (pctincrease 0);
/*それぞれのテーブルスペースにinitial 114ブロックのテーブルを作成*/
create table tb114_m0 (col1 number) tablespace tbs114_m0 storage(initial 228k minextents 1); 表が作成されました。
create table tb114_m5 (col1 number) tablespace tbs114_m5 storage(initial 228k minextents 1); にエラーが発生しました。ORA-01658: 表領域: TBS114_M5にセグメント用のINITIALエクステントを作成できません。
検証結果から、問題の結果が読み取れるだろう。
3.フリーブロックをどのように使うかを表わしたフローチャートに関しては
以下にその図を示す。これは、すべて、検証によって積み上げた結果の
フローチャートである。今までの記事をふまえて、見ていただくと理解できる
と思う。
次回でこの~フリーブロックに関する検証~は最終回となります。
以上 茅ヶ崎にて
~フリーブロックに関する検証 その7~
by ちゃむ