下面的方法都可以降低高水位线标记。
1. 执行表重建指令 alter table table_name move;
在线转移表空间ALTER TABLE ... MOVE TABLESPACE ..
当你创建了一个对象如表以后,不管你有没有插入数据,它都会占用一些块,ORACLE也会给它分配必要的空间.同样,用ALTER TABLE MOVE释放自由空间后,还是保留了一些空间给这个表.
ALTER TABLE ... MOVE 后面不跟参数也行,不跟参数表还是在原来的表空间,Move后记住重建索引. 如果以后还要继续向这个表增加数据,没有必要move, 只是释放出来的空间,只能这个表用,其他的表或者segment无法使用该空间。 (就在本空间move,索引未出现失效的情况)
2. 执行alter table table_name shrink space; (这种方法比较慢)
注意,此命令为Oracle 10g新增功能,再执行该指令之前必须允许行移动 alter table table_name enable row movement;
3. 复制要保留的数据到临时表t,drop原表,然后rename临时表t为原表
create table t as select * from t2;
drop table t2;
alter table t rename to t2
4. 用逻辑导入导出: Emp/Imp
5. Alter table table_name deallocate unused
注:这证明,DEALLOCATE UNUSED为释放HWM上面的未使用空间,但是并不会释放HWM下面的自由空间,也不会移动HWM的位置.
6. 尽量使用truncate.
-----------------------------------------------------------------------------------------
QQ:49904358