帮助一个同事导数据。
数据来源 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
顺利完成操作。。。。。。