现象描述:从源端用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博客 ” ,链接:http://blog.itpub.net/31546994/viewspace-2214533/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31546994/viewspace-2214533/