我试图使用impdp
在Amazon实例上执行DBMS_DATAPUMP
。
我正在遵循描述的步骤在指南中 (将数据导入到Amazon上的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.
这是源DB的版本:
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实例的版本:
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
发布于 2018-06-25 12:48:57
经过多次尝试,我找到了这样的方法:
expdp
参数的情况下运行version=11.2
。DBMS_FILE_TRANSFER.PUT_FILE
将dmp复制到RDS实例impdp
,并在11.2机器上设置version=11.2
参数。这导致:
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
。
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
现在可以正常工作了。
发布于 2018-06-18 11:56:05
您的版本在源和目的地之间有所不同。
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null, version=>'COMPATIBLE');
哦,坏消息是:你也需要这个作为支出。
https://dba.stackexchange.com/questions/209911
复制相似问题