在學習 Oracle 12c 數據庫的過程中,我整理了關於 Far Sync Active Data Guard 架構下使用 DG Broker (DGMGRL) 進行配置管理的完整實踐流程。本文將詳細記錄從環境驗證、參數清理、Broker 啟用到最終驗證同步的完整步驟,供同學們參考。
首先確認數據庫版本為 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production,這是後續配置的基礎環境。
在 12cR1 及以上版本中,若不清除已配置的 log_archive_dest_n 參數,創建 DG Broker 時會報錯 ORA-16698: LOG_ARCHIVE_DEST_n parameter set for object to be added。需在主庫、Far Sync 實例和備庫分別執行:
-- 主庫
ALTER SYSTEM SET log_archive_dest_2='';
ALTER SYSTEM SET log_archive_dest_3='';
-- Far Sync 實例
ALTER SYSTEM SET log_archive_dest_2='';
-- 備庫
ALTER SYSTEM SET log_archive_dest_2='';
ALTER SYSTEM SET log_archive_dest_3='';
在所有節點(主庫、Far Sync、備庫)執行:
ALTER SYSTEM SET dg_broker_start=TRUE SCOPE=BOTH;
DGMGRL> CREATE CONFIGURATION dg12c_broker AS PRIMARY DATABASE IS dg12cpy CONNECT IDENTIFIER IS dg12cpy;
DGMGRL> ADD DATABASE dg12csd AS CONNECT IDENTIFIER IS dg12csd MAINTAINED AS PHYSICAL;
DGMGRL> ENABLE CONFIGURATION;
DGMGRL> SHOW CONFIGURATION;
此時配置包含主庫和備庫,保護模式為 MaxPerformance。
DGMGRL> ENABLE FAR_SYNC dg12cfy;
-- 關鍵:配置 Redo 傳輸路由
DGMGRL> EDIT DATABASE 'dg12cpy' SET PROPERTY 'RedoRoutes'='(LOCAL : dg12cfy SYNC)';
DGMGRL> EDIT FAR_SYNC 'dg12cfy' SET PROPERTY 'RedoRoutes'='(dg12cpy : dg12csd ASYNC)';
此配置實現:主庫同步傳輸至 Far Sync,Far Sync 異步轉發至備庫,滿足零數據丟失與遠距離容災需求。
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
DGMGRL> SHOW CONFIGURATION;
在主庫 PDB 中創建表並插入數據:
ALTER SESSION SET CONTAINER=pdb1;
CREATE TABLE t2 AS SELECT * FROM t1 WHERE 1=0;
INSERT INTO t2(id,name) VALUES (1,'dfrt');
COMMIT;
備庫同步查詢驗證:
ALTER SESSION SET CONTAINER=pdb1;
SELECT * FROM t2; -- 最初無數據,稍後顯示 ID=1, NAME=dfrt
驗證成功,Far Sync 架構下主備數據同步正常。
本文完整演示了 Oracle 12c Far Sync Active Data Guard 環境下,從參數清理到 Broker 配置、Redo 路由規劃、保護模式調整及最終驗證的全流程操作。關鍵在於 12cR1+ 版本必須先清除舊參數,並正確配置 RedoRoutes 實現多跳傳輸。