1 准备条件
数据库A 实例名:sid:LIST
数据库B 实例名:sid:LIST2
主体定义站点:LIST (数据源的站点)
主体站点:LIST2 (需要同步的备份站点)
复制管理员:repadmin
应用程序用户:COMM
复制的对象为:global_para,包括两个字段(PAR_NAME,PAR_VALUE),注PAR_NAME为主键,复制必须要主键
job_queue_processes需要大于0,global_name=true,
2 穿件复制管理员
--创建repadmin用户管理复制环境
CREATE USER REPADMIN IDENTIFIED BY REPADMIN;
ALTER USER REPADMIN DEFAULT TABLESPACE USERS;
ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP;
GRANT connect, resource TO REPADMIN;
--授予repadmin用户权限可以管理当前站点中任何主体组
EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');
--授予repadmin用户权限可以为任何表创建snapshot logs
GRANT comment any table TO REPADMIN;
GRANT lock any table TO REPADMIN;
--指定repadmin用户为propagator,并授予执行任何procedure的权限
EXECUTE dbms_defer_sys.register_propagator('REPADMIN');
GRANT execute any procedure TO REPADMIN;
3 查看全局名称
select * from global_name;
我的两个全局名称为:
LIST.US.ORACLE.COM
LIST2.US.ORACLE.COM
4 在两个数据库上建立数据库链接
SID:LIST机器上创建
create public database link LIST2.US.ORACLE.COM connect to REPADMIN identified by REPADMIN using 'LIST2';
SID:LIST2机器上创建
create public database link LIST.US.ORACLE.COM connect to REPADMIN identified by REPADMIN using 'LIST';
注意:LIST与LIST2为数据库监听的名字,LIST.US.ORACLE.COM 与LIST2.US.ORACLE.COM 是复制的时候通讯的数据库连接(DB LINK),此处一定要配好,不然两个机器上不能通讯。
5 开始配置主定义站点(数据源)
以REPADMIN登录数据库LIST
a )创建复制组
execute dbms_repcat.create_master_repgroup('rep_hh');
查看复制组
select gname,master,status from dba_repgroup where gname='REP_HH';
GNAME MASTER STATUS
------------------------------ ------ ---------
REP_HH Y QUIESCED
------------------------------ ------ ---------
REP_HH Y QUIESCED
b)在复制组里加入复制对象:
execute dbms_repcat.create_master_repobject(sname => 'COMM',oname => 'global_para',type => 'table',use_existing_object => true,gname => 'rep_hh',copy_rows => false);
查看复制组对象
select sname,oname,status,gname from dba_repobject where gname='REP_HH';
SNAME ONAME STATUS GNAME
------------------------------ ------------------------------ ---------- ------------------------------
COMM GLOBAL_PARA VALID REP_HH
------------------------------ ------------------------------ ---------- ------------------------------
COMM GLOBAL_PARA VALID REP_HH
c)对复制对象产生复制支持
execute dbms_repcat.generate_replication_support(sname => 'COMM',oname => 'global_para',type => 'table');
select sname,oname,status,gname from dba_repobject where gname='REP_HH';
SNAME ONAME STATUS GNAME
------------------------------ ------------------------------ ---------- ------------------------------
COMM GLOBAL_PARA VALID REP_HH
COMM GLOBAL_PARA$RP VALID REP_HH
COMM GLOBAL_PARA$RP VALID REP_HH
------------------------------ ------------------------------ ---------- ------------------------------
COMM GLOBAL_PARA VALID REP_HH
COMM GLOBAL_PARA$RP VALID REP_HH
COMM GLOBAL_PARA$RP VALID REP_HH
d)添加主体复制节点
execute dbms_repcat.add_master_database(gname=>'rep_hh',master => 'LIST2.US.ORACLE.COM',use_existing_objects => true,copy_rows => false,propagation_mode => 'synchronous');
查看结果
查看结果
select gname, dblink, masterdef MASTERDEF, master MASTER from sys.dba_repsites where gname='REP_HH';
GNAME DBLINK MASTERDEF MASTER
------------------------------ -------------------------------------------------------------------------------- --------- ------
REP_HH LIST2.US.ORACLE.COM N Y
REP_HH LIST.US.ORACLE.COM Y Y
------------------------------ -------------------------------------------------------------------------------- --------- ------
REP_HH LIST2.US.ORACLE.COM N Y
REP_HH LIST.US.ORACLE.COM Y Y
e)在主体定义站点启动复制
execute dbms_repcat.resume_master_activity('rep_hh',true);
启动复制的时候注意上诉几步中错误的一定要在企业管理器中删除相应的错误信息。我这里就报错了,删掉后一起OK
主体定义站点配置完毕
6 查看定义站点
用复制管理员repadmin 登陆
select sname,oname,status,gname from dba_repobject where gname='REP_HH';
SNAME ONAME STATUS GNAME
------------------------------ ------------------------------ ---------- ------------------------------
COMM GLOBAL_PARA VALID REP_HH
COMM GLOBAL_PARA$RP VALID REP_HH
COMM GLOBAL_PARA$RP VALID REP_HH
------------------------------ ------------------------------ ---------- ------------------------------
COMM GLOBAL_PARA VALID REP_HH
COMM GLOBAL_PARA$RP VALID REP_HH
COMM GLOBAL_PARA$RP VALID REP_HH
如果出现查询结果说明配置成功,如果没有估计是在DB LINK的地方出错了,两个机器间没有办法通讯,请求没有发过来。
7测试同步
在LIST机器上的COMM下插入一条数据,在LIST2上会出项相应的记录。