客户Oracle 10.2.0.3环境,在导出是碰到ORA-4030错误。
错误信息为:
Processing object TYPE SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT Processing object TYPE SCHEMA_EXPORT/TABLE/TRIGGER Processing object TYPE SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object TYPE SCHEMA_EXPORT/POST_SCHEMA/PROCOBJ ORA-39014: One OR more workers have prematurely exited. ORA-39029: worker 1 WITH process name “DW01” prematurely TERMINATED ORA-31671: Worker process DW01 had an unhandled exception. ORA-04030: OUT OF process memory WHEN trying TO allocate 4108 bytes (PLS non-lib hp.pdzgM60_Make) ORA-06512: at “SYS.KUPC$QUEUE_INT”, line 277 ORA-06512: at “SYS.KUPW$WORKER”, line 1311 ORA-04030: OUT OF process memory WHEN trying TO allocate 65036 bytes (kxs-heap-c,KQL tmpbuf) ORA-06512: at “SYS.KUPW$WORKER”, line 13249 ORA-06512: at “SYS.KUPW$WORKER”, line 14923 ORA-06512: at “SYS.KUPW$WORKER”, line 6293 ORA-39125: Worker unexpected fatal error IN KUPW$WORKER.DISPATCH_WORK_ITEMS while calling DBMS_METADATA.FETCH_XML_CLOB [PROCOBJ:“USER1”.“PROC_SCENAR2”] ORA-06512: at “SYS.KUPW$WORKER”, line 6988 ORA-04030: OUT OF process memory WHEN trying TO allocate 4108 bytes (PLS non-lib hp.pdzgM60_Make) ORA-04030: OUT OF process memory WHEN trying TO allocate 16396 bytes (koh-kghu sessi,pl/SQL vc2) ORA-06512: at “SYS.KUPF$FILE”, line 2901 ORA-06512: at “SYS.KUPW$WORKER”, line 2301 ORA-04030: OUT OF process memory WHEN trying TO allocate 16396 bytes (koh-kghu sessi,pl/SQL vc2) ORA-06512: at “SYS.KUPW$WORKER”, line 2 Job “USER1”.“SYS_EXPORT_SCHEMA_01” stopped due TO fatal error at 10:50:29 |
Oracle在导出数据字典元数据时出现了异常,这显然属于Oracle的bug。查询MOS,发现大量类似的描述,其中以DataPump Export (EXPDP) Terminates With Error ORA-4030 [ID 1368462.1]的描述最为接近。
Oracle给出了三种接近方案,可以设置隐含参数_use_realfree_heap=TRUE和 _realfree_heap_pagesize_hint=262144,这是避免PL/SQL程序导致ORA-4030错误的;另外就是在EXPDP的时候指定EXCLUDE=PROCACT_SYSTEM或EXCLUDE=PROCACT_SCHEMA,对当前的情况而言,这个方法应该是最适合的;最后一个方法是设置操作系统内核参数vm.max_map_count=300000。