oracle   10.2.0.4.0 - Production从生产上导出一个2G左右的dmp,导到另一个库时居然占用了60G左右的表空间,还没导完。
在导入的时候,没有人对这些表空间做操作。
请分析一下这种情况产生的原因,及解决办法。
个人怀疑是建表语句中指定了一些比较大的初始化存储参数。

解决方案 »

  1.   

    通过dba_free_space ,dba_data_files  
    或dbconsole上都可以看出表空间在疯狂的增长。
    共用了5个表空间每个表空间都是自动增长的。
    每个表空间的初始大小是1G,最终这5个表空间的和用了将近60G。
      

  2.   

    应该是表的initial参数问题。http://www.itpub.net/thread-1220596-1-1.html
      

  3.   

    要看你表空间实际被使用了多少。
    表空间相当于木桶,而数据相当于装载量里面的水。
    表空间大,数据很小也是可能的。
    简单的方法用toad连上去就可以看了哈。
      

  4.   

    我的14M的DMP导入完了是80G左右呢
      

  5.   

    感谢三楼的回复,根据三楼提供的文章,做试验后结果如下
    以下是我做试验的结果:1.在delete数据后,表的高水位线不释放,存储空间不发生改变。
    2.在delete数据后导出dmp时,compress参数与表的存储空间无关。
    3.在导入delete数据后导出的dmp,对表做统计分析可以改变表的存储空间。
    4.对表进行truncate操作,会影响高水位线,能释放表占用的存储空间。但
      不能及时更新到字典表中dba_tables。需要统计分析后才能更新到字典表中。为了避免这个问题在导出数据前可以对记录为0的表进行truncate,在统计分析。
    这样能体现出表所使用的实际表空间值。或者在导入数据后对表进行统计分析也
    可能释放一部份表空间。至此困扰我的,dmp导入后占用巨大表空间的问题暂时告一段落。
      

  6.   

    试验过程见
    http://blog.csdn.net/lwei_998/archive/2010/01/14/5189136.aspx
    第一次自己做试验,思路可能不严谨。欢迎大家给出知道和建议。