在备份数据库时用了truncate table XXX;把大表都搞了一遍,导出的dmp也不到150M,但为什么导入后(表空间设置自增)还用了30G左右的空间?这跟没用truncate 效果一样啊?~
请教还有什么地需要调整的吗?!

解决方案 »

  1.   

    导入前,你的表空间的大小为多少,你是什么语句来观察表空间的大小的另外truncate减低HWM,并不会收缩表空间的。
      

  2.   

    使用compress=n如果还是有问题的话,
    看看你的ORACLE版本,有些版本有bug的。
      

  3.   

    其实,你可以将大表使用pl/sql developer导出脚本,
    然后修改一下,类似,initial指定小一点
      storage
      (
        initial 64K
        minextents 1
        maxextents unlimited
      );
      

  4.   

    oracle 10g导入前表空间大小?!  导入前给我1个G 然后自动增长next500m
    直接看数据文件就行吧~
    或者用:SELECT a.tablespace_name "表空间名",
           total 表空间大小,
           free 表空间剩余大小,
           (total - free) 表空间使用大小,
           ROUND((total - free) / total, 4) * 100 "使用率 %"
      FROM (SELECT tablespace_name, SUM(bytes) free
              FROM DBA_FREE_SPACE
             GROUP BY tablespace_name) a,
           (SELECT tablespace_name, SUM(bytes) total
              FROM DBA_DATA_FILES
             GROUP BY tablespace_name) b
     WHERE a.tablespace_name = b.tablespace_name
      

  5.   

    刚才看了一下 
    initial 确实很大~ 
    有没有批量修改表initial 的方法?!
      

  6.   

    最后还是drop了大表,还真不少