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

Oracle 10g 傳統 EXP/IMP 與 Data Pump (EXPDP/IMPDP) 差異、相容性與遷移策略

     編輯:Oracle 資料庫基礎

工具定位對比

維度傳統 EXP/IMPData Pump (EXPDP/IMPDP)
架構Client 端進程,透過 SQL 層讀寫Server 端進程(DBMS_DATAPUMP),直接讀寫資料檔
效能單執行緒,大表慢支援並行 (PARALLEL),速度快 10-100 倍
網路模式需 Client 安裝,資料經網路傳輸可在遠端資料庫間直接導入 (NETWORK_LINK),無中間檔案
檔案格式專有二進位,版本敏感專有二進位,但向後相容性更好
過濾靈活度TABLES/QUERY 參數有限INCLUDE/EXCLUDE/SAMPLE/QUERY 細粒度物件級過濾
可中斷續傳不支援支援 ATTACH/CONTINUE_CLIENT、作業狀態查詢
壓縮/加密不支援(需外部工具)內建 COMPRESSION/ENCRYPTION
重映射能力僅 FROMUSER/TOUSERREMAP_SCHEMA/REMAP_TABLESPACE/REMAP_TABLE/REMAP_DATA(函數轉換)
元資料 API無DBMS_METADATA/DBMS_DATAPUMP 程式化控制

版本相容性鐵律

  • 傳統 EXP/IMP:導出工具版本 必須 ≥ 目標資料庫版本,否則報 EXP-00003、EXP-00008 等錯誤。導入工具可讀取舊版導出檔(向下相容)。
  • Data Pump:EXPDP 版本必須 ≥ 資料庫版本;IMPDP 版本必須 ≥ 導出檔版本。10g 導出檔可在 11g/12c/19c 導入,反之不可。

遷移策略決策樹

IF 資料庫版本 ≤ 10g R2 AND 資料量 < 50GB AND 無並行需求:
    使用傳統 EXP/IMP(熟悉度高、腳本現成)
ELSE IF 跨平台/跨版本/大數據量/需並行/需重映射:
    強制使用 Data Pump
ELSE IF 需零停機同步:
    使用 GoldenGate / Active Data Guard / Streams
END IF

Data Pump 實戰範例

導出

-- 建立目錄物件(一次性)
CREATE DIRECTORY dp_dir AS '/u01/dpump';
GRANT READ, WRITE ON DIRECTORY dp_dir TO system;

-- 全庫導出(並行 4、壓縮、加密)
expdp system/manager@ORCL \
  directory=dp_dir \
  dumpfile=full_%U.dmp \
  logfile=expdp_full.log \
  full=y \
  parallel=4 \
  compression=ALL \
  encryption=ALL \
  encryption_password=Secret123 \
  metrics=y

導入(Schema 重映射、表空間重映射、忽略已存在)

impdp system/manager@NEWDB \
  directory=dp_dir \
  dumpfile=full_%U.dmp \
  logfile=impdp_full.log \
  full=y \
  parallel=4 \
  remap_schema=OLD_SCHEMA:NEW_SCHEMA \
  remap_tablespace=OLD_TBS:NEW_TBS \
  table_exists_action=REPLACE \
  exclude=STATISTICS \
  transform=SEGMENT_ATTRIBUTES:N:TABLE

常見遷移坑點

  1. 目錄物件路徑:必須是資料庫伺服器本地路徑,非 Client 端路徑。
  2. 權限:需 DATAPUMP_EXP_FULL_DATABASE/DATAPUMP_IMP_FULL_DATABASE 角色。
  3. 字符集:目標庫字符集需為源庫超集,否則導入報 ORA-39002。
  4. 統計資訊:導入後建議重新收集 DBMS_STATS.GATHER_SCHEMA_STATS,或導出時 EXCLUDE=STATISTICS。
  5. 序列值:Data Pump 導入會重設序列為導出時的 LAST_NUMBER,若源庫導出後序列已大幅推進,目標庫可能產生重複鍵,需手動 ALTER SEQUENCE ... INCREMENT BY ... 對齊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved