天天看點

Oracle-記一次IMPDP的導入過程

首先說導出。當然,導出在一般情況下,是很順利的,也很簡單。具體的操作過程,大家可以檢視我部落格中是這篇文章​​Oracle-備份與恢複_資料泵 expdp/impdp​​。略有不同的是,此次導出,采用了并行。

關于并行參數 ​

​PARALLEL​

​​,可參看我的部落格中,轉載的另一篇文章​​Oracle-expdp/impdp 中的并行度PARALLEL參數​​。其中,說明了此參數的用法及相關注意事項。

導出參考腳本如下:

expdp \'/as sysdba\' directory=DUMP schemas=schemas_name compression=all cluster=N PARALLEL=4 filesize=8g dumpfile=schemas_name20221027_%U.dmp logfile=schemas_name20221027.log      

導入參考腳本如下:

##導入腳本
impdp \'/as sysdba\' directory=DUMP schemas=schemas_name cluster=no PARALLEL=4 transform=OID:N dumpfile=schemas_name20221027_%U.dmp logfile=schemas_name20221027_impdp.log      

導入的過程中,遇到了如下錯誤提示:

MINVALUE:指定序列的最小值。最多28位數字。MINVALUE <=START WITH,MINVALUE < MAXVALUE。 此處不符,則報:ORA-04006: START WITH cannot be less than MINVALUE。不指定此參數時,預設是1.

那麼,這裡可以修改成 MINVALUE -1999 或 START WITH 1,都可以解決此問題。

ORA-39083: Object type SEQUENCE failed to create with error:
ORA-04006: START WITH cannot be less than MINVALUE
Failing sql is:
 CREATE SEQUENCE  "SCHEMAS_NAME"."XXX_XXX_XXX_XXX_XXX"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH -1999 CACHE 10000 NOORDER  NOCYCLE      

從别處上傳的DMP檔案不完整導緻,重新上傳完整檔案即可

ORA-31693: Table data object "SCHEMAS_NAME"."T_XX_XXX_XXXX" failed to load/unload and is being skipped due to error:
ORA-31645: unable to read from dump file "/oracle/dumptmp/SCHEMAS_NAME20221027_02.dmp"
ORA-31622: premature end of file at block 1869505      

建立時出現編譯警告,也是由于存儲過程、方法等有中文導緻:重新編譯失效對象。

ORA-39082: Object type ALTER_PROCEDURE:"SCHEMAS_NAME"."XXX_XXX_XXX" created with compilation warnings
ORA-39082: Object type ALTER_FUNCTION:"SCHEMAS_NAME"."XXX_XXX_XXX" created with compilation warnings
ORA-39082: Object type PACKAGE_BODY:"SCHEMAS_NAME"."XXX_XXX_XXX" created with compilation warnings      
##我是這樣處理
SQL> exec dbms_utility.compile_schema('SCHEMAS_NAME');

PL/SQL procedure successfully completed.      

oracle使用者下的環境變量參數 NLS_LANG 配置錯誤導緻。如果基本參數 nls_language是 AMERICAN,那麼 NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 即可。

UDI-12705: operation generated ORACLE error 12705
ORA-12705: Cannot access NLS data files or invalid environment specified      

對于create type失敗,可在導入指令中末尾加上 transform=OID:N

當我們使用expdp/impdp工具進行同資料庫執行個體(Instance)不同Schema之間資料拷貝時,如果schema中有type類型,就會出現這個錯誤。

如果TRANSFORM參數設定成OID=N,表示在imp的時候,新建立的表或這個類型會賦予新的OID,而不是dmp檔案中包含的OID的值。但是這個參數的預設值是OID=Y,是以在進行Imp的時候,新建立的表或者type會賦予同樣的OID,如果是位于同一個資料庫上的不同schema,那就會造成OID沖突的問題,是以解決這個問題也很簡單,隻需要在impdp的時候,顯示設定transform 參數為OID=N,即 transform=OID:N 就可以了。

ora-39083:object type TYPE failed to create with error:
ora-02304:invalid object identifier literal
failing sql is:
 "CREATE TYPE "T_TYP" TIMESTAMP '2012-03-07:10:47:03' OID '8E294AB7CC28493A94"

 "FF82791A376379'   as object (id number);"