ORA-39012: Client detached EXPDP stop task DBMS_DATAPUMP

ORA-39012: Client detached 没有成功启动task,不会进行imp的任何操作

impdp出现连接信息后,会开始执行truncate table 后import动作,这个时候几十abort /stop,在执行的表依旧会完成import,可以参考log里面的信息。 abort /stop只对未执行的table 生效,v$session中可以查看session 信息。

impdp中途取消要小心,很容易数据重复导入了。

Applies To

All Users

Oracle Database - Enterprise Edition - Version 10.2.0.1 to Version 11.1.0.7

Summary

When using DataPump API the following errors are received:

ORA-39232: invalid remap function: NewUDFValExt

ORA-39012: Client detached before the job started.

Please note that the function name will be replaced with your defined function name. In our example it is 'NewUDFValExt'.

Solution

The Bug 8751620 (closed as 'Not a bug') was filed for this case and development has informed that this is an expected behavior when it comes to Datapump API being called inside PL/SQL block.

Datapump API expects the function name in UPPER case when this is called inside PL/SQL block. In this case the function name (NewUDFValExt) is passed in mixed case letters. There are no issues when the function name ('NewUDFValExt') is passed in UPPER case characters, e.g:

DBMS_DATAPUMP.data_remap (h1, 'COLUMN_FUNCTION', 'UDF_VAL_TEST', 'UDF_VAL_EXT', 'NEWUDFVALEXT', 'TEST');

Cause

Test to reproduce:

connect / as sysdba

create user test identified by <PASSWORD>;

grant connect, resource,dba to test;

CREATE or replace DIRECTORY DMPDIR AS '/tmp';

GRANT READ, WRITE ON DIRECTORY DMPDIR TO test;

connect test/<PASSWORD>

create table UDF_VAL_TEST

(

UDF_VAL_ID NUMBER(10) not null,

UDF_VAL_EXT NVARCHAR2(2000)

);

Insert into UDF_VAL_TEST(UDF_VAL_ID, UDF_VAL_EXT) values (1, 'val1');

Insert into UDF_VAL_TEST(UDF_VAL_ID, UDF_VAL_EXT) values (2, 'val2');

Insert into UDF_VAL_TEST(UDF_VAL_ID) values (3);

Insert into UDF_VAL_TEST(UDF_VAL_ID,UDF_VAL_EXT) values (4, 'val4');

Insert into UDF_VAL_TEST(UDF_VAL_ID) values (5);

commit;

DECLARE

h1 NUMBER;

begin

h1 := DBMS_DATAPUMP.open ('EXPORT', 'TABLE', NULL, 'MY_EXPORT_JOB1', 'COMPATIBLE');

-- specify dump file

DBMS_DATAPUMP.add_file (h1, 'UDFVAL1.dmp', 'DMPDIR', '10M', DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE);

-- specify log file

DBMS_DATAPUMP.add_file (h1, 'Export1.log', 'DMPDIR', '10M', DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);

DBMS_DATAPUMP.metadata_filter (h1, 'NAME_EXPR', 'IN(''UDF_VAL_TEST'')');

DBMS_DATAPUMP.data_remap (h1, 'COLUMN_FUNCTION', 'UDF_VAL_TEST', 'UDF_VAL_EXT', 'NewUDFValExt', 'TEST');

DBMS_DATAPUMP.start_job(h1);

commit;

end;

/

This returns:

ERROR at line 1:

ORA-39001: invalid argument value

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79

ORA-06512: at "SYS.DBMS_DATAPUMP", line 3043

ORA-06512: at "SYS.DBMS_DATAPUMP", line 3813

ORA-06512: at line 14

The log file contains the following errors:

ORA-39232: invalid remap function: NewUDFValExt

ORA-39012: Client detached before the job started.

DataPump API expects the function name in UPPER case when this is called inside PL/SQL block.

References

MOS document id: 879153.1

相关推荐
达梦数据3 小时前
DMDRS空间数据类型说明:Oracle、DM8、MySQL空间数据类型映射
数据库·mysql·oracle
lusklusklusk4 小时前
Oracle索引组织表,SQLServer聚集索引,Mysql Innodb表的数据行不是在磁盘上像排队一样严格连续地存放
mysql·postgresql·oracle·sqlserver
Lucifer三思而后行1 天前
Oracle SQL 优化实战:明明走了索引,SQL 还是慢?
sql·oracle
DarkAthena1 天前
【DuckDB】在DuckDB中查询ORACLE的数据的三种方式
oracle·duckdb
风123456789~1 天前
【Oracle专栏】更新多个表的统计信息
oracle
实心儿儿1 天前
MySQL — 库的操作
数据库·mysql·oracle
隔窗听雨眠1 天前
Oracle普通表自动改造分区表:从评估到自动化维护的完整实战指南
oracle
我要见SA姐12 天前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
我要见SA姐12 天前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
这个DBA有点耶2 天前
异构数据集成怎么做?5 种同步方案对比 + 金融级 CDC 实战解析
数据库·oracle·架构