电脑技术学习

Oracle Imp时候 表空间暴涨一例

dn001

  帮助一个同事导数据。

  数据来源 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

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