Oracle 10g 引入 Data Pump (EXPDP/IMPDP),取代傳統 EXP/IMP,支援**伺服器端並行、網路模式、Remap 功能**。本文聚焦最實用的 DB Link 直接跨庫匯入 與 Remap Tablespace/Schema 兩大場景,提供可直接執行的指令範本。
-- 伺服器端建立目錄物件(指向 OS 實際路徑)
CREATE DIRECTORY dump_dir AS '/u01/dmdir';
GRANT READ, WRITE ON DIRECTORY dump_dir TO scott;
SELECT * FROM dba_directories;
impdp scott/tiger@target_db \
LOGFILE=DUP_MCMDB.LOG \
NETWORK_LINK=to_crm_7 \
SCHEMAS=MCMDB \
REMAP_TABLESPACE=table_space11:table_space12,table_space21:table_space22
NETWORK_LINK:指向來源 DB 的 DB Link(需預先建立)。REMAP_TABLESPACE:來源:目標 對照,多組用逗號分隔。impdp scott/tiger@target_db \
LOGFILE=DUP_MCMDB.LOG \
NETWORK_LINK=to_crm_7 \
SCHEMAS=MCMDB \
REMAP_SCHEMA=MCMDB:MCMDB1
MCMDB 物件直接建立在目標 MCMDB1 Schema 下。RESOURCE, CONNECT, UNLIMITED TABLESPACE。| 項目 | EXP/IMP | EXPDP/IMPDP |
|---|---|---|
| 執行端 | Client/Server 皆可 | **僅 Server 端** |
| 並行度 | 單執行緒 | PARALLEL=4 多執行緒 |
| 網路模式 | 不支援 | 支援 NETWORK_LINK |
| Remap 功能 | 無 | REMAP_TABLESPACE/SCHEMA/TABLE |
| 檔案相容 | 僅 EXP 檔 | 僅 EXPDP 檔(二進制不相容) |
| 查詢介面 | 無 | DBA_DATAPUMP_JOBS 監控進度 |
-- 1. 表模式
expdp scott/tiger TABLES=emp,dept DIRECTORY=dump_dir DUMPFILE=tables.dmp
-- 2. Schema 模式
expdp scott/tiger SCHEMAS=scott DIRECTORY=dump_dir DUMPFILE=schema.dmp
-- 3. 表空間模式
expdp system/manager TABLESPACES=users,example DIRECTORY=dump_dir DUMPFILE=tbs.dmp
-- 4. 全庫模式
expdp system/manager FULL=Y DIRECTORY=dump_dir DUMPFILE=full.dmp
| 參數 | 說明 | 範例 |
|---|---|---|
| PARALLEL | 並行工作者數 | 4 |
| COMPRESSION | 壓縮算法 | METADATA_ONLY / ALL |
| ENCRYPTION | 加密 | ALL / DATA_ONLY / ENCRYPTED_COLUMNS_ONLY |
| ESTIMATE_ONLY | 預估大小不實際匯出 | Y |
| FLASHBACK_TIME | 一致性時間點 | SYSDATE |
| QUERY | 表級 WHERE 條件 | 'emp:"WHERE deptno=10"' |
| INCLUDE/EXCLUDE | 物件類型過濾 | INCLUDE=TABLE:"LIKE 'EMP%'" |
SELECT job_name, state, degree, attached_sessions
FROM dba_datapump_jobs
WHERE job_name = 'SYS_IMPORT_FULL_01';
TNSPING 正常。ESTIMATE_ONLY=Y 確認大小與時間。善用 NETWORK_LINK + REMAP_*,即可實現**零落地檔案、跨表空間/Schema、並行高速**的異構遷移,是 Data Pump 最殺手級的功能組合。