本例涉及两个站点.
主体定义站点(masterdef): QASJS.REGRESS.RDBMS.DEV.US.ORACLE.COM , 192.168.153.128
主体站点(master): QASJSS.REGRESS.RDBMS.DEV.US.ORACLE.COM , 192.168.153.133
注:主体定义站点指配置复制工作的站点
准备
-- 需要为TRUE
select * from v$option where parameter ='Advanced replication';
-- 记下global_name, 可通过alter database rename global_name to修改, 需保证在同一域下(其实通过hosts直接指向IP也行)
select * from global_name;
show parameter db_domain;
-- 需要大于10
show parameter job_queue_processes;
-- 需要大于0, 连接越多此值越大
show parameter open_links;
-- 在两台主机的tns上分别添加对方的连接(通过Net Manager或者直接修改tnsnames.ora), 后边创建数据连接按此名字进行
创建复制用户并授权
-- 创建用于复制用户
create user repadmin identified by repadmin default tablespace qasjs temporary tablespace temp;
--指定复制用户
execute dbms_defer_sys.register_propagator('repadmin');
--授权运行
grant execute any procedure to repadmin;
--授权管理复制组
execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');
--授权访问方案
execute dbms_repcat_admin.grant_admin_any_schema(username => 'repadmin');
--
grant comment any table to repadmin;
--
grant lock any table to repadmin;
--
grant select any dictionary to repadmin;
创建数据连接
-- 主体定义站点(主库)
CREATE DATABASE LINK "QASJSS.REGRESS.RDBMS.DEV.US.ORACLE.COM" CONNECT TO
"repadmin"
IDENTIFIED BY "repadmin"
USING 'qasjss';
-- 主体站点(复制库)
CREATE DATABASE LINK "QASJS.REGRESS.RDBMS.DEV.US.ORACLE.COM" CONNECT TO
"repadmin"
IDENTIFIED BY "repadmin"
USING 'qasjs';
-- 通过以下方式测试数据连接正确性
-- 在主库运行以下语句:
select * from global_name@qasjss.regress.rdbms.dev.us.oracle.com;
-- 在复制库运行以下语句:
select * from global_name@qasjs.regress.rdbms.dev.us.oracle.com;
-- 手工从主库同步初始数据, 注意一定要commit, 不然会影响后边同步.