也可以用一条语句来压缩表的索引: alter table bookings shrink space cascade; 联机 shrink 命令是一个用于回收浪费的空间和重置 HWM 的强大的特性。我把后者(重置 HWM)看作该命令最有用的结果,因为它改进了全表扫描的性能。
找到收缩合适选择 在执行联机收缩前,用户可能想通过确定能够进行最完全压缩的段,以找出最大的回报。只需简单地使用 dbms_space 包中的内置函数 verify_shrink_candidate。假如段可以收缩到 1,300,000 字节,则可以使用下面的 PL/SQL 代码进行测试: begin if (dbms_space.verify_shrink_candidate ('ARUP','BOOKINGS','TABLE',1300000) then :x := 'T'; else :x := 'F'; end if; end; / PL/SQL 过程成功完成。
SQL> PRint x
X -------------------------------- T 假如目标收缩使用了一个较小的数,如 3,000: begin if (dbms_space.verify_shrink_candidate ('ARUP','BOOKINGS','TABLE',30000) then :x := 'T'; else :x := 'F'; end if; end;