我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。 本博客所有内容均为原创,如有转载请注明作者和出处

EXP在9R2上导出时报错ORA-3113和ORA-24324(二)

上一篇 / 下一篇  2008-04-29 21:22:12 / 个人分类:Bug

今天同事在导出的时候碰到了错误,EXP的过程中出现了ORA-3113ORA-24324错误。

EXP9R2上导出时报错ORA-3113ORA-24324http://yangtingkun.itpub.net/post/468/460647

继续分析错误情况。

 

 

本来认为这个错误已经绕过去了,没想到的是,导入过程中又出现了错误:

$ imp system file=jg080424.dmp buffer=20480000 fromuser=shgov touser=jsgov_old ignore=y grants=n

Import: Release 9.2.0.4.0 - Production on星期四424 16:25:57 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Password:

Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
m6Qv/SF#AR*l0With the Partitioning, OLAP and Oracle Data Mining optionsITPUB个人空间5iGfe!U1W
JServer Release 9.2.0.4.0 - Production

Export file created by EXPORT:V09.02.00 via conventional path

Warning: the objects were exported by SHGOV, not by you

import done in ZHS16GBK character set and AL16UTF16 NCHAR character setITPUB个人空间6ikk0Jtw s
. importing SHGOV's objects into JSGOV_OLD
acs'z1e I:G4W0. . importing table                            "A"          0 rows imported
3BXJShJR'A0. . importing table              "BYSS_FPAGE_DATA"         12 rows importedITPUB个人空间l)Ow2[(kl
. . importing table                    "CAT_BUYER"       7447 rows imported
4r FFBC bT0. . importing table                   "CAT_DEALER"      14331 rows imported
y9pz__AP$_0w0. . importing table               "CAT_ENTERPRISE"      23472 rows importedITPUB个人空间Y6vL4q `
. . importing table               "CAT_GOVERNMENT"        452 rows importedITPUB个人空间`:n8t6N#hf0z.s;VBv
. . importing table                      "CAT_ORG"      31350 rows importedITPUB个人空间l d g4OJ:@G
. . importing table             "CAT_PLAT_PRODUCT"    1369020 rows imported
og0W3cBg0. . importing table                  "CAT_PRODUCT"      90669 rows importedITPUB个人空间&he b#d$N7J
. . importing table                      "HIS_INV"          0 rows importedITPUB个人空间R7NPC(s B R};J8E
. . importing table                 "HIS_INV_INIT"          0 rows imported
ESS6A#P ~&{0. . importing table                      "HIS_OUT"          0 rows importedITPUB个人空间 {0]2j5Z/_
.
D$w?s/WH B0.
C-tR/D-j_"MU%}q f0.
,J;NVw+w ?Bi#P3l0. . importing table             "SHGOV_HOS_CHARGE"          0 rows imported
-q&HeY0n cj3R*N0. . importing table   "SHGOV_MED_RETAILPRICE_DIFF"        134 rows imported
-~8ot4OR4kl$~0. . importing table                  "SHGOV_ORDER"ITPUB个人空间(uU;`F1{f*S
IMP-00058: ORACLE error 1438 encountered
%D_ Qr;p7U0ORA-01438: value larger than specified precision allows for this column
jb}ux]J.`h0IMP-00028: partial import of previous table rolled back: 31322 rows rolled backITPUB个人空间:B9hgp nU'H2v
IMP-00009: abnormal end of export file
S `A(M,C0Import terminated successfully with warnings.

导入过程出现错误,而且错误就是出在导出时出现问题的表。不过这次错误信息已经足够明显了,表中出现了非法的数据导致数据的精度超过了列本身的限制,因此无法对该列执行导入操作。

Oracle在这里的隐含信息,甚至给出了错误的记录。由于出现了这个错误,导致了前面的31322条记录被回滚。这说明错误发生在表顺序读取时的第31323条。

通过SQLPLUS连接,访问第31323条记录,得到结果是部分字段超过长度限制,从而导致整条记录显示出现问题。

这条记录的存在是导入报错的原因,同时也是导出报错的原因。由于导出的时候处理超过长度限制的记录,所以才会报错ORA-600。而且由于后面使用了DIRECT方式导出,绕过了SQL引擎,Oracle不对数据是否满足字段限制条件进行检查,因此可以成功导出。但是导入的时候就没有办法绕过这条记录了。

对应的解决的方法其实很多,除了在目标数据库删除掉导致错误的异常数据外,还可以通过提前建立目标表,将字段的限制扩大,然后通过ignore=y的方式导入问题数据。

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar