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;