ablog

不器用で落着きのない技術者のメモ

セグメントの未使用領域を開放する

Oracle でテーブルやインデックスを作成する際、STORAGE句でINITIALやMINEXTENTSが指定されていると、中身は空っぽでも指定されたサイズの領域が確保される。
未使用の領域を開放したい場合は、

alter table EMP deallocate unused keep 1k;

とかしてやればよい。この場合、空き領域1kを残してそれ以外は解放される。
「keep ...」を指定しなかった場合、HWMがINITIAL/MINEXTENTSより小さい場合は開放されない。


書式)

ALTER {TABLE|INDEX|CLUSTER} <オブジェクト名> DEALLOCATE UNUSED;
ALTER {TABLE|INDEX|CLUSTER} <オブジェクト名> DEALLOCATE UNUSED KEEP <n>;
ALTER {TABLE|INDEX|CLUSTER} <オブジェクト名> DEALLOCATE UNUSED KEEP <n>K;
ALTER {TABLE|INDEX|CLUSTER} <オブジェクト名> DEALLOCATE UNUSED KEEP <n>M;