Oracle Data Pump(expdp/impdp)自 10g 推出以來,以高性能、並行化能力成為主流邏輯備份工具。但跨版本遷移時,若不指定 VERSION 參數,高版本導出的 Dump 文件無法在低版本導入,報錯 ORA-39142: incompatible version number。本文通過 11.2.0.3 → 10.2.0.4 的實戰案例,演示正確的跨版本導出姿勢。
-- 11.2.0.3 導出(未指定 VERSION)
expdp test/test directory=expdir dumpfile=test.dmp TABLES=tab1
-- 10.2.0.4 導入(報錯)
impdp test/test directory=expdir dumpfile=test.dmp
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-39142: incompatible version number 3.1 in dump file
原因:Dump 文件內部版本號 3.1(對應 11.2),低版本 10.2 無法識別。
expdp test/test dumpfile=test.dmp directory=expdir TABLES=tab1 VERSION=10.2.0.4
關鍵點:
VERSION=10.2.0.4 告訴 Data Pump 生成兼容 10.2.0.4 格式的元數據與數據。version=10.2.0.4.0,確認生效。impdp test/test directory=expdir dumpfile=test.dmp
-- 輸出:Job "TEST"."SYS_IMPORT_FULL_01" successfully completed
| 導出版本 | 導入版本 | 是否需 VERSION | 說明 |
|---|---|---|---|
| 低 → 高 | 高 | 否 | 向前兼容,自動升級元數據 |
| 高 → 低 | 低 | 是 | 必須指定 VERSION=目標版本 |
| 同版本 | 同 | 否 | 無需額外參數 |
VERSION=10.2、VERSION=10.2.0.4、VERSION=LATEST(默認)、VERSION=COMPATIBLE(與 COMPATIBLE 初始化參數一致)。TRANSFORM=SEGMENT_ATTRIBUTES:N 等參數剔除不兼容屬性。impdp ... NETWORK_LINK=source_db VERSION=10.2 同樣適用,無需中轉 Dump 文件。Data Pump 跨版本遷移核心口訣:高導低入,必加 VERSION。導出端顯式聲明目標版本,是避免 ORA-39142 的唯一正解。