shrink space
大量のDELETEを走らせたのに表領域が解放されない場合は
ALTER TABLE テーブル名 SHRINK SPACE;
で10gからは postgresのバキューム的なことが出来ます。
ただしテーブルの行が移動してもよいということをテーブル単位で指定しないとエラーが発生します。
ALTER TABLE テーブル名 ENABLE ROW MOVEMENT ;
試した結果、DELETEで削除された領域の予想バイト位は解放されてました。
ちなみに、9iまでだとテーブルDROPしてIMPORTし直す必要があるそうです。
毎日同じテーブルに対してDELETE、INSERTとかしてると歯抜け状態になりやすいと思われます。
Transactionテーブルであれば DELETE、INSERTではなくTRUNCATE、INSERT出来るように
うまくPARTITIONINGしておくことが肝心です。
PATITIONは、通常テーブルからでも変更可能ですので是非使うようにしてください。
ただしPARTITIONはOracleEEで、さらにOPTIONでお金がかかりますのでその辺も留意しつつ
PARTITION化出来ない場合はテーブルを年月単位とかで作成すると良いと思います。
明日はOracleOpenworldだ!!
有楽町へ。。。