SELECT * FROM v$option 中 Advanced replication = TRUEdb_domain = test.com.cn
global_names = true
job_queue_processes = 1
job_queue_interval = 60
distributed_transactions = 10
open_links = 4
修改後需重啟資料庫生效
節點:China (10.1.0.100) 與 Japan (10.1.0.200),SID 均為同名,Listener 1521。
tnsnames.ora,tnsping 驗證-- China 節點
ALTER DATABASE RENAME GLOBAL_NAME TO China.test.com.cn;
CREATE PUBLIC DATABASE LINK Japan.test.com.cn USING 'Japan';
SELECT * FROM global_name@Japan.test.com.cn; -- 驗證回傳 Japan.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;
CREATE DATABASE LINK Japan.test.com.cn CONNECT TO repadmin IDENTIFIED BY repadmin;
-- China: sequence 1~44
-- Japan: sequence 45~99
EXEC 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');
EXEC dbms_repcat.add_master_database(gname=>'scott_mg', master=>'Japan.test.com.cn', use_existing_objects=>true, copy_rows=>false, propagation_mode=>'asynchronous');
EXEC dbms_repcat.resume_master_activity('scott_mg', false);
BEGIN dbms_defer_sys.schedule_push(destination=>'Japan.test.com.cn', interval=>'sysdate+10/1440', next_date=>sysdate); END;
BEGIN dbms_defer_sys.schedule_purge(next_date=>sysdate, interval=>'sysdate+10/1440', delay_seconds=>0, rollback_segment=>''); END;
user_jobs 監控 Job 狀態:next_date 異常(過往或極大值)表示死鎖kill -9 刪除 ora_snp* 進程,再 EXEC dbms_job.run(job_no)SUSPEND_MASTER_ACTIVITY → 增刪物件 → GENERATE_REPLICATION_SUPPORT → RESUME_MASTER_ACTIVITY