Oracle Imp时候 表空间暴涨一例

Posted on 2010-01-20 16:44  blackcat  阅读(1028)  评论(0编辑  收藏  举报

帮助一个同事导数据。

数据来源 Oracle10g R2 exp程序。

数据大小11g。

创建用户,创建表空间,添加数据文件32G,然后使用imp开始导数据。

 

下面开始描述现象。

  之前已经知道该表位分区表,但是imp进程开始几个小时之内都是没有导入进度的,只看到导入字体之后就没有界面输出了。但是数据文件在不停的上涨。

最后30G的数据文件全部写满,报错空间不足退出。

  于是很诧异这个事情。纳闷儿了数十分钟,想着先把表结构看看,且忽略索引,约束等看看有啥门道。

  搞这个之前,在三思的群里面说了一句这个事情,结果问题得到求证,三思同学很是高调的说,他就用几KB的dmp文件,就可以使用我1T的表空间。

  吼吼,于是,使用imp indexfile的语法,把建表语句看看,原来见表语句中,如下语句非常多,

  

PCTFREE 10 
  PCTUSED 
0 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 45646512313245 FREELISTS 1 
  FREELIST GROUPS 
1 BUFFER_POOL DEFAULT)

  然后这个表本身还是个分区表,啊,我的天,怪不得建表的时候,导数据之前就要运行良久,原来建表语句要申请那么多空间。

 

  知道问题原因,搞定就Easy了,先把index文件内容修改下,所有的initial都改成0,让他使用默认值,然后执行建表语句,再使用ignore的方式调用imp。如下:

  

导入表定义

imp dq
/dq@ora111 file=conficker.dmp full=y buffer=1024000 indexfile=index


导入数据

imp dq
/dq@ora111 file=conficker.dmp full=y buffer=1024000 ignore=y FEEDBACK=500

  

  顺利完成操作。。。。。。

Copyright © 2024 blackcat
Powered by .NET 8.0 on Kubernetes