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

Oracle 資料庫複製策略實作:多站點資料同步至總部

     編輯:Oracle 資料庫相關知識

業務場景

A 公司總部設於北京,下轄上海、杭州、武漢三家分公司,各自擁有相同結構的 Oracle 9i 資料庫。需求:每日將三地營業資料非同步複製至總部,作為備份與綜合統計之用。

前置準備

  • 網路連通正常
  • 蒐集各站點:資料庫版本、大小、字元集、Schema 名稱
  • 總部資料庫版本不低於各分站,建議統一字元集
  • 為各分站建立獨立表空間(預留成長空間)與對應 Schema(本例為 SHORACL、HZORACL、WHORACL)

核心概念釐清

實作步驟(以上海站點為例)

1. 建立複製管理員並授權

CONNECT sys@SH AS SYSDBA;
CREATE USER rep_admin IDENTIFIED BY password;
GRANT CREATE SESSION, CREATE TABLE, CREATE PROCEDURE, CREATE TRIGGER, 
      CREATE MATERIALIZED VIEW, CREATE DATABASE LINK TO rep_admin;
GRANT SELECT ANY TABLE TO rep_admin; -- 允許建立 MV Log

2. 註冊傳播者

BEGIN
  DBMS_DEFER_SYS.REGISTER_PROPAGATOR('rep_admin');
END;
/

3. 排程清除作業

CONNECT rep_admin@SH;
BEGIN
  DBMS_JOB.SUBMIT(
    job       => :jobno,
    what      => 'DBMS_DEFER_SYS.PUSH(''BJ'', stop_on_error=>FALSE);',
    next_date => SYSDATE,
    interval  => 'SYSDATE + 1'  -- 每日一次
  );
  COMMIT;
END;
/

4. 建立複製代理帳號

CREATE USER mv_agent IDENTIFIED BY password;
GRANT CREATE SESSION, SELECT ANY TABLE TO mv_agent; -- 視圖接收者權限

5. 建立 Master Group 並加入複製物件

BEGIN
  DBMS_REPCAT.CREATE_MASTER_REPGROUP('SH_MG');
  DBMS_REPCAT.CREATE_MASTER_REPOBJECT(
    sname => 'SHORACL', oname => 'SALES_TABLE', type => 'TABLE',
    gname => 'SH_MG', use_existing_object => TRUE, copy_rows => FALSE
  );
  -- 重複加入其他表...
  DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT('SHORACL','SALES_TABLE','TABLE');
  DBMS_REPCAT.RESUME_MASTER_ACTIVITY('SH_MG');
END;
/

6. 目標端建立 Materialized View Group 與 Views

在總部 (BJ) 執行:

CONNECT rep_admin@BJ;
BEGIN
  DBMS_REPCAT.CREATE_MVIEW_REPGROUP('SH_MG', master => 'SH');
  DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
    sname => 'SHORACL', oname => 'SALES_TABLE', type => 'TABLE',
    gname => 'SH_MG', ddl_text => 'CREATE MATERIALIZED VIEW SHORACL.SALES_TABLE 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT * FROM SHORACL.SALES_TABLE@SH'
  );
  -- 重複加入其他表...
  DBMS_REPCAT.REFRESH_MVIEW_REPGROUP('SH_MG');
END;
/

維運建議

  • 定期監控 DBA_REPCATLOG、DBA_MVIEW_REFRESH_TIMES 確認同步狀態
  • 來源端表需有主鍵以支援快速刷新
  • 網路中斷時,快速刷新會失敗轉為完全刷新(若設定 FORCE)
  • 定期 Purge MV Log 避免膨脹
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
術語說明
Master Site提供資料來源的站點(分公司)
Materialized View Site目標端站點(總部)
Materialized View目標端對應的實體表,僅透過複製機制維護
快速刷新 / 完全刷新 / 強制刷新三種同步模式,本案採每日一次異步快速刷新
Master Group / MV Group來源/目標端被複製物件的邏輯群組
Materialized View Log記錄來源端變更的日誌表,支援快速刷新