1 emp表空间到dmp文件
2 删除表空间,重建
3 imp

解决方案 »

  1.   

    或者alter table ... move tablespace...nologging方式,连续用两次,如果没有数据的话应该很快的.
      

  2.   

    导入/导出估计够呛,因为你只是删除了数据,没有把表删除,空间逻辑上还是为那个表保留的。建议你把表的SQL定义保留下来,然后把表删除,然后resize数据文件
      

  3.   

    推荐尝试一下
    alter database datafile 'xxx.dbf' resize 100m
    我试过,可以缩小DATAFILE
      

  4.   

    minkoming(学无止境):你的方法我试过了,好像不怎么行的通,他会报错,不会让你缩小。
    maohaisheng(www.chinaspirit.net) :你的方法也许可行,我现在还没有试,但你说用resize来改变大小我也觉得不怎么行得通,我比较同意enhydraboy(乱舞的浮尘) 得方法。但我遇到一点问题,怎样将整个表空间得数据导出来,然后怎么导进去。在重建表空间的时候要注意什么?还望enhydraboy(乱舞的浮尘) 赐教:)
      

  5.   

    ygzeng() :你能把你的方法说详细一点吗?同时能麻烦你说说他的原理吗?谢谢!
      

  6.   

    你把那些删除了数据的表,尤其是原来数据量比较大的表,并且是属于你要缩的表空间的,
    alter table 表名 move tablespace 表空间名(仍是原表空间名);
    然后再alter tablespace 表空间名 datafile 'xxx.dbf' resize 大小M;
    move tablespace会让表重组,释放空间;用delete删除数据时不会释放空间。
      

  7.   

    gladness(gladness):你的方法在alter tablespace 表空间名 datafile 'xxx.dbf' resize 大小M  这一步骤时不能执行.
      

  8.   

    gladness(gladness) :报不能缩小数据文件。
    我最后的解决办法是:将此表的定义导出,然后删除此表,用alter database datafile '' resize 大小命令来缩小数据文件,最后导入表。成功。不过我还想知道如果不知道是那个表造成表空间扩展,怎样缩小整个表空间?还望各位高手赐教!