Oracle
DBMS_DATAPUMP 錯誤:由於 API 與目前作業定義不一致,無法執行目前 API
我正在嘗試
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
使用version=11.2
參數集執行。- 使用 dmp 複製
DBMS_FILE_TRANSFER.PUT_FILE
到 RDS 實例- 使用11.2 機器
impdp
上的參數集執行。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: Invalid Master Table Data In Row With PROCESS_ORDER=-1 And ORA-1403 (Doc ID 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
現在可以正常工作。
您的版本在源和目標之間有所不同。
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null, version=>'COMPATIBLE');
哦,壞消息:expdp 也需要這個。