数据库,但是我们把库中的所有的数据都清除掉后,但那是oracle实际所占用的空间没有释放,请问有什么方法能释放oracle数据库所占用的空间?

解决方案 »

  1.   

    考虑一下在数据库没有使用的时候,把回滚段表空间的回滚段都offline再drop(注意保留位于SYSTEM表空间上的一个回滚段,并且是online的);
    再把回滚段表空间的数据文件改小ALTER DATABASE DATAFILE '.....' RESIZE ....' ;
    之后再按照原来的设置,重新建立回滚段。
      

  2.   

    truncate也未必能将之间占用的空间释放,我之前也试过,truncate一个占用了15G的空间的表之后,它竟然还是占用了十几个G.如果一定要保存表结构,建议重建表.
      

  3.   

    rebuild table 
    rebuild index 
    可以使用工具toad里面的tools
     
      

  4.   

    关键是你的表空间中 free 的extent 有多少?
    这些才是可能可以shrink 的。如果有比较多的未使用空间,那么尝试 resize datafile 到更小的size。
      

  5.   

    通过USER_TAB_PARTITIONS可以查看表分区,
    然后将不用的分区删除
    alter table table_name drop partition partition_name;
      

  6.   

    老问题,先在论坛上搜索有一大票答案,核心就是
    ALTER DATABASE DATAFILE '.....' RESIZE ....' ; 
      

  7.   

    oracle的表空间一经分配不能回收。