问题:
我测试用的表空间设置了500M,有一次确实用了这么多。但是
我TRUNCATE部分表的数据后,就没500M了
而且我EXP后只有100M左右现在我怎么回收那让费的空间呢?请高手指点!!
ALTER TABLESPACE TEST COALESCE;
ALTER........MOVE........
??????????

解决方案 »

  1.   

    (1)、选择某个表空间中超过N个blocks的segments,通过此语句可以看出那个表占用的空间大。select segment_name,segment_type,blocks from dba_segments  where tablespace_name='TABLESPACENAME'  and blocks > N  order by blocks;(2)、分析表,得知表的一些信息analyze table TABLENAME estimate statistics; 执行完后再执行
    select initial_extent,next_extent,min_extents,blocks,empty_blocks from dba_tables  where table_name='TEST' and owner='AA'; 
    (3)、使用alter table ... deallocate unused 命令回收表的空间例如: alter table AA.TEST deallocate unused keep 1k;
    (4)、使用 alter tablespace TABLESPACENAME coalesce 命令回收表空间的空间。
    (5)、可以使用dba_free_space视图查看表空间中的空闲空间信息。
      

  2.   

    修改表空间大小的方法:
    alter database DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\TEST\TEST.DBF' resize 400M;
      

  3.   

    可以用truncate跟上reuse stroage
      

  4.   


    alter tablename shrink space;
      

  5.   

    alter database DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\TEST\TEST.DBF' resize 400M; 
    老版本的oracle,表空间是不允许缩小的,新版本的都可以
      

  6.   

    D:\错误提示.bmp
    1、alter database DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\TEST\TEST.DBF' resize 400M;这是更改表空间的大小和我在企业管理器里的更改不是一回事么?
    我原来用到500M你怎么可以改成4002、
    ALTER TABLESPACE TEST COALESCE; 
    这我早就尝试过了
    是提示数据库已更改
    但是重新启动数据库没变我导出的DMP只有23.4M把表空间删除了
    重新建立在IMP发现回缩导入失败哎望高手指点
      

  7.   

    ALTER TABLESPACE TEST COALESCE; 
    =================================
    不会将数据文件的空间返还给操作系统,也就是说数据文件的大小不会收缩。2楼的 resize 是方法正解