Oracle 10g 引入 Data Pump 技術,取代傳統 exp/imp,**僅在資料庫伺服器端運行**,以 API 驅動內部 Job 實現高速並行、可暫停/續傳、網路模式匯入等進階功能。
| 模式 | 參數 | 說明 |
|---|---|---|
| 表模式 | TABLES | 指定表清單 |
| 綱要模式 | SCHEMAS | 指定使用者/綱要 |
| 表空間模式 | TABLESPACES | 指定表空間 |
| 完整模式 | FULL=Y | 整個資料庫 |
CREATE DIRECTORY dump_dir AS '/u01/dmdir';
GRANT READ, WRITE ON DIRECTORY dump_dir TO test;
SELECT * FROM dba_directories;
# 表空間重對應
impdp logfile=DUP_MCMDB.LOG network_link=to_crm_7 schemas=MCMDB \
REMAP_TABLESPACE=table_space11:table_space12,table_space21:table_space22
# 綱要重對應
impdp logfile=DUP_MCMDB.LOG network_link=to_crm_7 schemas=MCMDB \
remap_schema=MCMDB:MCMDB1
# 同綱要
impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
# 跨綱要 (需 REMAP_SCHEMA)
impdp system/manager DIRECTORY=dump_dir DUMPFILE=tab.dmp \
TABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM
impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott
impdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmp \
SCHEMAS=scott REMAP_SCHEMA=scott:system
impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01
impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y
expdp/impdp 本質為資料庫內部 Job,支援互動模式控制:
# 啟動並指定 Job 名稱
expdp test/test@acf directory=dpdata dumpfile=full.dmp full=y job_name=expfull
# 執行中 Ctrl+C 退出互動模式,Job 繼續背景運行 (不同傳統 exp 會終止)
# 進入命令模式
Export> status
Export> stop_job # 正常停止 (提示確認)
Export> stop_job=immediate # 強制立即停止
# 重新連接 Job
expdp test/test@acf attach=expfull
Export> start_job
Export> start_job=skip_current # 跳過停止時正在執行的步驟
-- 查看 Data Pump Jobs
SELECT * FROM dba_datapump_jobs;
-- 查看對應 Session
SELECT s.sid, s.serial#
FROM v$session s, dba_datapump_sessions d
WHERE s.saddr = d.saddr;
| 命令 | 縮寫 | 說明 |
|---|---|---|
| CONTINUE_CLIENT | CC | 返回記錄模式,空閒時重啟 Job |
| EXIT_CLIENT | EC | 退出客戶端,Job 保持運行 |
| KILL_JOB | KJ | 分離並刪除 Job |
| PARALLEL=n | P=n | 動態調整 Worker 數 |
| START_JOB | SJ | 啟動/恢復 Job |
| STATUS [=interval] | ST | 顯示狀態,可指定刷新間隔(秒) |
| STOP_JOB [=IMMEDIATE] | SJ | 順序/立即關閉 Job |
PARALLEL=4 等) 並配合多個轉儲檔 (DUMPFILE=file_%U.dmp)NETWORK_LINK) 避免檔案傳輸DBA_DATAPUMP_JOBS 殘留 Job