试一下alter tablespace MyTBSpace coalesce,看看空间有没有降下来,如果不行的话用export/import肯定可以释放空间。

解决方案 »

  1.   

    truncate是会减低highwater的,你的不行啊?
      

  2.   

    回收表的空闲空间
    alter table T_Unit_History deallocate unused;
      

  3.   

    方法1:
    alter table 表名
    deallocate unused keep 2m;当删除数据时,收缩表,并保持高水印(High Water Mark)
    方法2:一般用导出EXP和导入IMP工具来做;方法3:或者你新建一表空间,将原表空间移到新的表空间试试;alter table 表名
    move tablespace data1;会保持原有的索引(索引不可用,要重建),约束等;重新组织表
      

  4.   

    将删除5万条记录后的表T_Unit_History再进行重组;例如:
    新建一个表Unit_History,其值取表T_Unit_History中的值:
    SQL>create table Unit_History as select * from T_Unit_History;
    Truncate表T_Unit_History,这样可以释放表空间:
    SQL>truncate table T_Unit_History;
    将表Unit_History中的值导回表T_Unit_History:
    SQL>insert into T_Unit_History select * from Unit_History;
    清空表Unit_History,释放表空间:
    SQL>truncate table Unit_History;
    再drop表Unit_History:
    SQL>drop table Unit_History;
      

  5.   

    alter table T_Unit_History deallocate unused支持zhaokeke2004(男人·海洋)的方法
      

  6.   

    我想问下,删表数据和直接drop table tablename, 删掉的数据和表是不是因为先放到回收站而没真删掉,而占用了空间的缘故呢?能否直接清掉回收站来释放空间呢?
      

  7.   

    将删除5万条记录后的表T_Unit_History再进行重组;例如:
    新建一个表Unit_History,其值取表T_Unit_History中的值:
    SQL>create table Unit_History as select * from T_Unit_History;
    Truncate表T_Unit_History,这样可以释放表空间:
    SQL>truncate table T_Unit_History;
    将表Unit_History中的值导回表T_Unit_History:
    SQL>insert into T_Unit_History select * from Unit_History;
    清空表Unit_History,释放表空间:
    SQL>truncate table Unit_History;
    再drop表Unit_History:
    SQL>drop table Unit_History;  
      

  8.   

    借用宝地问3个问题:
    1、如果使用drop删除掉分区后,原有分区的空间是否会自动释放呢?
    2、如果没有自动释放,那其他分区是否可以占用这个删除掉的分区的空间呢?
    3、如果drop删除掉分区后,原有分区的空间不自动释放,是否需要什么语句回收表空间呢?谢谢