请问,我的表空间中有2个数据文件,数据文件1 和 数据文件2 ,都是1G大小,里面数据使用率都达到了96%, 然后我通过SQL语句删除了里面的大部分数据,现在表里的数据基本都是空的,但是两个数据文件使用率还是96%,请问怎么把删除掉数据的空间清理出来? 急,麻烦谁能帮下!

解决方案 »

  1.   

    如果你是作的delete的话.那么表是不会被缩小的.你需要重建表.然后再看你的ts size
      

  2.   

    重新间一个表空间,将表转移到另外一个空间再转移回来,空间就释放了。
    alter table tbl_test move tablespace xxx;
    alter table tbl_test move tablespace yyy;
      

  3.   

    如果要对表作move
    在本地做就可以了.前提你需要有相当于此表大小的free空间.alter table tablename move;就可以了.
      

  4.   

    确实只需要move到本地表空间就可以了move了以后索引是不是要重建?
      

  5.   

    sure, after index recreate
      

  6.   

    1.对表空间执行一次碎片整理.
    ALTER TABLESPACE TABLESPACE_NAME COALESCE;2.假如你的版本是10G的话,可以执行Shrink命令,来缩小表空间。
    它是对表或者索引的操作。需要得到行移动的允许。
      

  7.   

    如果将一张表想象成水平结构,一系列的块都是从左向右排列,成一条直线放置,高水标记(high water )就是曾经包含数据的最右边的块。随着数据不断地放入表中,使用了更多的块,从而高水标记不断上升,如果删除了一些表中的行,有许多块可能不再包含数据,但是这些块仍然在高水标记以下,并且保持在高水标记以下直到对象被重建或删减。在全扫描期间,Oracle将扫描高水标记以下的所有块,即使它们不包含数据,这将影响全扫描的性能,尤其高水标记以下的大部分块都是空时。truncate将重新设置表的高水标记,让它返回0,而delete表中所有行时高水标记不会改表。如果计划删除表中的每一行时,使用truncate方法比较合适。