问题现像:
使用dblink直接用impdp的network_link从远程导入数据时,出现下面的问题:
本地数据库是11.2.0.3,远程数据库是10.2.05
但开始用同样的命令导入时,不会出现这个问题,当尝试再导入时就会报这个错。
[oracle@nticket1 ~]$ impdp nticket/nplane231 directory=DIR_1 network_link=link_5118 PARALLEL=4 logfile=imp118.log EXCLUDE=INDEX:"%" tables=nticket.BL_AGENT_INFO_DT,nticket.BL_BALANCE_FEE_DT
Import: Release 11.2.0.3.0 - Production on 星期一 6月 25 17:32:10 2012
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
启动 "NTICKET"."SYS_IMPORT_TABLE_02": nticket/******** directory=DIR_1 network_link=link_5118 PARALLEL=4 logfile=imp118.log EXCLUDE=INDEX:% tables=nticket.BL_AGENT_INFO_DT,nticket.BL_BALANCE_FEE_DT
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 4.187 MB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
ORA-39126: 在 KUPW$WORKER.FETCH_XML_OBJECTS [TABLE:"NTICKET"."BL_BALANCE_FEE_DT"] 中 Worker 发生意外致命错误
ORA-00911: 无效字符
ORA-06512: 在 "SYS.DBMS_METADATA", line 1886
ORA-06512: 在 "SYS.DBMS_METADATA", line 1923
ORA-06512: 在 "SYS.DBMS_METADATA", line 2230
ORA-06512: 在 "SYS.DBMS_METADATA", line 4410
ORA-06512: 在 "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: 在 "SYS.KUPW$WORKER", line 9001
----- PL/SQL Call Stack -----
object line object
handle number name
0x50b4e1830 20462 package body SYS.KUPW$WORKER
0x50b4e1830 9028 package body SYS.KUPW$WORKER
0x50b4e1830 10935 package body SYS.KUPW$WORKER
0x50b4e1830 2728 package body SYS.KUPW$WORKER
0x50b4e1830 9697 package body SYS.KUPW$WORKER
0x50b4e1830 1775 package body SYS.KUPW$WORKER
0x5176f6938 2 anonymous block
ORA-39126: 在 KUPW$WORKER.FETCH_XML_OBJECTS [TABLE:"NTICKET"."BL_BALANCE_FEE_DT"] 中 Worker 发生意外致命错误
ORA-00911: 无效字符
ORA-06512: 在 "SYS.DBMS_METADATA", line 1886
ORA-06512: 在 "SYS.DBMS_METADATA", line 1923
ORA-06512: 在 "SYS.DBMS_METADATA", line 2230
ORA-06512: 在 "SYS.DBMS_METADATA", line 4410
ORA-06512: 在 "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: 在 "SYS.KUPW$WORKER", line 9001
----- PL/SQL Call Stack -----
object line object
handle number name
0x50b4e1830 20462 package body SYS.KUPW$WORKER
0x50b4e1830 9028 package body SYS.KUPW$WORKER
0x50b4e1830 10935 package body SYS.KUPW$WORKER
0x50b4e1830 2728 package body SYS.KUPW$WORKER
0x50b4e1830 9697 package body SYS.KUPW$WORKER
0x50b4e1830 1775 package body SYS.KUPW$WORKER
0x5176f6938 2 anonymous block
作业 "NTICKET"."SYS_IMPORT_TABLE_02" 因致命错误于 17:32:13 停止
原因:Bug 10115400
当执行NETWORK_LINK方式的导入或导出时,如果远端数据库是10.2版本,且通过TABLES参数指定了多个表,就会引发这个问题。11.2的各个版本都可能出现这个问题。Oracle计划在12.1解决这个问题。
解决办法:
需要在源数据库导出对应的表,然后ftp到本地,然后通过impdp导入
参考:
http://yangtingkun.itpub.net/post/468/515097