首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DBMS_DATAPUMP错误:由于API与作业当前定义之间的不一致,当前API无法执行。

DBMS_DATAPUMP错误:由于API与作业当前定义之间的不一致,当前API无法执行。
EN

Database Administration用户
提问于 2018-06-18 10:44:01
回答 2查看 3.6K关注 0票数 2

我试图使用impdp在Amazon实例上执行DBMS_DATAPUMP

我正在遵循描述的步骤在指南中 (将数据导入到Amazon上的Oracle )。

我已经成功地将dmp复制到RDS实例中。

这是我与impdp用户一起执行的awssys任务:

代码语言:javascript
运行
复制
-- IMPORT DATAPUMP
DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => '20180618_my_copied.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''MYSCHEMA'')');
DBMS_DATAPUMP.START_JOB(hdnl);
END;
/      

我无法理解显示的错误的含义:

代码语言:javascript
运行
复制
ORA-39002: operazione non valida
ORA-06512: a "SYS.DBMS_DATAPUMP", line 6224
ORA-06512: a line 7
39002. 00000 -  "invalid operation"
*Cause:    The current API cannot be executed because of inconsistencies
           between the API and the current definition of the job.
           Subsequent messages supplied by DBMS_DATAPUMP.GET_STATUS
           will further describe the error.
*Action:   Modify the API call to be consistent with the current job or
           redefine the job in a manner that will support the specified API.

这是源DB的版本:

代码语言:javascript
运行
复制
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
"CORE   11.2.0.1.0  Production"
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

这是Amazon实例的版本:

代码语言:javascript
运行
复制
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
"CORE   12.1.0.2.0  Production"
TNS for Linux: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production

编辑:我已经将version=COMPATIBLE添加到expdp命令和DBMS_DATAPUMP选项中,但是错误仍然存在。

代码语言:javascript
运行
复制
expdp system@source_db version=COMPATIBLE dumpfile=20180618_my.dmp logfile=20180618_my.log directory=DATA_PUMP_DIR CONSISTENT=Y  SCHEMAS=MYSCHEMA,MYSCHEMA2,MYSCHEMA3,MYSCHEMA4
EN

回答 2

Database Administration用户

回答已采纳

发布于 2018-06-25 12:48:57

经过多次尝试,我找到了这样的方法:

  1. 在设置expdp参数的情况下运行version=11.2
  2. 使用DBMS_FILE_TRANSFER.PUT_FILE将dmp复制到RDS实例
  3. 运行impdp,并在11.2机器上设置version=11.2参数。

这导致:

代码语言:javascript
运行
复制
Connected to: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
ORA-39002: invalid operation
ORA-39068: invalid master table data in row with PROCESS_ORDER=-1
ORA-01403: no data found

在ORACLE之后,IMPDP引发ORA-39068:使用PROCESS_ORDER=-1和ORA-1403 (Doc 1556555.1)的行中的无效主表数据,我成功地超额删除了DUAL

代码语言:javascript
运行
复制
SELECT owner, object_name, object_type, status
FROM dba_objects
WHERE object_name = 'DUAL'
AND OBJECT_TYPE = 'TABLE';

OWNER      OBJECT_NAME OBJECT_TYPE STATUS
---------- ----------- ----------- -------------
SYS        DUAL        TABLE       VALID
AWSSYS     DUAL        TABLE       VALID

DROP TABLE AWSSYS.DUAL;

通过重复步骤3,impdp现在可以正常工作了。

票数 1
EN

Database Administration用户

发布于 2018-06-18 11:56:05

您的版本在源和目的地之间有所不同。

代码语言:javascript
运行
复制
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null, version=>'COMPATIBLE');

哦,坏消息是:你也需要这个作为支出。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/209911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档