錯誤嘗試
-- 9i 端導出
exp user/pass@sid file=exp.dmp owner=user
-- 8i 端直接導入 → 失敗
imp user/pass@sid file=exp.dmp owner=user ignore=y full=y
原因: 高版本匯出檔無法直接導入低版本。低版本匯出檔可導入高版本(僅限相鄰版本:7i→8i、8i→9i)。
正確解法:低版本 Client 連高版本 Server 導出
- 在 8i 機器配置 Net Service Name 連向 9i:
li>Net Configuration Assistant → Local Net Service Name → Add
- 選 Oracle 8i or later → 輸入 9i Global SID
- TCP → 主機名、Port → 測試連線 → 命名連線別名(如
ora9i_link)
- 8i 端命令列執行導入(實際由 8i exp 透過 DB Link 從 9i 抓資料):
imp user/pass@ora9i_link file=exp.dmp owner=user ignore=y full=y
關鍵原理
imp 透過 DB Link 觸發遠端 exp,產生的匯出檔本質為 8i 格式,故可順利導入 8i。
適用場景
- 舊系統(8i)需從新系統(9i/10g/11g)抽取歷史資料
- 跨版本資料遷移、報表系統同步
補充提醒
- 確保網路連通、防火牆開放 Listener Port
- 版本差距過大(如 11g→8i)建議改用 Data Pump + 腳本轉換
- 字元集一致性檢查(NLS_LANG)避免亂碼