impdp ORA-39014 One or more workers have prematurely exited
同事进行数据导入时报错,简单记录之。
1、impdp导入数据时报错,错误信息如下所示:
ORA-39014: One or more workers have prematurely exited. ORA-39029: worker 7 with process name "DW0M" prematurely terminated ORA-31684: Object type PROCEDURE:" ADM"."AAAAA" already exists |
从报错信息可以看出,并行导入的进程(worker 7)遇到错误退出,错误原因是ORA-31684: Object type PROCEDURE:" ADM"."AAAAA" already exists。正常情况下,如果是一个干净的环境,导入数据时,不可能报object already exists这种错误。
2、导入脚本如下所示:
DIRECTORY=dpdir LOGFILE=impdp_adm_20211101.log cluster=n dumpfile=expdp_adm_%U.dmp parallel=8 JOB_NAME=impdp_adm |
导入脚本中没有特殊的参数,但开了并行,也即使用了parallel参数。上面的那个ORA-31684: Object type PROCEDURE:" ADM"."AAAAA" already exists错误,怀疑是impdp的并行进程重复做了相同的事。
3、让同事在impdp时去掉parallel参数,过一段时间后,反馈导入成功。说明这个问题就是由parallel参数导致。
4、搜索MOS,找到文档:Errors ORA-39014 ORA-39029 ORA-31672 On DataPump Import (Doc ID 464082.1),文中提到:
The parallelism (specified with parameter PARALLEL) should be less than or equal to the number of dump files in the dump file set. If there are not enough dump files, the performance will not be optimal because multiple threads of execution will be trying to access the same dump file.
在这个案例中,源库导出时使用了parallel=8,而目标库导入时指定的parallel也为8,但报错,即使把parallel改为4也报错,说明不是这个文档中涉及的情况。
5、MOS上关于expdp或impdp时报ORA-39014 ORA-39029的BUG还挺多的,但涵盖19.12版本的BUG很少,只找到Bug30477767 - ORA-02095 And Worker Crashes During Import When Using Parallel Parameter (Doc ID 30477767.8)。在MOS上看不到这个BUG的细节,也无法最终确认。
6、最终只能让同事在impdp时去掉parallel参数,作为这个CASE的workaround。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署