前幾天有位同事問到exp/imp是否涉及到版本問題,我認為,只要是軟體,都會涉及到高低版本的相容性問題,Oracle也是軟體,自然也是這樣。
簡單的實驗:
exp工具版本:10g
匯出的source資料庫版本:9i
bash-4.1$ exp x/x@x tables=T file=/home/x/t.dmp
Export: Release 10.2.0.4.0 - Production on Wed Dec 11 15:17:05 2013
Copyright (c) 1982, 2007, Oracle. All rights reserved.
EXP-00056: ORACLE error 6550 encountered
ORA-06550: line 1, column 41:
PLS-00302: component 'SET_NO_OUTLINES' must be declared
ORA-06550: line 1, column 15:
PL/SQL: Statement ignored
EXP-00000: Export terminated unsuccessfully
從報錯看,好像是有個組件未定義,導致匯出失敗。
從MOS上看到一篇文章,有個介紹exp/imp版本相容性問題的經典總結:
Export client compatibility:
Always use a version of the EXPORT utility that is equal to the lowest version of either the source or the target database.
匯出用戶端相容性:建議使用和來源資料庫或目標資料庫中最低版本一致的EXPORT工具版本。
Import client compatibility:
Always use a version of the IMPORT utility that is equal to the version of the target database.
匯入用戶端相容性:建議使用和目標資料庫版本一致的IMPORT工具版本。
這裡很明顯為我們實際中需要exp/imp匯入匯出指明了方向。
下面是匯入匯出的一個版本矩陣:
Import data into an older release (desupported) target database.
Import data into Oracle8i or higher release database.
Oracle ORA-01555 快照過舊 說明
ORA-01078 和 LRM-00109 報錯解決方案
ORA-01555超長的Query Duration時間
ORA-00471 處理方法筆記
ORA-00314,redolog 損壞,或丟失處理方法
ORA-00257 歸檔日誌過大導致無法儲存的解決辦法