首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 分布式數據同步方案全景對比:ETL、中間件、DBLink、高級復制、GoldenGate

     編輯:Oracle 資料庫相關知識

方案分類矩陣

類別典型方案延遲雙向復雜度適用場景
批量非實時ETL (Informatica/DataStage/Kettle)、自研接口 (SQL*Loader/外部表)小時/天否低/中數據倉庫、報表、歸檔
實時小批量中間件 (Tuxedo/WebSphere MQ/JMS)、Socket/XML/JSON API毫秒/秒可雙向高核心交易、電信計費
Oracle 原生DBLink + Job/Procedure、Materialized View、Streams、Advanced Replication、GoldenGate秒/分鐘支持中/高異構同步、異地災備、雙活

Oracle 高級復制 核心概念 (歷史方案,12c+ 已非推薦)

  • Replication Object: 表、索引、Procedure、View 等
  • Replication Group: Object 集合,一個 Object 僅屬於一個 Group
  • Replication Site: 參與復制的數據庫節點
  • Multimaster Replication: 多主寫入,全表復制

復制模式

高級復制部署關鍵步驟 (DBMS_REPCAT)

-- 1. 創建復制管理員用戶並授權
CREATE USER repadmin IDENTIFIED BY pwd;
GRANT DBA TO repadmin;  -- 簡化演示,生產按最小權限

-- 2. 雙向 DBLink (必須用 repadmin 連接)
CREATE DATABASE LINK site2 CONNECT TO repadmin IDENTIFIED BY pwd USING 'site2_tns';

-- 3. 創建 Master Group
BEGIN
  DBMS_REPCAT.CREATE_MASTER_REPGROUP(gname => 'MY_RG', qualifier => '');
END;
/

-- 4. 添加復制對象 (表)
BEGIN
  DBMS_REPCAT.CREATE_MASTER_REPOBJECT(
    gname => 'MY_RG', type => 'TABLE', oname => 'TEST', sname => 'SCHEMA',
    copy_rows => FALSE, use_existing_object => TRUE);
END;
/

-- 5. 生成復制支持 (內部觸發器/包)
BEGIN
  DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT(sname => 'SCHEMA', oname => 'TEST', type => 'TABLE');
END;
/

-- 6. 添加遠端 Master Site
BEGIN
  DBMS_REPCAT.ADD_MASTER_DATABASE(
    gname => 'MY_RG', master => 'SITE2',
    use_existing_objects => TRUE, copy_rows => FALSE,
    propagation_mode => 'ASYNCHRONOUS');
END;
/

-- 7. 啟動復制活動
BEGIN
  DBMS_REPCAT.RESUME_MASTER_ACTIVITY(gname => 'MY_RG');
END;
/

常見部署錯誤與解決

模式機制優點缺點
異步內部觸發器生成 Deferred RPC → 隊列 → 推送至其他 Master性能好、網絡容錯數據暫時不一致、衝突解決複雜
同步DML 立即分布式事務兩階段提交,全站點鎖定強一致性極度依賴網絡/節點可用性、性能差
過程化Wrapper Procedure 封裝 DML,調用遠端同名 Procedure大批量減少網絡往返開發維護成本高

現代替代方案推薦 (12c+)

  1. GoldenGate (OGG): 異構、低延遲、CDR 衝突解決、微服務友好、雲原生部署。
  2. Active Data Guard Far Sync: 零數據丟失、異地多活、無邏輯復制複雜度。
  3. Materialized View + Fast Refresh: 單向、可容忍延遲、維護簡單。
  4. Oracle Sharding / Global Data Services: 水平分片、跨區域路由。

選型決策樹

是否需要雙向寫入?
  ├─ 否 → 延遲要求?
  │        ├─ 秒級 → GoldenGate / XStreams
  │        ├─ 分鐘/小時 → Materialized View / DBLink Job
  │        └─ 天級 → ETL / SQL*Loader
  └─ 是 → 一致性要求?
           ├─ 強一致 (金融核心) → 同步復制 / Active Data Guard + 應用層路由
           └─ 最終一致 (可衝突解決) → GoldenGate CDR / Advanced Replication (舊系統維護)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤原因解決
ORA-23357: propagator does not existrepadmin 未授權、DBLink 用戶非 repadmin、GLOBAL_NAME 含保留字檢查權限、DBLink 用戶、修改 GLOBAL_NAME
ORA-23312: not the masterdef非主定義站點執行創建對象操作連接到 Master Definition Site 執行
DBLink 無法連接GLOBAL_NAMES=TRUE 但 DBLink 名 != GLOBAL_NAMEDBLink 名 = 遠端 GLOBAL_NAME