雖有 RMAN 物理備份、Data Pump 高效並行,但 exp/imp 以跨版本、跨平台、無依賴、操作簡單的特性,仍是邏輯備份、Schema 遷移、測試環境刷新的首選。本文系統整理三種工作方式、三大匯出模式、參數檔標準化、常用指令速查表。
| 方式 | 啟動命令 | 適用場景 | 優/缺點 |
|---|---|---|---|
| 互動式 | exp / imp | 臨時、一次性、參數少 | 直觀但不可重複、不可自動化 |
| 命令列 | exp user/pwd@db FILE=xxx.dmp FULL=Y | 固定參數、排程作業 | 簡單但參數長難維護、密碼顯示在進程列 |
| 參數檔(推薦) | exp PARFILE=exp.par | 生產環境、複雜參數、團隊協作 | 參數與腳本分離、易版控、密碼可寫在檔案(權限 600) |
# 導出指定表
exp user/pwd FILE=/backup/t1.dmp LOG=t1.log TABLES=TABLE1,TABLE2
# 導出表部分資料 (QUERY)
exp user/pwd FILE=/backup/t1_part.dmp LOG=t1_part.log \
TABLES=TABLE1 QUERY="WHERE CREATED_DT > SYSDATE-30"
# 導入指定表
imp user/pwd FILE=/backup/t1.dmp LOG=imp_t1.log TABLES=TABLE1,TABLE2 \
FROMUSER=SRC_SCHEMA TOUSER=TGT_SCHEMA COMMIT=Y IGNORE=Y
# 導出指定 Schema 所有物件
exp user/pwd FILE=/backup/schema.dmp LOG=schema.log OWNER=(SCHEMA1,SCHEMA2)
# 僅導出結構 (無資料)
exp user/pwd FILE=/backup/schema_struct.dmp LOG=schema_struct.log OWNER=SCHEMA1 ROWS=N
# 導入 Schema (含重映射)
imp user/pwd FILE=/backup/schema.dmp LOG=imp_schema.log \
FROMUSER=SRC_SCHEMA TOUSER=TGT_SCHEMA COMMIT=Y IGNORE=Y
# 導出全庫 (需 EXP_FULL_DATABASE)
exp user/pwd FILE=/backup/full.dmp LOG=full.log FULL=Y COMMIT=Y IGNORE=Y
# 導入全庫
imp user/pwd FILE=/backup/full.dmp LOG=imp_full.log \
FROMUSER=SRC_SCHEMA TOUSER=TGT_SCHEMA COMMIT=Y IGNORE=Y
USERID=user/password
BUFFER=32000000
COMPRESS=N
GRANTS=Y
INDEXES=Y
CONSTRAINTS=Y
TRIGGERS=Y
ROWS=Y
STATISTICS=NONE
FILE=/backup/exp_&DATE.dmp
LOG=/backup/exp_&DATE.log
# 視模式啟用下列之一:
# FULL=Y
# OWNER=SCHEMA1,SCHEMA2
# TABLES=TABLE1,TABLE2
# QUERY="WHERE ..."
USERID=user/password
BUFFER=64000000
COMMIT=Y
IGNORE=Y
FEEDBACK=50000
STATISTICS=NONE
SKIP_UNUSABLE_INDEXES=Y
GRANTS=Y
INDEXES=Y
CONSTRAINTS=Y
ROWS=Y
FILE=/backup/exp_20240115.dmp
LOG=/backup/imp_20240115.log
# 視場景啟用:
# FULL=Y
# FROMUSER=SRC TOUSER=TGT
# TABLES=TABLE1,TABLE2
| 參數 | Exp 建議 | Imp 建議 | 核心理由 |
|---|---|---|---|
| COMPRESS | N | - | 避免大表匯入需連續巨大 Extent 失敗 |
| DIRECT | 大表 Y (無 LONG/LOB) | - | Direct Path 繞過 SQL 層,速度 2-5 倍 |
| CONSISTENT | 跨表一致性 Y | - | 大量 Undo 消耗,視業務必要性開啟 |
| STATISTICS | NONE | NONE | 避免過時統計誤導執行計劃,遷移後重收 |
| BUFFER | 32M-64M | 64M-128M | 大緩衝區顯著減少 I/O 往返 |
| IGNORE | - | Y | 表存在不報錯,支援重跑/續傳 |
| COMMIT | - | Y | 陣列提交,減少 Undo/Redo 壓力 |
| SKIP_UNUSABLE_INDEXES | - | 大表 Y | 跳過不可用索引維護,巨大加速 |
# 幫助
exp help=y
imp help=y
# 全量備份 (生產標準)
exp system/xxx PARFILE=exp_full.par
imp system/xxx PARFILE=imp_full.par
# Schema 遷移 (含重映射)
exp system/xxx PARFILE=exp_schema.par # OWNER=APP
imp system/xxx PARFILE=imp_schema.par # FROMUSER=APP TOUSER=APP_NEW
# 單表備份/恢復
exp app/app PARFILE=exp_table.par # TABLES=ORDERS
imp app/app PARFILE=imp_table.par # TABLES=ORDERS FROMUSER=APP TOUSER=APP
# 結構遷移 (無資料)
exp system/xxx FILE=struct.dmp OWNER=APP ROWS=N
imp system/xxx FILE=struct.dmp FROMUSER=APP TOUSER=APP ROWS=N
NLS_LANG = 目標庫字符集。Exp/Ip 基礎命令雖經典,但參數檔標準化、三模式靈活切換、關鍵參數決策表(COMPRESS=N/STATISTICS=NONE/IGNORE=Y/COMMIT=Y/BUFFER大)才是生產可用的核心資產。將本文速查卡、參數檔模板納入團隊知識庫,新人也能零失誤完成邏輯備份與遷移。