insert が実行されてからセグメントを割り当てする

Oracle11g リリース2(以下、R2)で、遅延セグメントという新機能が追加された。

従来、テーブルを作成するときにデータを insert していなくても、セグメントが
割り当てられていたが、insert が実行されるまで遅延可能というもの。



これまでの動作

すぐにデータが insert されるなら問題はないが、データが存在しない
期間があると、その時点では無駄なセグメント利用と言える。
作成されるオブジェクト数が多いなら尚更。

テーブルやインデックスが対象

遅延セグメントを使用することで、insert が実行されるまで
遅延させることが出来るようになった。

※ パーティションテーブルは対象外。

初期化パラメータ deferred_segment_creation

この動作は 11gR2 からデフォルトだが、遅延セグメントを使用せず
従来通りとしたい場合は、初期化パラメータ deferred_segment_creation に
false を設定すればよい。

11gR1 環境では下記の通り、パラメータの結果が返されない。

SQL> show parameter deferred_segment_creation

deferred_segment_creation 自体も R2 新設の初期化パラメータだ。