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

Oracle 資料庫集中複寫實戰:多營業部異步複寫至總部匯總

     編輯:Oracle 資料庫基礎

業務場景

A 公司總部北京,三分部上海/杭州/武漢,軟體與資料庫結構相同。需將三地資料每日異步複寫至總部,作備份與綜合統計。

前置資訊蒐集

  1. 複寫站點數量
  2. 各站點 Oracle 版本
  3. 各資料庫大小
  4. 字符集
  5. 方案名

建立總部集中資料庫(版本 ≥ 所有主站點,建議同字符集),為各主站點建立對應表空間(大於資料量 + 預留)。各分部方案名均為 ORACLE,總部建立對應方案 SHORACL、HZORACL、WHORACL。版本均為 9i。

核心概念

  • 主站點:資料來源(如上海)
  • 實體化視圖站點:目標站點(北京)
  • 多主複寫:所有站點同權管理
  • 實體化視圖複寫:單向從主站點複製
  • 實體化視圖:目標端對應表,僅透過複寫機制增刪改
  • 快速/完全/強制刷新:僅變更/全量/快速失敗則全量
  • 主群組/視圖群組/視圖日誌:物件集合與快速刷新輔助表

上海主站點設定 (範例)

  1. 建立複寫管理員 repadmin 授權(GRANT_ADMIN_ANY_SCHEMA, COMMENT/LOCK ANY TABLE, 選用 SELECT ANY DICTIONARY)
  2. 註冊傳播者 dbms_defer_sys.register_propagator
  3. 排程清除作業 dbms_defer_sys.schedule_purge(間隔 1 天)
  4. 建立複寫代理用戶 proxy_bjoracle 授權 PROXY_SNAPADMIN、SELECT_CATALOG_ROLE
  5. 建立主群組 sh_rep
  6. 加入物件:表 CREDIT_CARD、索引 INDEX_CREDIT_CARD(USE_EXISTING_OBJECT=TRUE,表 COPY_ROWS=TRUE,索引 FALSE)
  7. 無主鍵表設定替代鍵 dbms_repcat.set_columns
  8. 產生複寫支援 dbms_repcat.generate_replication_support(MIN_COMMUNICATION=TRUE)
  9. 建立實體化視圖日誌 CREATE MATERIALIZED VIEW LOG ON ...(無主鍵用 WITH ROWID EXCLUDING NEW VALUES)
  10. 啟動複寫 dbms_repcat.resume_master_activity

北京目標站點設定

  1. 建立視圖管理員 mvadmin 授權(同 repadmin + SELECT ANY DICTIONARY)
  2. 註冊傳播者
  3. 建立 Public DB Link ORACLSH 指向上海(全域名或連線字串)
  4. 排程清除作業(間隔 1 小時)
  5. 建立 mvadmin Private DB Link 連接 proxy_bjoracle
  6. 排程推送作業 dbms_defer_sys.schedule_push(間隔 1 小時,STOP_ON_ERROR=FALSE)
  7. 授權方案用戶 SHORACL 建立視圖所需權限(CREATE TABLE/VIEW/SNAPSHOT 等)
  8. 方案用戶建立 Private DB Link ORACLSH 連接上海方案用戶
  9. 建立實體化視圖:
    CREATE MATERIALIZED VIEW SHORACL.CREDIT_CARD REFRESH FAST WITH PRIMARY KEY
    AS SELECT * FROM ORACL.CREDIT_CARD@ORACLSH;
        
    無主鍵用 WITH ROWID
  10. 建立刷新群組 dbms_refresh.make(間隔 1 天,PUSH_DEFERRED_RPC=TRUE)並加入視圖

驗證與維護

  • 查 sys.dba_jobs 確認三類 Job:清除、推送、刷新(杭州/武漢同樣建立後共 7 個 Job)
  • 確保 job_queue_processes > 0,否則不自動刷新
  • 觀察 failures 欄位:失敗自動重試(指數退避),16 次或超過間隔則標記 BROKEN,需手動 dbms_job.run 並修正錯誤

總結

採用最簡單的單向實體化視圖異步複寫,滿足集中備份與統計需求。進階功能(可更新視圖、複雜視圖)視系統效能與功能需求決定是否採用。

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