跨地域資料庫同步需求常見於分散式應用。Oracle 高級複寫 (Advanced Replication) 提供多主 (Multi-Master) 同步複寫機制。
V$OPTION,Advanced replication = TRUE 才支援。db_domain = test.com.cn -- 全域網域名
global_names = TRUE -- DB Link 名稱必須 = 全域資料庫名
job_queue_processes = 1 -- SNP 背景進程數 (0~36)
job_queue_interval = 60 -- 喚醒間隔秒數
distributed_transactions = 10 -- 分散式交易上限
open_links = 4 -- 開啟 DB Link 上限
修改後需重啟實例生效。雙邊 tnsnames.ora 設定服務名,tnsping 測試通。
-- shenzhen 節點
ALTER DATABASE RENAME GLOBAL_NAME TO shenzhen.test.com.cn;
CREATE PUBLIC DATABASE LINK beijing.test.com.cn USING 'beijing';
SELECT * FROM GLOBAL_NAME@beijing.test.com.cn; -- 驗證回傳 beijing.test.com.cn
-- beijing 節點對稱操作
ALTER DATABASE RENAME GLOBAL_NAME TO beijing.test.com.cn;
CREATE PUBLIC DATABASE LINK shenzhen.test.com.cn USING 'shenzhen';
SELECT * FROM GLOBAL_NAME@shenzhen.test.com.cn;
CREATE USER repadmin IDENTIFIED BY repadmin
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
EXEC DBMS_DEFER_SYS.REGISTER_PROPAGATOR('repadmin');
GRANT EXECUTE ANY PROCEDURE TO repadmin;
EXEC DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_REPGROUP('repadmin');
GRANT COMMENT ANY TABLE TO repadmin;
GRANT LOCK ANY TABLE TO repadmin;
雙節點同樣執行。後續將建立複寫群組、新增複寫物件、啟動複寫。