--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------以下是测试案例:
(1).新建t1表,插入34816条数据。提交。 并且执行以下步骤:
SQL> analyze table t1 compute statistics;------分析表
Table analyzed.
SQL> select num_rows ,blocks,empty_blocks from user_tables where table_name='T1'; ---第一次查看高水位线
NUM_ROWS BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
34816 212 43
-------------------
SQL> alter table t1 move;------执行表重建命令
Table altered.
SQL> analyze table t1 compute statistics;---再次分析表
Table analyzed.
SQL> select num_rows ,blocks,empty_blocks from user_tables where table_name='T1';-----再次查看高水位线
NUM_ROWS BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
34816 208 47
/block 从212降到208,说明高水位线降低了。------------可行。
------------------------------------------------------------------------------------------------------------------------
(2)新建t1表,插入34816条数据。提交。 并且执行以下步骤:
SQL> truncate table t1 ;
Table truncated.
SQL> select num_rows ,blocks,empty_blocks from user_tables where table_name='T1';
NUM_ROWS BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
34816 208 47
SQL> analyze table t1 compute statistics;
Table analyzed.
SQL> select num_rows ,blocks,empty_blocks from user_tables where table_name='T1';
NUM_ROWS BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
0 0 7
// 说明truncate 有效。
----------------------------------------------------------------------------------------------
(3)新建t1表,插入34816条数据。提交。 并且执行以下步骤:
复制要保留的数据到临时表t,drop原表,然后rename临时表t为原表 -----------改方法可行,已经验证。
--------------------------------------------------------------------------
(4)新建t1表,插入34816条数据。提交。 并且执行以下步骤:
Alter table table_name deallocate unused(验证不可行,不降低水位线)
注:这证明,DEALLOCATE UNUSED为释放HWM上面的未使用空间,但是并不会释放HWM下面的自由空间,也不会移动HWM的位置.