针对某个表使用高级复制进行数据同步示例(二)
>create table test(x int primary key);
Table created.
GP@bys1>select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST TABLE
目标端:
SYS@bys2>conn gp/gp
Connected.
GP@bys2>create table test(x int primary key);
Table created.
###################################################################
4.创建DBLINK--源和目标都创建到对方的DBLINK
注意:如果db_domain值为空,并且global names设置为true的情况下,那么这里link关键词后面的这个“bys2”必须写目标端global_name的值,而using关键词后面的“bys2”表示的是连接目标端的SERVICE NET NAME
源端:
GP@bys1>conn repadmin/repadmin
Connected.
REPADMIN@bys1>create database link bys2 connect to repadmin identified by repadmin using 'bys2';
Database link created.
REPADMIN@bys1>select * from global_name@bys2;
GLOBAL_NAME
-----------------------------------------------
BYS2
目标端:
GP@bys2>conn repadmin/repadmin
Connected.
REPADMIN@bys2>create database link bys1 connect to repadmin identified by repadmin using 'bys1';
Database link created.
REPADMIN@bys2>select * from global_name@bys1;
GLOBAL_NAME
---------------------------------------
BYS1
################################################################################
5.在源端创建复制所需的操作
在源端创建复制组
REPADMIN@bys1> execute dbms_repcat.create_master_repgroup('rep');
PL/SQL procedure successfully completed.
REPADMIN@bys1>select gname ,master ,status from dba_repgroup where gname = 'REP';
GNAME M STATUS
------------------------------ - ---------
REP Y QUIESCED
在源端加入复制对象
REPADMIN@bys1>execute dbms_repcat.create_master_repobject(sname=>'gp',oname=>'test',type=>'table',use_existing_object=>true ,gname=>'rep' ,copy_rows=>false);
PL/SQL procedure successfully completed.
REPADMIN@bys1>select gname ,master ,status from dba_repgroup where gname = 'REP';
GNAME M STATUS
------------------------------ - ---------
REP Y QUIESCED
在源端启动复制支持
REPADMIN@bys1>execute dbms_repcat.generate_replication_support('gp','test' ,'table');
PL/SQL procedure successfully completed.
REPADMIN@bys1>select gname ,master ,status from dba_repgroup where gname = 'REP';
GNAME M STATUS
------------------------------ - ---------
REP Y QUIESCED
col sname for a10
col oname for a10
col gname for a10
REPADMIN@bys1>select sname,oname,status,gname from dba_repobject; ---这一步要做一下检查,确认启动的复制对象是正常的。
SNAME ONAME STATUS GNAME
---------- ---------- ---------- ----------
GP TEST VALID REP
GP TEST$RP VALID REP
GP TEST$RP VALID REP
注:如添加源端复制支持这一步输入 错了表名或用户名,通过dba_repobject;可以查出,可以使用下面语句删除错误的配置,不然下一步添加复制节点会报错找不到相关对象。
execute DBMS_REPCAT.DROP_MASTER_REPOBJECT (sname=>'gp',oname=>'T',type=>'TABLE');
在源端添加复制节点
REPADMIN@bys1>execute dbms_repcat.add_master_database(gname=>'rep',master=>'bys2' ,use_existing_objects=>true ,copy_rows=>false ,propagation_mode=>'synchronous');
PL/SQL procedure successfully completed.
REPADMIN@bys1>col dblink for a10
REPADMIN@bys1> select gname ,dblink ,masterdef ,master from dba_repsites where gname='REP';
GNAME DBLINK M M
------