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

Oracle 高級複寫同步複寫配置完整 8 步驟實戰

     編輯:Oracle 資料庫基礎

業務場景與架構

企業在全國多地部署 Oracle 資料庫,要求各節點資料強一致、即時同步。採用 Oracle Advanced Replication 同步複寫:主定義站點發起異動,同步推播至所有主站點,交易在所有節點同步提交或全部回滾,保證強一致性。

前置條件檢查

  1. 資料庫版本支援 Advanced Replication:SELECT * FROM V$OPTION WHERE PARAMETER = 'Advanced replication'; 必須為 TRUE
  2. JOB_QUEUE_PROCESSES > 0(背景推播作業)
  3. GLOBAL_NAMES = TRUE(全域資料庫名稱唯一性)
  4. 節點間已建立雙向 Database Link

環境資訊

八步驟配置流程

步驟 1:建立應用用戶 CQM(兩節點同步執行)

CREATE USER CQM IDENTIFIED BY CQM 
  DEFAULT TABLESPACE CQM TEMPORARY TABLESPACE TEMP;
GRANT DBA TO CQM;  -- 測試環境簡化,生產建議最小權限

步驟 2:建立複寫管理員 REPADMIN(兩節點同步執行)

CREATE USER REPADMIN IDENTIFIED BY REPADMIN;
ALTER USER REPADMIN DEFAULT TABLESPACE USERS;
ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP;
GRANT CONNECT, RESOURCE TO REPADMIN;

-- 授予管理任何複寫群組權限
EXEC DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA('REPADMIN');

-- 授予建立 Snapshot Log 權限
GRANT COMMENT ANY TABLE TO REPADMIN;
GRANT LOCK ANY TABLE TO REPADMIN;

-- 註冊為 Propagator 並授予執行任何程序權限
EXEC DBMS_DEFER_SYS.REGISTER_PROPAGATOR('REPADMIN');
GRANT EXECUTE ANY PROCEDURE TO REPADMIN;

步驟 3:修改全域資料庫名稱(兩節點各自執行)

-- 節點 A
ALTER DATABASE RENAME GLOBAL_NAME TO EREAD.IM.COM.CN;

-- 節點 B
ALTER DATABASE RENAME GLOBAL_NAME TO TEST.IM.COM.CN;

關鍵:全域名稱必須與 Database Link 連接字串一致,且全網唯一。

步驟 4:建立雙向 Database Link(兩節點各自執行)

-- 節點 A 建立指向 B 的 Link
CREATE PUBLIC DATABASE LINK TEST.IM.COM.CN 
  CONNECT TO REPADMIN IDENTIFIED BY REPADMIN USING 'TEST';

-- 節點 B 建立指向 A 的 Link
CREATE PUBLIC DATABASE LINK EREAD.IM.COM.CN 
  CONNECT TO REPADMIN IDENTIFIED BY REPADMIN USING 'EREAD';
  • 使用 PUBLIC 供所有用戶使用
  • 連接用戶為複寫管理員 REPADMIN
  • USING 參照 tnsnames.ora 別名

步驟 5:建立複寫物件表(應用用戶 CQM,兩節點同步執行)

CREATE TABLE REPTEST (
  ID NUMBER(10) PRIMARY KEY,
  TIMESTAMP DATE DEFAULT SYSDATE
);
-- 必須有主鍵,否則無法產生複寫支援

步驟 6:在主定義站點建立複寫群組與物件

以 REPADMIN 登入節點 A (eread):

-- 建立主複寫群組
EXEC DBMS_REPCAT.CREATE_MASTER_REPGROUP('REPG');

-- 加入複寫物件
EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT(
  SNAME => 'CQM',
  ONAME => 'REPTEST',
  TYPE => 'TABLE',
  USE_EXISTING_OBJECT => TRUE,
  GNAME => 'REPG',
  COPY_ROWS => FALSE
);

-- 產生複寫支援(建立內部觸發器、封裝、佇列)
EXEC DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT('CQM', 'REPTEST', 'TABLE');

步驟 7:新增主站點並指定同步模式

EXEC DBMS_REPCAT.ADD_MASTER_DATABASE(
  GNAME => 'REPG',
  MASTER => 'TEST.IM.COM.CN',
  USE_EXISTING_OBJECTS => TRUE,
  COPY_ROWS => FALSE,
  PROPAGATION_MODE => 'SYNCHRONOUS'
);
  • PROPAGATION_MODE => 'SYNCHRONOUS':同步複寫核心參數,異動同步推播、雙階段提交
  • USE_EXISTING_OBJECTS => TRUE:目標站點已有同結構表,直接啟用

步驟 8:啟動複寫活動

EXEC DBMS_REPCAT.RESUME_MASTER_ACTIVITY('REPG', TRUE);

至此配置完成,複寫群組進入正常運作狀態。

驗證測試

小資料量測試

-- 節點 A 插入
INSERT INTO CQM.REPTEST (ID) VALUES (1);
COMMIT;

-- 節點 B 立即可見
SELECT * FROM CQM.REPTEST;  -- 應返回 ID=1

大資料量壓測程序

CREATE OR REPLACE PROCEDURE INSERT_INTO_REPTEST AS
  I NUMBER;
  M NUMBER;
  N NUMBER := 0;
BEGIN
  FOR I IN 1..10000 LOOP
    M := I;
    INSERT INTO CQM.REPTEST (ID) VALUES (M);
    N := N + 1;
    IF N = 1000 THEN
      COMMIT;
      N := 0;
    END IF;
  END LOOP;
  COMMIT;
END;
/
EXEC INSERT_INTO_REPTEST;
  • 每 1000 筆提交一次,觀察同步延遲、衝突處理、效能
  • 同步複寫下,遠端節點必須同步完成才返回 COMMIT,網路延遲直接影響交易回應時間

同步複寫關鍵特性與限制

屬性主定義站點 A主站點 B
版本Oracle 10.2.0.1Oracle 10.1.0.3
SIDereadtest
全域名稱eread.im.com.cntest.im.com.cn
複寫管理員repadminrepadmin
應用用戶cqmcqm
複寫物件REPTEST 表

監控與維護常用指令

-- 檢視複寫群組狀態
SELECT GNAME, STATUS FROM DBA_REPGROUP;

-- 檢視複寫物件
SELECT SNAME, ONAME, TYPE, STATUS FROM DBA_REPOBJECT WHERE GNAME = 'REPG';

-- 檢視延遲佇列
SELECT * FROM DBA_DEFER_TRAN WHERE DEST = 'TEST.IM.COM.CN';

-- 暫停/恢複寫
EXEC DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY('REPG');
EXEC DBMS_REPCAT.RESUME_MASTER_ACTIVITY('REPG', TRUE);

-- 衝突統計
SELECT * FROM DBA_REPRESOLUTION_STATISTICS WHERE GNAME = 'REPG';

總結

  1. 同步複寫提供強一致性,適合金融、庫存等核心業務
  2. 八步驟核心:建用戶、設全域名、建 DB Link、建表(含PK)、建群組、加物件、產生支援、加站點(同步模式)、啟動
  3. 網路延遲是最大敵人:跨機房 RTT > 5ms 將嚴重影響交易效能,建議同城雙活或專線互聯
  4. 生產環境務必規劃衝突監控、效能基線、故障切換預案
  5. Oracle 12c+ 建議考慮 Active Data Guard 或 GoldenGate 替代,Advanced Replication 已進入維護模式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性說明
一致性強一致性(ACID 跨節點),雙階段提交
延遲等同於網路往返時間 (RTT),高延遲環境不適合
可用性任一節點故障導致寫入失敗(除非配置 Quorum/多數派)
衝突解決同步模式下衝突極少(主鍵衝突即時報錯),無需複雜衝突解決程序
頻寬需求高,每筆異動即時推播
支援 DDL不支援 DDL 自動複寫,結構變更需暫停複寫手動同步