oracle導入TYPE對象報錯ORA-02304


Type是我們經常使用的數據庫對象結構。我們在實際中,可以單獨定義type類型,之后在PL/SQL代碼或者數據表中使用。

 

在一個偶然的機會讓筆者發現使用Type類型在數據exp/imp中的麻煩。當我們使用exp/imp工具進行同數據庫實例(Instance)不同Schema之間數據拷貝時,如果Schema中有type類型,就會出現問題錯誤。

如下:

 

IMP-00003: 遇到 ORACLE 錯誤 2304

ORA-02304: 無效的對象標識符文字
IMP-00017: 由於 ORACLE 錯誤 2304, 以下語句失敗:

 "CREATE TYPE "T_REC_TABLE" TIMESTAMP '2010-12-21:18:17:33' OID 'D9AFD3FAE0A5"

 "4964B1684CA28C69CEED'   as table of t_rec_test;"

 ""

 ""

IMP-00003: 遇到 ORACLE 錯誤 2304

ORA-02304: 無效的對象標識符文字
IMP-00017: 由於 ORACLE 錯誤 2304, 以下語句失敗:

 "CREATE TYPE "T_TYP" TIMESTAMP '2012-03-07:10:47:03' OID '8E294AB7CC28493A94"

 "FF82791A376379'   as object (id number);"

 ""

 ""

 

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

可以參考下面的說明。

大意就是說如果TRANSFORM參數設置成OID=N,表示在imp的時候,新創建的表或這個類型會賦予新的OID,而不是dmp文件中包含的OID的值。但是這個參數的默認值是OID=Y,因此在進行Imp的時候,新創建的表或者type會賦予同樣的OID,如果是位於同一個數據庫上的不同schema,那就會造成OID沖突的問題,因此解決這個問題也很簡單,只需要在impdp的時候,顯示設置transform 參數為OID=N既可以了。如下所示,

(cmd> impdp test/test directory=dump_dir dumpfile=dump.dmp logfile=dump.log remap_schema=frank:test  transform=OID:N 

 

參考地址:http://www.shangxueba.com/jingyan/View.aspx?id=52990

http://blog.itpub.net/17203031/viewspace-732089/

感謝

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM