Oracle10g如何imp在exp时设置了compress=y的dmp文件?

iamhj 2012-09-21 05:04:23
现在手里有个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不能跨多个文
件。
-----------------------------------------------------------------------

问题是,如何将这个文件导入到数据库?
...全文
195 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamhj 2012-10-25
  • 打赏
  • 举报
回复
确实是导出的错误,导出时一并导出了建表语句,而该表是分区表,非常大。需要重新导出数据,最好只导出数据,导入时单据建表。
DXX627YERUI 2012-09-25
  • 打赏
  • 举报
回复
不懂这个,帮你顶
jdsnhan 2012-09-25
  • 打赏
  • 举报
回复
不能再重导一份了?
软件钢琴师 2012-09-24
  • 打赏
  • 举报
回复
百度啊 兄弟

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧