首页 > 数据库 > Oracle > impdp导入报错ORA-04030的解决方法
现象描述:从源端用impdp导出5张大表,使用的remap_tablespace在目标端导入这五张表,在导入到统计信息的时候报错。
系统:Linux 6.5
环境:11.2.0.4
导入报错如下:
Processing object type TABLE_EXPORT/TABLE/COMMENT Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS ORA-39014: One or more workers have prematurely exited. ORA-39029: worker 1 with process name "DW00" prematurely terminated ORA-31671: Worker process DW00 had an unhandled exception. ORA-04030: out of process memory when trying to allocate 16048 bytes (session heap,kuxLpxAlloc) ORA-06512: at "SYS.KUPW$WORKER", line 1887 ORA-06512: at line 2 ORA-39097: Data Pump job encountered unexpected error -1427 ORA-39065: unexpected master process exception in MAIN ORA-01427: single-row subquery returns more than one row Job "SYS"."SYS_IMPORT_TABLE_02" stopped due to fatal error at Mon Sep 17 16:59:07 2018 elapsed 0 01:10:01
分析:
按报错来看是因为memory不够导致的,可分析memory和sga的时候,没有发现明显的错误,系统内存也是充足的,查看MOS,找到这篇文章和我的报错是一致的,(文档 ID 1516766.1)
按照该文档的描述,在包含大型分区表和许多子分区的数据库的数据泵导入期间,会报ORA-04030导致导入失败。在11.2.x版本中,导入期间,这些对象的大量数据库统计信息会压缩导入期间的XML处理。这已被确定为Bug:14841775。在12.1版本中,数据库统计信息的导出和导入方式已经过重新设计,因此将不再出现内存资源问题。
解决:
1、使用EXCLUDE = STATISTICS执行不包括统计信息的导入,导入对象后重新生成统计信息。
2、如果可以,升级数据库到12.1版本
此次错误解决采取第一种方法,使用不包括统计信息的导入,导入完后重新收集统计信息。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31546994/viewspace-2214533/ ,如需转载,请注明出处,否则将追究法律责任。