delete并不释放空间。
如果变动很大的话,可以先根据原来的表创建一个新表,truncate掉原来的表,再把新表rename 回去。
create tablea as
select * from tableb;

解决方案 »

  1.   

    对,delete本身只是把数据和表之间断开联系,其物理盘片上仍旧保存着数据,你可以采用truncate table来删除数据。至于表空间你可以在init.ora里面设置pctincrease=0来清理碎片增长量。
      

  2.   

    用truncate table 表名。
    这样会回收空间并且速度很快。
      

  3.   

    用truncate table 表名。
    这样的方法不如从新建立表,这样可以从新分配存储的参数。
      

  4.   

    CREATE TABLE NEWNAME AS SELECT * FROM OLDNAME;
    TRUNCATE TABLE OLDNAME;
    INSERT INTO OLDNAME SELECT * FROM NEWNAME;
    DROP TABLE NEWNAME;
      

  5.   

    ALTER [ TABLE | INDEX | CLUSTER ] segment_name DEALLOCATE UNUSED; 
    有用吗?有人说这是HWM(high water )问题,到底怎么办呢?
      

  6.   

    清理这个表的无用数据,把这个表用exp导出,drop这个表,alter tablespace [name] coalesce,再imp这个表。