V$OPTION,ADVANCED REPLICATION 須為 TRUEDB_DOMAIN = test.com.cnGLOBAL_NAMES = TRUE(資料庫連結名稱必須與全域名稱一致)JOB_QUEUE_PROCESSES = 1、JOB_QUEUE_INTERVAL = 60、DISTRIBUTED_TRANSACTIONS = 10、OPEN_LINKS = 4| 項目 | 深圳節點 | 北京節點 |
|---|---|---|
| 全域資料庫名 | shenzhen.test.com.cn | beijing.test.com.cn |
| SID | shenzhen | beijing |
| Listener Port | 1521 | 1521 |
| Server IP | 10.1.1.100 | 10.1.1.200 |
在 TNSNAMES.ORA 設定連線字串,雙邊執行 TNSPING 驗證。
-- 深圳
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
-- 北京
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; -- 應回傳 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;
-- 雙邊同樣執行
-- 深圳
CONNECT repadmin/repadmin
CREATE DATABASE LINK beijing.test.com.cn CONNECT TO repadmin IDENTIFIED BY repadmin;
SELECT * FROM GLOBAL_NAME@beijing.test.com.cn;
-- 北京同理建立指向深圳的私有連結
COMMITEXEC DBMS_REPCAT.CREATE_MASTER_REPGROUP('scott_mg');
EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT(
SNAME=>'SCOTT', ONAME=>'DEPT', TYPE=>'TABLE',
USE_EXISTING_OBJECT=>TRUE, GNAME=>'scott_mg');
EXEC DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT('SCOTT','DEPT','TABLE');
-- 查詢 DBA_REPGROUP、DBA_REPOBJECT 確認
EXEC DBMS_REPCAT.ADD_MASTER_DATABASE(
GNAME=>'scott_mg', MASTER=>'beijing.test.com.cn',
USE_EXISTING_OBJECTS=>TRUE, COPY_ROWS=>FALSE,
PROPAGATION_MODE=>'ASYNCHRONOUS');
-- 查詢 USER_JOBS 確認排程已建立
EXEC DBMS_REPCAT.RESUME_MASTER_ACTIVITY('scott_mg', FALSE);
-- 若失敗可嘗試 TRUE(緊急情況)
SELECT GNAME, MASTER, STATUS FROM DBA_REPGROUP; -- 應顯示 NORMAL
-- 深圳
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH(DESTINATION=>'beijing.test.com.cn',
INTERVAL=>'SYSDATE + 10/1440', NEXT_DATE=>SYSDATE);
DBMS_DEFER_SYS.SCHEDULE_PURGE(NEXT_DATE=>SYSDATE,
INTERVAL=>'SYSDATE + 10/1440', DELAY_SECONDS=>0, ROLLBACK_SEGMENT=>'');
END;
-- 北京對稱設定指向深圳
SELECT JOB, THIS_DATE, NEXT_DATE, WHAT, BROKEN FROM USER_JOBS;
EXEC DBMS_JOB.RUN(job_number);
THIS_DATE 為空或非空,NEXT_DATE 為未來時間NEXT_DATE 為過去時間或極大值(如 4001-01-01),常因網路中斷PS -EF | GREP ORA_SNP 找到進程號
KILL -9 進程號
EXEC DBMS_JOB.RUN(job_number);
EXEC DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY('scott_mg');GENERATE_REPLICATION_SUPPORT / DROP_MASTER_REPOBJECTEXEC DBMS_REPCAT.RESUME_MASTER_ACTIVITY('scott_mg', FALSE);