日期:2014-05-17  浏览次数:20942 次

Oracle10g如何imp在exp时设置了compress=y的dmp文件?
现在手里有个dmp文件,3M大小,但是在imp的时候,表空间扩展了二十多个G,数据还是未能导入完成,直到磁盘空间不足,imp报错。
查了一下,可能的原因是,该dmp文件在exp时设置了碎片整理参数compress,大概意思引用如下

----------------------------------------------------
http://www.huomaw.com/oracle/201011/15299.html
7、碎片整理 
EXPORT/IMPORT一个很重要的应用方面就是整理碎片。因为如果时初次IMPPORT, 
就会重新CREATE TABLE 再导入数据,所以整张表都是连续存放的。另外缺省情况 
下EXPORT会在生成DUMP文件是“压缩(COMPRESS)”TABLE,但是这种压缩在很多情况。

事实上,COMPRESS是改变STORAGE参数INITIAL的值。比如: 
CREATE TABLE .... STORAGE( INITIAL 10K NEXT 10K..) 
现在数据已经扩展到100个EXTENT,如果采用COMPRESS=Y来EXPORT数据, 
则产生的语句时 STORAGE( INITIAL 1000K NEXT 10K) 
我们可以看到NEXT值并没有改变,而INITIAL是所有EXTENT的总和。所以会出现 
如下情况,表A有4个100M的EXTENT,执行DELETE FROM A,然后再用COMPRESS=Y 导 
出数据,产生的CREATE TABLE语句将有400M的INITIAL EXTENT。即使这是TABLE中 
已经没有数据!!这是的DUMP文件即使很小,但是在IMPORT时就会产生一个巨大 
的 TABLE. 

另外,也可能会超过DATAFILE的大小。比如,有4个50M的数据文件,其中表A有 
15个10M的EXTENT,如果采用COMPRESS=Y的方式导出数据,将会有INITIAL=150M, 
那么在重新导入时,不能分配一个150M的EXTENT,因为单个EXTENT不能跨多个文 
件。 
-----------------------------------

问题是,如何将这个文件导入到数据库?

------解决方案--------------------
百度啊 兄弟
------解决方案--------------------
不能再重导一份了?
------解决方案--------------------
不懂这个,帮你顶