Oracle Import Utility (imp) 支援從 DMP 檔案提取資料庫物件與資料。本文系統整理八大常用場景、參數檔標準化範本、增量匯入舊功能說明,並對比 Exp/Imp 版本相容性鐵律。
imp help=y
imp system/manager FILE=bible_db LOG=bible_db.log FULL=Y IGNORE=Y
# 單用戶
imp system/manager FILE=seapark LOG=seapark.log FROMUSER=seapark
# 多用戶
imp system/manager FILE=seapark LOG=seapark.log FROMUSER=(seapark,amy,amyc,harold)
# 單對單
imp system/manager FILE=tank LOG=tank.log FROMUSER=seapark TOUSER=seapark_copy
# 多對多
imp system/manager FILE=tank LOG=tank.log FROMUSER=(seapark,amy) TOUSER=(seapark1,amy1)
imp system/manager FILE=tank LOG=tank.log FROMUSER=seapark TABLES=(a,b)
imp system/manager FILE=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) \
LOG=paycheck.log FILESIZE=1G FULL=Y
imp system/manager PARFILE=bible_tables.par
# bible_tables.par 內容
# Import the sample tables used for the Oracle8i Database Administrator's Bible
FROMUSER=seapark
TOUSER=seapark_copy
FILE=seapark.dmp
LOG=seapark_import.log
IGNORE=Y
COMMIT=Y
BUFFER=32000000
imp system/manager INCTYPE=RESTORE FULL=Y FILE=incr.dmp
INCTYPE=SYSTEM:僅匯入系統物件。INCTYPE=RESTORE:匯入所有用戶物件。| 來源 Exp 版本 | 目標 Imp 版本 | 結果 | 說明 |
|---|---|---|---|
| 9i | 11g | ✅ 成功 | 向上相容 |
| 10g | 11g | ✅ 成功 | 向上相容 |
| 11g | 10g | ❌ IMP-00010 | 向下不相容 |
| 11g | 9i | ❌ IMP-00010 | 向下不相容 |
| 現象 | 原因 | 修正 |
|---|---|---|
| 匯入極慢 | 未關閉索引/約束/觸發器;BUFFER 過小 | 前置 DISABLE,BUFFER≥32M,SKIP_UNUSABLE_INDEXES=Y |
| 中文亂碼 | 客戶端 NLS_LANG 與目標庫字符集不符 | export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 (或 ZHS16GBK) |
| 表已存在報錯停止 | 未加 IGNORE=Y | 加上 IGNORE=Y |
| 外鍵錯誤 ORA-02291 | 父表資料未先匯入 | 調整 TABLES 順序或 CONSTRAINTS=N 事後建 FK |
| IMP-00010 not valid export file | 版本向下不相容或檔案損壞 | 用高版本 Imp;檢查檔案完整性 |
Imp 的威力在於場景化參數組合(FULL/FROMUSER/TABLES/TOUSER/FILES/INCTYPE)與參數檔標準化。掌握八大場景範本、版本相容鐵律、參數檔模板與自查表,即可應對 99% 的邏輯匯入需求。團隊應建立「Imp 作業單」模板:場景選擇 → 參數檔生成 → 前置檢查 → 執行 → 驗收簽核,實現流程固化與品質保證。