Data Pump 是 Oracle 10g 引入的服務端並行導入導出架構,在效能、功能、彈性上全方位超越客戶端工具 EXP/IMP。本文系統對比兩者差異,並提供 EXPDP/IMPDP 核心參數完整速查表與四大導出模式實戰範例。
核心架構差異
| 維度 | EXP / IMP | EXPDP / IMPDP |
| 運行進程 | 客戶端進程 | 資料庫伺服器背景進程 (DM00, DW00...) |
| 資料流向 | DB → 網路 → 客戶端 → 檔案 | DB → 伺服器本地檔案系統 / ASM |
| 並行度 | 單執行緒 | PARALLEL=n 多執行緒/多作業 |
| 可中斷/重啟 | 不支援 | 支援 ATTACH/JOB_NAME 重啟 |
| 網路鏈路導入 | 不支援 | NETWORK_LINK 直連遠端 DB 導入 |
| 壓縮/加密 | 不支援 | COMPRESSION/ENCRYPTION |
| 過濾/轉換 | 極少 | QUERY/INCLUDE/EXCLUDE/REMAP_*/TRANSFORM |
| 版本相容 | 所有版本 | 10g+(9i 需用 EXP) |
| Dump 相容性 | IMP 僅讀 EXP Dump | IMPDP 僅讀 EXPDP Dump |
EXPDP 核心參數速查(27 參數)
| 參數 | 說明 | 典型值/範例 |
| ATTACH | 連接現有作業 | ATTACH=scott.export_job |
| CONTENT | 導出內容類型 | ALL | DATA_ONLY | METADATA_ONLY |
| DIRECTORY | 目錄物件(必填) | DIRECTORY=dp_dump |
| DUMPFILE | Dump 檔名(支援多檔、替換變數) | DUMPFILE=exp_%U.dmp |
| ESTIMATE | 空間估算方法 | BLOCKS | STATISTICS |
| ESTIMATE_ONLY | 僅估算不執行 | Y | N |
| EXCLUDE | 排除物件類型/名稱 | EXCLUDE=TABLE:"LIKE 'TMP_%'" |
| FILESIZE | 單檔最大尺寸 | FILESIZE=2G |
| FLASHBACK_SCN | 一致性 SCN | FLASHBACK_SCN=123456789 |
| FLASHBACK_TIME | 一致性時間點 | FLASHBACK_TIME="TO_TIMESTAMP('2024-01-15 10:00','YYYY-MM-DD HH24:MI')" |
| FULL | 全庫導出 | Y | N |
| HELP | 顯示幫助 | HELP=Y |
| INCLUDE | 包含物件類型/名稱 | INCLUDE=TABLE:"IN ('EMP','DEPT')" |
| JOB_NAME | 作業名稱 | JOB_NAME=exp_full_20240115 |
| LOGFILE | 日志檔名 | LOGFILE=exp_full.log |
| NETWORK_LINK | 遠端 DB Link | NETWORK_LINK=remote_db_link |
| NOLOGFILE | 不產生日志 | Y | N |
| PARALLEL | 並行度 | PARALLEL=4 |
| PARFILE | 參數檔路徑 | PARFILE=/scripts/exp_full.par |
| QUERY | 表級 WHERE 過濾 | QUERY=emp:"WHERE deptno=20" |
| SCHEMAS | Schema 模式導出 | SCHEMAS=hr,oe,scott |
| STATUS | 顯示進度間隔(秒) | STATUS=30 |
| TABLES | 表模式導出 | TABLES=scott.emp,scott.dept |
| TABLESPACES | 表空間模式導出 | TABLESPACES=users,tools |
| TRANSPORT_FULL_CHECK | 可傳輸表空間完整檢查 | Y | N |
| TRANSPORT_TABLESPACES | 可傳輸表空間模式 | TRANSPORT_TABLESPACES=tbs1,tbs2 |
| VERSION | 元數據相容版本 | COMPATIBLE | LATEST | 12.2 |
四大導出模式實戰範例
1. 表模式
expdp scott/tiger@orcl \
DIRECTORY=dp_dump \
DUMPFILE=tables_%U.dmp \
TABLES=emp,dept,bonus \
PARALLEL=4 \
COMPRESSION=ALL
2. Schema 模式
expdp system/manager@orcl \
DIRECTORY=dp_dump \
DUMPFILE=schemas_%U.dmp \
SCHEMAS=hr,oe,pm \
PARALLEL=8 \
ENCRYPTION=ALL \
ENCRYPTION_PASSWORD=StrongPwd#2024
3. 表空間模式
expdp system/manager@orcl \
DIRECTORY=dp_dump \
DUMPFILE=tbs_%U.dmp \
TABLESPACES=users,tools,indx \
PARALLEL=4
4. 全庫模式
expdp system/manager@orcl \
DIRECTORY=dp_dump \
DUMPFILE=full_%U.dmp \
FULL=Y \
PARALLEL=16 \
COMPRESSION=ALL \
ENCRYPTION=DATA_ONLY \
ENCRYPTION_PASSWORD=StrongPwd#2024 \
LOGFILE=full_exp.log
IMPDP 關鍵差異參數
| 參數 | 說明 | 典型值 |
| REMAP_SCHEMA | Schema 重映射 | REMAP_SCHEMA=src:dst |
| REMAP_TABLESPACE | 表空間重映射 | REMAP_TABLESPACE=old_tbs:new_tbs |
| REMAP_DATAFILE | 資料檔路徑重映射 | REMAP_DATAFILE='/old/path':'/new/path' |
| TABLE_EXISTS_ACTION | 目標表存在動作 | SKIP | APPEND | TRUNCATE | REPLACE |
| TRANSFORM | 元數據轉換 | TRANSFORM=SEGMENT_ATTRIBUTES:N:TABLE |
| PARTITION_OPTIONS | 分區轉換選項 | DEPARTITION | MERGE | NONE |
前置作業:目錄物件與權限
-- 建立目錄物件(指向伺服器端實際路徑)
CREATE OR REPLACE DIRECTORY dp_dump AS '/u01/dpdump';
-- 授權
GRANT READ, WRITE ON DIRECTORY dp_dump TO scott;
GRANT DATAPUMP_EXP_FULL_DATABASE, DATAPUMP_IMP_FULL_DATABASE TO scott;
Data Pump 不是「新瓶裝舊酒」,而是架構重寫。掌握 PARALLEL、REMAP_*、TRANSFORM、NETWORK_LINK、ENCRYPTION 等核心能力,才能在 TB 級遷移、跨版本升級、雲上線、DevOps CI/CD 中發揮最大價值。