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

Oracle EXP/IMP 與 Data Pump (EXPDP/IMPDP) 完整指南:三種模式、增量備份、參數詳解、遷移實戰

     編輯:Oracle 資料庫基礎

Oracle 邏輯備份工具經歷 exp/imp (傳統) 到 expdp/impdp (Data Pump, 10g+) 兩代。本文系統對比兩代工具,詳解表/用戶/完全三種模式、增量備份條件、關鍵參數、磁帶/磁碟輸出、遷移實戰流程,助你選擇正確工具與參數完成備份遷移任務。

一、傳統 EXP/IMP vs Data Pump 核心差異

維度EXP/IMP (Client-side)EXPDP/IMPDP (Server-side)
執行位置客戶端進程讀寫資料資料庫伺服器進程 (DMnn) 直接讀寫
效能受網路/客戶端 CPU 限制可平行、直接路徑、壓縮、極高吞吐
檔案位置客戶端/網路路徑伺服器端目錄物件 (DIRECTORY)
支援特性基本物件壓縮、加密、並行、網路連結、可攜式表空間、細粒度過濾
版本支援所有版本 (維護模式)10g+ 正式功能

結論:10g+ 環境強制優先使用 Data Pump;僅在跨版本遷移至 9i 以下或極簡單小表時用 exp/imp。

二、三種導出模式對比

模式範圍EXP 參數EXPDP 參數適用場景
表模式指定表TABLES=scott.emp,scott.deptTABLES=emp,dept單表/少數表備份、跨 Schema 遷移特定表
用戶/Schema 模式某用戶所有物件OWNER=scottSCHEMAS=scott應用 Schema 完整備份、Schema 級遷移
完全模式整個資料庫FULL=YFULL=Y (需 DATAPUMP_EXP_FULL_DATABASE 角色)異機遷移、DR 演練、升級前完整備份

三、關鍵參數速查表 (Data Pump)

參數說明推薦值/範例
DIRECTORY伺服器端目錄物件 (必須)CREATE DIRECTORY dp_dir AS '/u01/dpump'; GRANT READ,WRITE ON DIRECTORY dp_dir TO scott;
DUMPFILE轉儲檔名,支援 %U 多檔scott_%U.dmp
LOGFILE日誌檔scott.log
PARALLEL平行度 (需 Enterprise Edition)4 ~ CPU核心數
COMPRESSION壓縮等級ALL (資料+中繼) / METADATA_ONLY / NONE
ENCRYPTION加密模式ALL / DATA_ONLY / ENCRYPTED_COLUMNS_ONLY / NONE
FLASHBACK_TIME時間點一致性 (SCN/時間戳)SYSTIMESTAMP / TO_TIMESTAMP('2024-01-01','YYYY-MM-DD')
CONTENT導出內容ALL / DATA_ONLY / METADATA_ONLY
INCLUDE/EXCLUDE細粒度物件過濾INCLUDE=TABLE:\"LIKE 'EMP%'\",INDEX
REUSE_DUMPFILES覆寫既有檔案Y
NETWORK_LINK跨資料庫直接導入 (無轉儲檔)dblink_name

四、增量備份 (傳統 EXP 僅支援)

Data Pump 不支援增量備份**;若需增量,改用 RMAN 區塊變更追蹤。

-- 第一次完全備份
exp system/manager FULL=Y FILE=full_0.dmp RECORD=Y INCTYPE=COMPLETE

-- 後續累積增量
exp system/manager FULL=Y FILE=inc_1.dmp RECORD=Y INCTYPE=CUMULATIVE

-- 後續差異增量
exp system/manager FULL=Y FILE=inc_2.dmp RECORD=Y INCTYPE=INCREMENTAL
  • RECORD=Y 在 SYS.INCEXP 記錄導出時間,供下次增量參考。
  • 僅適用 FULL=Y;第一次必須 INCTYPE=COMPLETE。

五、實戰遷移流程範例 (Schema 級 Data Pump)

1. 來源端導出

expdp scott/tiger@src_db \
  SCHEMAS=scott \
  DIRECTORY=dp_dir \
  DUMPFILE=scott_%U.dmp \
  LOGFILE=scott_exp.log \
  PARALLEL=8 \
  COMPRESSION=ALL \
  FLASHBACK_TIME=SYSTIMESTAMP \
  EXCLUDE=STATISTICS \
  REUSE_DUMPFILES=Y

2. 目標端準備

-- 建立目錄物件
CREATE DIRECTORY dp_dir AS '/u01/dpump';
GRANT READ,WRITE ON DIRECTORY dp_dir TO scott;

-- 建立使用者/表空間/配額 (若不存在)
CREATE USER scott IDENTIFIED BY tiger DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;
GRANT CONNECT, RESOURCE, DATAPUMP_IMP_FULL_DATABASE TO scott;

3. 目標端導入

impdp scott/tiger@tgt_db \
  SCHEMAS=scott \
  DIRECTORY=dp_dir \
  DUMPFILE=scott_%U.dmp \
  LOGFILE=scott_imp.log \
  PARALLEL=8 \
  TABLE_EXISTS_ACTION=SKIP \
  TRANSFORM=SEGMENT_ATTRIBUTES:N:TABLE \
  EXCLUDE=STATISTICS

4. 導入後驗證

-- 物件計數比對
SELECT owner, object_type, COUNT(*) FROM dba_objects WHERE owner='SCOTT' GROUP BY owner, object_type;
-- 列數比對 (抽樣)
SELECT table_name, num_rows FROM dba_tables WHERE owner='SCOTT';
-- 重新收集統計資訊
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT');

六、跨平台/版本遷移注意事項

場景注意事項
Big Endian → Little EndianData Pump 自動轉換;可攜式表空間需 RMAN CONVERT。
字元集不同來源/目標字元集需相容;否則資料截斷/亂碼。建議目標用 AL32UTF8。
12c → 19c 升級Data Pump 導入後必跑 @?/rdbms/admin/utlrp.sql 重編譯無效物件。
PDB 遷移 (12c+)用 FULL=Y + TRANSPORTABLE=ALWAYS 或 DBMS_PDB 拔插。

七、傳統 EXP/IMP 仍在維護的邊緣場景

  • 9i/8i 老舊資料庫無 Data Pump。
  • 極小表 (<10MB) 快速導出,不想建立 Directory 物件。
  • 客戶端無伺服器存取權限,只能用 exp/imp 經網路導出。

Data Pump 是 Oracle 10g 以來邏輯備份遷移的標準工具。掌握 PARALLEL、COMPRESSION、FLASHBACK_TIME、NETWORK_LINK 等核心參數,配合目錄物件權限管理,即可構建高效、安全、可自動化的備份遷移體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved