我正在尝试impdp
使用DBMS_DATAPUMP
.
我正在按照Amazon RDS 指南(将数据导入 Amazon RDS 上的 Oracle)中描述的步骤进行操作。
我已经成功地将 dmp 复制到了 RDS 实例。
这是我与用户impdp
一起执行的工作:awssys
-- 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;
/
我无法理解显示的错误的含义:
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.
这是源数据库的版本:
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 RDS 实例的版本:
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
选项,但错误仍然存在。
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
您的版本在源和目标之间有所不同。
哦,坏消息:expdp 也需要这个。
经过多次尝试,我发现了这种方式:
expdp
使用version=11.2
参数集运行。DBMS_FILE_TRANSFER.PUT_FILE
到 RDS 实例impdp
上的参数集运行。version=11.2
这引起:
以下 ORACLE 支持IMPDP 引发 ORA-39068: Invalid Master Table Data In Row With PROCESS_ORDER=-1 And ORA-1403 (Doc ID 1556555.1)我成功删除了
DUAL
多余的。通过重复步骤 3
impdp
现在可以正常工作。