溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle導入導出數(shù)據(jù)時的常見錯誤

發(fā)布時間:2021-09-14 16:45:23 來源:億速云 閱讀:161 作者:chen 欄目:關系型數(shù)據(jù)庫

這篇文章主要講解了“Oracle導入導出數(shù)據(jù)時的常見錯誤”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Oracle導入導出數(shù)據(jù)時的常見錯誤”吧!

1. exp導出提示"PLS-00302:必須說明SET_NO_OUTLINES 組件"

如果客戶端是Oracle 11g,而服務器端是Oracle 9i,執(zhí)行exp就會有如下錯誤:

Export: Release 11.1.0.6.0 - Production on 星期五 7月 15 21:40:58 2011    

Copyright (c) 1982, 2007, Oracle.  All rights reserved

EXP-00056: 遇到 ORACLE 錯誤 6550  
ORA-06550: 第 1 行, 第 41 列:  
PLS-00302: 必須說明 'SET_NO_OUTLINES' 組件  
ORA-06550: 第 1 行, 第 15 列:  
PL/SQL: Statement ignored  
EXP-00000: 導出終止失敗  

Oracle不同版本導入導出存在一些問題,比如從Oracle 9i中exp出來的dmp文件(在安裝有oracle 9i的機器上使用exp命令),可以imp到Oracle 11g中去(裝有Oracle 11g的機器),但是反過來確實不行。

同時,不能直接在客戶端(安裝有Oracle 11g)上使用exp命令向服務器端(Oracle 9i)上的數(shù)據(jù)庫發(fā)出請求導出數(shù)據(jù)到客戶端機器上,就會提示“PLS-00302”。

這就是所謂向下兼容。

2. imp導入dmp文件時報錯"IMP-00038"

執(zhí)行imp導入操作,提示,

IMP-00038: Could not convert to environment character set’s handle 

IMP-00000: Import terminated unsuccessfully

這是因為文件導出用的expdp,而導入時用的imp,所以導出導入格式不一樣。

3. 執(zhí)行imp導入提示“IMP-00003”

imp導入提示,

IMP-00017: following statement failed with oracle error 2298:

"ALTER TABLE "A" ENABLE CONSTRAINT REFEREN" "REF_A""

IMP-00003: ORACLE error 2298 encountered

ORA-02298: cannot validate (REFERENCE_O) - parent keys not found

IMP-00017: following statement failed with ORACLE error 2298:

Import terminated successfully with warnings.

原因有可能是在導出的時間某個表已經(jīng)被導出了,可是他外鍵關聯(lián)有數(shù)據(jù)變化,導致不一致,所以報錯。

根本原因,exp不能保證事務的完整性,例如導出主表,隨后在主表增加記錄,然后在子表增加記錄,提交,這是很可能的。

解決方案是在導出指令中,加入?yún)?shù)consistent=y,默認為no,其目的就是保持一致的作用。例如,

$ exp system/oracle file=/home/oracle/exp.dmp owner=oracle consistent=y

如果沒用consistent=y,已經(jīng)完成了導入,存在違反約束的數(shù)據(jù),此時就是需要創(chuàng)建約束,可以采用novalidate子句,或者找出不規(guī)則的數(shù)據(jù),清除之后再重新創(chuàng)建約束。

4. 執(zhí)行imp導入提示"IMP-00013"

執(zhí)行imp導入操作,提示,

IMP-00013: only a DBA can import a file exported by another DBA

IMP-00000: Import terminated unsuccessfully

原因就是exp導出的時候,用的DBA角色的賬號,因此要求導入的賬號,需要含有DBA角色。但一般很有可能,要導入賬號是普通賬號,沒有DBA角色,也不可能臨時被授予,這就比較費勁。

可能的解決方案:

1. 導出用戶,執(zhí)行導出前臨時revoke DBA角色,完成導出后再授予DBA角色。

2. 授予導入用戶DBA的角色。

3. 授予導入用戶imp_full_database的角色。

每種方案,可能適用于不同的場景。比如方案1,可以算是臨時的方案,但看著就不是很專業(yè),對于一些測試庫,要求不高,可以隨意一些。方案2,這就會讓導入的用戶,有一些高級別的操作許可,僅僅為了導入數(shù)據(jù)這么做,實際上增加了一些風險。方案3,沒有授予DBA角色,但一些環(huán)境下,可能不會允許隨意授予角色。

感謝各位的閱讀,以上就是“Oracle導入導出數(shù)據(jù)時的常見錯誤”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Oracle導入導出數(shù)據(jù)時的常見錯誤這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI