超大表IMP导入出错???求救
有一张有2G的表,它有86个FLOAT类型的字段,现在我想把他迁移到别一个服务器上去。在EXP导出时没问题,但在IMP导入里出现以下错误:
连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
经由常规路径导出由EXPORT:V09.02.00创建的文件
已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
. . 正在导入表 "TAHE_SZJT_AC08"
IMP-00009: 导出文件异常结束
IMP-00020: 用于列缓冲区大小 (22) 的长整数列过大
IMP-00028: 上一个表的部分导入已回退: 回退 120372 行
成功终止导入,但出现警告。
请教各位大侠这是为什么?怎么解决?
问题点数:100、回复次数:18Top
1 楼playmud((猪头流氓)(抵制日货)(热烈庆祝火箭输球))回复于 2005-01-25 15:57:42 得分 0
需要按照一定的条件分开导,大于2.XXXXG大小的文件你的系统 不支持.Top
2 楼playmud((猪头流氓)(抵制日货)(热烈庆祝火箭输球))回复于 2005-01-25 15:59:22 得分 0
不知道说得是不是够明白了,就是说你的操作系统只能支持某个容量的文件.而你的数据大于这个容量Top
3 楼jsnicle(js_nicle)回复于 2005-01-25 16:05:52 得分 10
再试一下,用交互式导入,把缓冲区设置大一些Top
4 楼jsnicle(js_nicle)回复于 2005-01-25 16:08:02 得分 20
C:\Documents and Settings\Administrator>exp
Export: Release 10.1.0.2.0 - Production on 星期二 1月 25 16:07:32 2005
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Username: scott/tiger
Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Produc
tion
With the Partitioning, OLAP and Data Mining options
Enter array fetch buffer size: 4096 > 8192
设置成4096的倍数,尽量的大些试试Top
5 楼hippie1024(努力必有痕迹)回复于 2005-01-25 16:17:12 得分 10
1,先试一下在imp 时 buffer=5000000 commit=y
2,还不行,就看看原来表是不是有函数索引,Unsed Columns。如果有删除了在重新导出。
3,还不行,可能是文件传输时损坏了,把原来文件在考一份过来(最好不要用FTP传)
4,还不行,可能就是bug了,你该去把该打的补丁都大上再试试了Top
6 楼LGQDUCKY(飘)回复于 2005-01-25 16:37:43 得分 10
只要把 buffer=99999999 加大写就OK了,根据实际物理内存而顶
imp user/pass file=xx full=y buffer=99999999Top
7 楼daydayupliq(敞开胸怀!)回复于 2005-01-25 16:48:19 得分 10
这里有些资料:
案例1:http://www.cnoug.org/viewthread.php?tid=36652
Q:请问各位怎样提高imp导入的速度呀?
数据库的文件大小是800M,exp的时候花了7分钟,然后我把文件拷到另一台机子上做imp导入花了一个小时都没有导完,好像死机一样,请问各位怎样提高imp的速度呀?其有一个表的字段是blob类型的。语句是这样的。
$imp username/password@sid file=aa.dmp fromuser=aa touser=aa ignore=y buffer=40960000;
A:
800M怎么可能imp这么长时间???我们几百个G的东西也不过1小时内搞定
优化,不要动态分配资源(先建好各种空间)
也可以考虑分步,先把定义ddl导出,改一改(看看那些initial就知道要改了-如果是9i以前的版本),再导入定义.然后再导入数据
进一步优化可以考虑不导入索引,把约束关掉;导完数据然后再重建和使约束生效
调整share_pool、large_pool,检查SGA,PGA
http://www.itpub.net/showthread.php?s=&threadid=298089
有關提高export/import速度的討論!
對於export/import我有以下幾個疑問:
1.如何使得export更快?
2.Buffer這個參數的設置,到底有哪些考慮的因數?該如何設置?
3.commit這個參數到底是=n還是=y好?
4.在import時,下面哪種方法最快?
A: 先 imp rows=y constraints=n indexes=n
然後 imp rows=n constraints=y indexes=y
B: 先 imp rows=y constraints=y indexes=n
然後 imp rows=n constraints=n indexes=y
C: 先 imp rows=y constraints=y indexes=n
然後 imp rows=n constraints=n indexfile=test.idx
再提取test.idx裡面的內容手動對index進行重建。
5.上面indexfile=test.idx的test.idx文件中,會包含這些table的constraints內容嗎
dx6340
先imp data, 再创建index, 这样更快。commit=y
husthxd
imp rows=n constraints=n indexes=n
imp rows=y
-- 用脚本创建约束和索引
refrence:
http://blog.itpub.net/post/11/4651
http://blog.itpub.net/post/11/4192
1.imp的buffer在主机内存充裕的情况下越大越好,当然有最大值的限制
2.如果磁盘空间充裕,undo表空间扩展不成问题的话,用默认值commit=n.
3.用toad或者其他第三方工具导出约束、索引创建语句。
btw:38g的导出文件,设置buffer=1g,imp后创建约束和索引,在8个小时内导入完毕。索引和约束创建1个小时完成。总共只需要10个小时不到完成数据迁移。
主机是hp n5000,8cpu,8g memory.
工具是用来提高生产效率的。
有工具为何不用?
用toad而不用imp时指定indexfile=test.idx是因为觉得方便。
没其他更好的理由了。
jlandzpa
1.log_buffer调大
2.如果是归档模式,先改成非归档.
3.redo加大
biti_rainy
1.如何使得export更快?
export direct=y 快
2.Buffer這個參數的設置,到底有哪些考慮的因數?該如何設置?
内存足够自然大比较好
3.commit這個參數到底是=n還是=y好?
commit = n 则表示当一个表的数据imp完毕之后才提交,y 表示当设置的buffer 满的时候提交,n需要更多的回滚段,y则如果一个表中途imp失败只能回滚部分数据,重新imp需要处理这个情况。对于性能来说难说有多大的影响。
4.在import時,下面哪種方法最快?
如果约束和索引是分离的,索引不创建,那 主键和唯一约束如何生效?主键和唯一约束的生效一定是要先建立相关索引的。
5.上面indexfile=test.idx的test.idx文件中,會包含這些table的constraints內容嗎?
纸上得来终觉浅,为何不动手一看
Top
8 楼CiCi_sam(觉得好,就支持下!)回复于 2005-01-25 17:53:06 得分 5
同意楼上的说法!Top
9 楼hippie1024(努力必有痕迹)回复于 2005-01-25 18:58:26 得分 10
怎么变成讨论效率问题了?
呵呵,我是这样做的
调大redo log,log_buffer,非归档模式
IMP 时 rows=y constraints=n indexes=n buffer=4096000 commit=y indexfile=test.idx
然后调大sort_area_size。(1.5倍最大索引占用空间)
修改test.idx文件,让索引以nologging方式创建。
执行test.idx。
IMP性能基本最大化了:)Top
10 楼llm06(blacksheep)回复于 2005-01-26 08:57:32 得分 10
缓冲区设的大一些
使用commit=yTop
11 楼liuyi8903(不让疑问伴随)回复于 2005-01-27 12:49:37 得分 0
支持所有的观点:)Top
12 楼killserver(killserver)回复于 2005-01-27 16:13:48 得分 0
谢谢。搞定了,还有一个问题,ORACLE数据库有增量备份、差异备份吗,用EXP可以吗?Top
13 楼freddy2003()回复于 2005-01-27 16:20:58 得分 10
9i已经不支持增量备份、差异备份,8i可以的Top
14 楼ashzs((可以包含中文字符))回复于 2005-01-27 16:22:58 得分 0
用EXP可以实现增量备份!但是不推荐使用!如果是专用服务器你就用rman吧!Top
15 楼jiangchuanli(大山)回复于 2005-01-28 15:56:54 得分 5
我用oracle817出过此问题,解决方式:
把此用户的表空间建成一个5G的,再建一个回滚段为5G的就可以了。
Top
16 楼showmetoyou(好的)回复于 2005-02-02 10:25:56 得分 0
增量备份还是做一个包比较安全,取得最大行数,加1再insert!Top
17 楼dobetterthatnthink(如果你没有那么多的选择)回复于 2005-02-02 14:47:39 得分 0
你还不如直接copy数据文件,然后用这个文件建立数据库。有记得有人这样做过,Top
18 楼smallcrocodile(大鳄鱼)回复于 2005-02-24 15:56:54 得分 0
关注!Top




