首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 10g Data Pump (expdp/impdp) 核心功能與實戰範例速查

     編輯:Oracle 資料庫基礎

Data Pump 概覽

Oracle 10g 引入 Data Pump 技術,取代傳統 exp/imp,**僅在資料庫伺服器端運行**,以 API 驅動內部 Job 實現高速並行、可暫停/續傳、網路模式匯入等進階功能。

四大匯出/匯入模式

模式參數說明
表模式TABLES指定表清單
綱要模式SCHEMAS指定使用者/綱要
表空間模式TABLESPACES指定表空間
完整模式FULL=Y整個資料庫

傳統 vs Data Pump 關鍵差異

  • exp/imp:客戶端工具,可在客戶/伺服器端執行
  • expdp/impdp:**伺服器端工具,僅能在資料庫主機執行**
  • 檔案格式**不相容**:imp 僅讀 exp 檔,impdp 僅讀 expdp 檔
  • Data Pump 支援並行、網路模式 (DBLINK)、重對應

目錄物件建立與授權 (必要前置)

CREATE DIRECTORY dump_dir AS '/u01/dmdir';
GRANT READ, WRITE ON DIRECTORY dump_dir TO test;
SELECT * FROM dba_directories;

實戰範例速查

1. 網路模式匯入 (跨資料庫,無需轉儲檔)

# 表空間重對應
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

2. 匯入表

# 同綱要
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

3. 匯入綱要

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

4. 匯入表空間

impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01

5. 完整匯入

impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y

Job 控制:暫停、重啟、監控

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_CLIENTCC返回記錄模式,空閒時重啟 Job
EXIT_CLIENTEC退出客戶端,Job 保持運行
KILL_JOBKJ分離並刪除 Job
PARALLEL=nP=n動態調整 Worker 數
START_JOBSJ啟動/恢復 Job
STATUS [=interval]ST顯示狀態,可指定刷新間隔(秒)
STOP_JOB [=IMMEDIATE]SJ順序/立即關閉 Job

最佳實踐建議

  • 大量資料**務必使用並行** (PARALLEL=4 等) 並配合多個轉儲檔 (DUMPFILE=file_%U.dmp)
  • 跨版本匯入優先用網路模式 (NETWORK_LINK) 避免檔案傳輸
  • 定期清理 DBA_DATAPUMP_JOBS 殘留 Job
  • 生產環境匯入前**必須在測試環境演練**驗證重對應參數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved