(一)降低高水位线
1、TRUNCATE TABLE:执行TRUNCATE TABLE命令会直接清空表,并重置高水位线到初始位置(通常是0),因为它不记录任何操作,也不触发触发器或事务日志,因此效率非常高。这是快速降低高水位线最直接的方式,但请注意,此操作不可回滚。
2、DROP and RECREATE TABLE:另一种极端方式是先删除表再重建,同样可以达到重置高水位线的目的,但这涉及到对象定义的重新创建和权限的重新设置。
3、SHRINK SPACE:从Oracle 10g开始,对于某些类型的段(尤其是索引和堆表),可以使用ALTER TABLE… SHRINK SPACE或ALTER INDEX… SHRINK SPACE命令尝试减小段大小并降低高水位线。这种方法较为温和,但仍需注意其可能带来的锁定和性能影响。
(二)drop表后立即释放表所占用的存储空间
1、使用PURGE命令永久删除表:在DROP TABLE命令后添加PURGE关键字可以立即删除表并释放存储空间。 例如:DROP TABLE table_name PURGE;
2、使用ALTER TABLE命令截断表:可以使用ALTER
TABLE命令截断表,即删除表中的所有数据但保留表结构。这样可以释放存储空间并保留表结构。 例如:ALTER TABLE table_name TRUNCATE;
3、使用ALTER TABLE命令重新分配表空间:如果您希望重新分配表所占用的存储空间,可以使用ALTER TABLE命令修改表的存储选项,例如修改表空间或表的存储参数。
(三)delete删除部分表数据后释放表空间
1、利用“alter table 你的表名 enable row movement;”语句开启允许行移动,该语句允许rowid改变;
2、利用“alter table 你的表名 shrink space;”语句回收空间即可。
3、清空整个表,并释放表空间 当然若准备删除整个表数据并且释放表空间,则使用TRUNCATE命令即可:
truncate的作用是清空表或者说是截断表,它只能作用在表上。
truncate table 表名;