Oracle 10.2.0.5 数据泵 导入 19c 报ORA-06502 KUPW: Fatal=0错误解决方法
2020-11-04 22:0340560原创Oracle 19c
本文链接:https://www.cndba.cn/dave/article/4292
一个简单的数据迁移,使用数据泵从10.2.0.5 RAC环境导入19c 单实例报错,如下:
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.KUPW$WORKER", line 12620
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.KUPW$WORKER", line 34278
----- PL/SQL Call Stack -----
object line object
handle number name
0x76fa4818 33476 package body SYS.KUPW$WORKER.WRITE_ERROR_INFORMATION
0x76fa4818 12641 package body SYS.KUPW$WORKER.DETERMINE_FATAL_ERROR
0x76fa4818 34341 package body SYS.KUPW$WORKER.SEND_TRACE_MSG
0x76fa4818 28767 package body SYS.KUPW$WORKER.SEND_MSG
0x76fa4818 5418 package body SYS.KUPW$WORKER.LOAD_METADATA
0x76fa4818 13781 package body SYS.KUPW$WORKER.DISPATCH_WORK_ITEMS
0x76fa4818 2429 package body SYS.KUPW$WORKER.MAIN
0x723f1018 2 anonymous block
DBMS_LOB.TRIM
DBMS_LOB.FREETEMPORARY
DBMS_LOB.FREETEMPORARY
KUPW: In procedure UPDATE_TYPE_COMPLETION_ROW
KUPW: Old Seqno: 225 New Path: PO Num: -6 New Seqno: 0 error count: 1
KUPW: Primary row is: FALSE
KUPW: Working on old seqno with count of: 1
KUPW: In procedure SEND_MSG. Fatal=0
KUPW: Error count: 1
KUPW: In procedure DETERMINE_FATAL_ERROR with ORA-06502: PL/SQL: numeric or value error: character string buffer too small
开始以为是bug, 上MOS搜了一下,在12c以后的版本中,确实有几个bug 与ORA-06502的错误有关。 几个有关ORA-06502 的bug与这里的错误输出也有出入。 所以用心的关键词搜索了一下:
KUPW: In procedure SEND_MSG. Fatal=0
找到一篇文章:
DataPump Job With Parallel>1 Reports ORA-29913/ORA-00448/ORA-39078 In RAC Environment (Doc ID 2318625.1)
虽然输出日志不匹配,但理论解释和我们这里的很符合。
By default, the parallel server processes can operate on any or all Oracle RAC nodes in the cluster.
The DataPump failure happens when the job tries to create a worker process on the instance which is in mounted mode.
我们这里也是从RAC集群导入到19c的单实例, MOS对此问题的解决方法有3种:
1/ Start the job with parallel=1 (default)
2/ Open all RAC instances in read-write mode
3/ Start the DP job with cluster=NO
导出环境是10g 的数据,没有cluster 选项,所以直接在19c中导入的时候加上了cluster=no,导入成功。