expdp错误ORA-39029

来源:互联网 发布:242家网络小额贷款牌照 编辑:程序博客网 时间:2024/06/05 20:46
源端hp-unix+oracle10g-r204-rac,目标端redhat+oracle10g。
在目标端使用network_link导出,报错如下:
rm /opt/oradir/expdp.dmp
expdp \"sys/oracle as sysdba\" directory=oradir network_link=portal95  schemas=rbt dumpfile=expdp.dmp logfile=expdp.log exclude=statistic

ORA-39014: One or more workers have prematurely exited.
ORA-39029: worker 2 with process name "DW02" prematurely terminated
ORA-31671: Worker process DW02 had an unhandled exception.
ORA-12801: error signaled in parallel query server
ORA-29913: error in executing ODCIEXTTABLEPOPULATE callout
ORA-29400: data cartridge error
KUP-04038: internal error: kupax-meta1
ORA-06512: at "SYS.ORACLE_DATAPUMP", line 78
ORA-06512: at "SYS.KUPW$WORKER", line 1345
ORA-06512: at line 2

Job "SYS"."SYS_EXPORT_SCHEMA_05" stopped due to fatal error at 13:53:52

alert.log
首先看到的错误是:
Thu May 24 13:51:34 2012
The value (30) of MAXTRANS parameter ignored.
kupprdp: master process DM00 started with pid=38, OS id=5089
         to execute - SYS.KUPM$MCP.MAIN('SYS_EXPORT_SCHEMA_05', 'SYS', 'KUPC$C_1_20120524135135', 'KUPC$S_1_20120524135135', 0);
kupprdp: worker process DW01 started with worker id=1, pid=39, OS id=5091
         to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_05', 'SYS');
kupprdp: worker process DW02 started with worker id=2, pid=40, OS id=5096
         to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_05', 'SYS');
kupprdp: worker process DW03 started with worker id=3, pid=42, OS id=5098
         to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_05', 'SYS');
kupprdp: worker process DW04 started with worker id=4, pid=43, OS id=5100
         to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_05', 'SYS');
kupprdp: worker process DW05 started with worker id=5, pid=44, OS id=5102
         to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_05', 'SYS');
kupprdp: worker process DW06 started with worker id=6, pid=45, OS id=5104
         to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_05', 'SYS');
kupprdp: worker process DW07 started with worker id=7, pid=46, OS id=5106
         to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_05', 'SYS');
kupprdp: worker process DW08 started with worker id=8, pid=47, OS id=5108
         to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_05', 'SYS');
Thu May 24 13:52:15 2012

经查,该错误是备份时创建备份主表(Master Table)产生的(使用类似CREATE TABLE <table_name> (<columns_list>) INITRANS 10 MAXTRANS 30语句创建),提示参数MAXTRANS已经被废弃而已,是个bug,略过。
继续往下看:
Memory Notification: Library Cache Object loaded into SGA
Heap size 2048K exceeds notification threshold (2048K)
KGL object name :SYS.KUPC$C_1_20120524135135

嘿嘿,这个问题之前处理过,也是个bug而已,隐含参数_kgl_large_heap_warning_threshold默认值是2M,该参数控制加载到内存中对象的大小,当加载的对象大于2M时,就会在alert警告文件中进行提示。该参数默认值在10.2.0.2开始调整到了50M。这库是个测试库,还没来得及升级,准备先进性测试到处工作之后再进行升级。
处理如下:
SQL> select a.ksppinm name,b.ksppstvl value,a.ksppdesc description  from x$ksppi a,x$ksppcv b  where a.indx = b.indx and a.ksppinm = '_kgl_large_heap_warning_threshold';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
_kgl_large_heap_warning_threshold
2097152
maximum heap size before KGL writes warnings to the alert log


SQL> select 2097152/1024/1024 MB from dual;

    MB
----------
     2
    
SQL> alter system set "_kgl_large_heap_warning_threshold"=52428800 scope=spfile;    

System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 2147483648 bytes
Fixed Size            1220432 bytes
Variable Size          419430576 bytes
Database Buffers     1711276032 bytes
Redo Buffers           15556608 bytes
Database mounted.
Database opened.
SQL> select a.ksppinm name,b.ksppstvl value,a.ksppdesc description  from x$ksppi a,x$ksppcv b  where a.indx = b.indx and a.ksppinm = '_kgl_large_heap_warning_threshold';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
_kgl_large_heap_warning_threshold
52428800
maximum heap size before KGL writes warnings to the alert log

好了,告警日志中的错误信息已经检查完毕并处理了,现在回头来看expdp抛出的错误:
ORA-39014: One or more workers have prematurely exited.
ORA-39029: worker 2 with process name "DW02" prematurely terminated
ORA-31671: Worker process DW02 had an unhandled exception.
ORA-12801: error signaled in parallel query server
ORA-29913: error in executing ODCIEXTTABLEPOPULATE callout
ORA-29400: data cartridge error
KUP-04038: internal error: kupax-meta1
ORA-06512: at "SYS.ORACLE_DATAPUMP", line 78
ORA-06512: at "SYS.KUPW$WORKER", line 1345
ORA-06512: at line 2

搜索了下,貌似很多人遇到过,去掉并行即可,也有可能是版本的问题。
事后,升级到10.2.0.5之后这个问题不在存在,继续使用并行导出。
-The End-
原创粉丝点击