首先oracle shrink 是10g之后才引出的,有shrink table 和shrink space两种,这里介绍shrink space
压缩分两个阶段:
1、数据重组:这个过程是通过一系列的insert delete操作,将数据尽量排在列的前面进行重新组合。
2、HWM调整:这个过程是对HWM的调整,释放空闲数据库。
PS:shrink之间必须开启行移动功能
alter table table_name enable row movement;
基本语法:
alter table <table_name> shrink space [ <null> | cascade | compact ];
--alter table <table_name> shrink space compact;
只收缩表,这个实际上是只执行了第一个阶段,HWM保持不变。
--alter table <table_name> shrink space cascade;
收缩表并且相关索引也会被收缩,HWM会降低
--alter table <table_name> shrink space;
收缩表,降低HWM(High Water Mark)