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

Oracle Data Pump impdp 跨資料庫 Schema 複製遷移實戰指南

     編輯:Oracle 資料庫基礎

利用 `impdp` 搭配 `NETWORK_LINK` 參數,直接從來源資料庫透過資料庫連結 (DB Link) 將 Schema 物件與資料遷移至目標庫,無需中間 DMP 檔案落地。本文提供完整環境準備、權限配置、參數檔範本、實戰日誌解析、常見錯誤 (ORA-39149) 解決方案與進階應用場景。

環境與前提

  • 來源: Windows 2003, Oracle 10.2.0.2
  • 目標: Windows 2000, Oracle 10.2.0.3
  • Schema = User 概念
  • 目標端執行 `impdp`,透過 `NETWORK_LINK` 連向來源

核心參數說明

參數用途
NETWORK_LINK目標端建立的 DB Link 名稱,指向來源資料庫
SCHEMAS要遷移的來源 Schema 清單
REMAP_SCHEMA來源:目標 Schema 映射 (如 `src:tgt`)
REMAP_TABLESPACE來源表空間:目標表空間 映射 (含臨時表空間)
PARFILE參數檔路徑,避免命令列過長與特殊字元轉義

標準參數檔範本 (parfile.log)

NETWORK_LINK=src_dblink
SCHEMAS=source_schema
REMAP_SCHEMA=source_schema:target_schema
REMAP_TABLESPACE=source_tbs:target_tbs,source_temp:target_temp

執行:`impdp user/pwd parfile=parfile.log`

關鍵前置作業:DB Link 與權限

  1. 來源端建立連結用戶並授權:
    CREATE USER link_user IDENTIFIED BY "pwd";
    GRANT CREATE SESSION TO link_user;
    ALTER USER link_user QUOTA UNLIMITED ON USERS;
    -- 關鍵:必須授予 EXP_FULL_DATABASE 角色
    GRANT EXP_FULL_DATABASE TO link_user;
  2. 目標端建立 Public DB Link:
    CREATE PUBLIC DATABASE LINK src_dblink
    CONNECT TO link_user IDENTIFIED BY "pwd"
    USING 'source_tns_alias';
  3. 驗證連結: `SELECT * FROM TAB@src_dblink;` 應回傳來源 Schema 物件清單

實戰流程與日誌解析

$ impdp system/pwd parfile=parfile.log
Import: Release 10.2.0.3.0
Connected to: Oracle Database 10g Enterprise Edition 10.2.0.3.0
Flashback automatically enabled to preserve database integrity.
Starting "SYS"."SYS_IMPORT_SCHEMA_01": ... network_link=src_dblink schemas=link remap_schema=link:link2
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
. . imported "LINK2"."DOC_TYPE" 8 rows
Job "SYS"."SYS_IMPORT_SCHEMA_01" successfully completed at 17:40:14

關鍵驗證:`SELECT * FROM ALL_USERS ORDER BY 3;` 確認 `LINK2` 建立時間為剛才匯入時間。

常見錯誤與解決

錯誤代碼原因解決
ORA-31631: privileges are required連結用戶缺乏 EXP_FULL_DATABASE來源端 `GRANT EXP_FULL_DATABASE TO link_user;`
ORA-39149: cannot link privileged user to non-privileged user來源連結用戶為 SYS 等高權限,目標映射用戶權限不足使用普通用戶作連結用戶,或確保目標用戶具備相應權限
ORA-39001: invalid argument valueREMAP_TABLESPACE 來源表空間不存在於目標先建立目標表空間,或調整映射

進階應用場景

  • 同庫 Schema 複製: 目標端建立指向自身的 DB Link,`REMAP_SCHEMA=src:tgt` 實現庫內複製
  • 目標 Schema 預先存在: `REMAP_SCHEMA` 目標用戶可預先建立,匯入時合併物件 (注意衝突處理 `TABLE_EXISTS_ACTION=SKIP/APPEND/TRUNCATE/REPLACE`)
  • 大表並行加速: 新增 `PARALLEL=4` (Enterprise Edition),配合多 CPU/磁碟
  • 排除統計資訊/索引後建: `EXCLUDE=STATISTICS,INDEX` → 匯入完成後手動重建索引、收集統計

expdp/impdp vs 傳統 exp/imp

  • Data Pump 為 Server 端並行作業,效能遠超 Client 端的 exp/imp
  • 支援網路模式 (`NETWORK_LINK`)、細粒度物件過濾 (`INCLUDE`/`EXCLUDE`)、壓縮 (`COMPRESSION`)、加密 (`ENCRYPTION`)
  • 10g 起為主流遷移工具,exp/imp 僅維護相容性
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved