テーブルにデータのINSERTとDELETEなどを繰り返すと、
表の領域が断片化してディスク容量を圧迫してきます。
こうした場合、ALTER TABLE ~ SHRINK SPACE句を使うと
簡単に断片化を解消することができます。
構文
- (表の断片化を解消する構文)
- ALTER TABLE <テーブル名> SHRINK SPACE;
サンプル
例)mst_userテーブルの断片化を解消する
- 実行例
- SQL> ALTER TABLE mst_user SHRINK SPACE; 表が変更されました。
ORA-10636が発生する場合は、ROW MOVEMENTをENABLEに設定する必要があります。詳しくは以下記事をご覧ください。
→ [ORACLE] パーティション表でパーティションの移動を伴う更新を許可/不許可にする(ROW MOVEMENT)
解説
- SHRINK SPACEで断片化を解消すると、HighWaterMarkも下がります。
- 同じように断片化を解消する方法として「ALTER TABLE ~ MOVE」句を使用する方法もありますが、SHRINK SPACEだとオンライン中にも実行できるメリットがあります。
- CLOBやBLOB列を含むテーブルの場合は、SHRINK SPACEは使用できません。