EXP/IMP 是 Oracle 最早的邏輯備份工具,定位為數據轉儲/遷移工具,而非物理備份替代品。適用於:
TB 級數據庫請改用 RMAN 或 Data Pump (EXPDP/IMPDP)。
# 中文幫助顯示
SET NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
# 英文幫助
SET NLS_LANG=AMERICAN_AMERICA.AL32UTF8
導出導入雙端 NLS_LANG 必須一致,否則數據損壞。
| 參數 | 默認 | 說明 | 推薦值 |
|---|---|---|---|
| USERID | - | 連接串 user/pass@tns | 必填 |
| FULL | N | 全庫導出 | Y(結構備份配合 ROWS=N) |
| OWNER | - | 模式級導出列表 | 指定 schema |
| TABLES | - | 表級導出列表 | 指定表名 |
| FILE | EXPDAT.DMP | 導出文件路徑 | 帶時間戳命名 |
| COMPRESS | Y | 合併 extent 初始值 | N(避免導入後空間浪費) |
| BUFFER | 256KB | 緩存大小 | 100000000 (100MB) |
| FEEDBACK | 0 | 進度顯示間隔行數 | 10000 |
| DIRECT | N | 直接路徑導出 | Y(大表加速) |
| FILESIZE | 0 | 單文件最大尺寸 | 2G(防 32位 限制) |
| QUERY | - | 導出 WHERE 子句 | 分區導出利器 |
| CONSISTENT | N | 交叉表一致性 | Y(靜態表可開) |
| STATISTICS | ESTIMATE | 統計信息導出 | NONE(導入後重收集) |
| PARFILE | - | 參數文件路徑 | 複雜任務必用 |
| 參數 | 默認 | 說明 | 推薦值 |
|---|---|---|---|
| FROMUSER/TOUSER | - | Schema 重映射 | 跨用戶導入必用 |
| IGNORE | N | 忽略創建錯誤 | Y(預建表結構時) |
| INDEXES | Y | 導入索引 | N(大表先數據後建索引) |
| GRANTS | Y | 導入權限 | Y |
| ROWS | Y | 導入數據 | Y |
| COMMIT | N | 批量提交 | Y(大表防回滾段爆滿) |
| DESTROY | N | 覆蓋數據文件 | 極謹慎使用 |
| INDEXFILE | - | 導出 DDL 到文件 | 預審結構用 |
| SKIP_UNUSABLE_INDEXES | N | 跳過失效索引 | Y |
exp userid=test/test file=db_str.dmp log=db_str.log full=y rows=n compress=y direct=y
exp userid=test/test file=schema.dmp log=schema.log owner=duanl
exp userid=duanl/duanl file=f1,f2,f3,f4,f5 filesize=2G owner=scott
imp userid=test1/test1 file=expdat.dmp fromuser=test1 touser=test1 indexes=n
預建目標表結構(調整存儲參數)→ 導入數據 → 手動創建索引(指定新表空間/並行度)。
# exp.par
userid=system/manager
owner=(scott,hr)
file=/backup/exp_%U.dmp
filesize=2G
log=/backup/exp.log
buffer=100000000
feedback=10000
direct=y
compress=n
consistent=y
statistics=none
exp parfile=exp.par
EXP/IMP 的「增量」僅記錄數據字典變更,非真正塊級增量,恢復極其複雜且易出錯。生產環境請使用 RMAN 級別增量備份。
NLS_DATABASE_PARAMETERS 確認。COMPRESS=N。INDEXES=N COMMIT=Y BUFFER=大值,導入後並行創建索引。LONG=足夠大值(默認 64KB)。