本例涉及两个站点.
主体定义站点:AVATAR.COOLYOUNG.COM.CN
主体站点:AUTHAA.COOLYOUNG.COM.CN
注:主体定义站点指配置复制工作的站点
本例涉及的用户.
复制管理员:repadmin
应用用户:hawa
本例复制的对象:hw_test 数据表
本例的先决条件:你需要设置好相应的参数,job_queue_processes需要大于0,global_name=true,并且建立相应的db link.
这些具体可以参考:高级复制的初步研究一文.
1.在主体定义站点复制用户下创建复制对象
SQL> select * from global_name; GLOBAL_NAME ----------------------------------------------------------- AVATAR.COOLYOUNG.COM.CN SQL> connect hawa/password Connected. SQL> create table hw_test as select * from hw_online; Table created. SQL> select count(*) from hw_test; COUNT(*) ---------- 464 SQL> alter table hw_test add (constraint pk_userid primary key (numuserid)); Table altered. |
2.在主体站点同样创建复制对象
SQL> select * from global_name; GLOBAL_NAME ------------------------------------------------------------------------ AUTHAA.COOLYOUNG.COM.CN SQL> connect hawa/password Connected. SQL> create table hw_test as select * from hw_online; Table created. SQL> select count(*) from hw_test; COUNT(*) ---------- 0 |
3.在主体站点手工同步数据
SQL> connect repadmin/password Connected. SQL> insert into hawa.hw_test select * from hawa.hw_test@avatar; 464 rows created. SQL> commit; Commit complete. |
4.在主体定义站点开始操作
登陆主体定义站点
$ sqlplus repadmin/password SQL*Plus: Release 9.2.0.4.0 - Production on Mon Jun 27 09:32:36 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.4.0 - Production SQL> select * from global_name; GLOBAL_NAME ---------------------------------------------------------------------------- AVATAR.COOLYOUNG.COM.CN |
创建复制组:
SQL> execute dbms_repcat.create_master_repgroup('rep_hh'); PL/SQL procedure successfully completed. SQL> select gname,master,status from dba_repgroup where gname='REP_HH'; GNAME M STATUS ------------------------------ - --------- REP_HH Y QUIESCED |
在复制组里加入复制对象
对复制对象产生复制支持
添加主体复制节点
登陆主体站点,检查复制对象情况:
在主体定义站点启动复制:
在主体定义站点删除数据测试:
在主体站点观察变化:
至此,同步复制配置完毕。
SQL> execute dbms_repcat.create_master_repobject (sname=>'hawa',oname=>'hw_test', type=>'table',use_existing_object=>true,gname=>'rep_hh',copy_rows=>false); PL/SQL procedure successfully completed. SQL> select sname,oname,status,gname from dba_repobject where gname='REP_HH'; SNAME ONAME STATUS GNAME ------------------------------ ------------------------------ ---------- ------------------------------ HAWA HW_TEST VALID REP_HH |
对复制对象产生复制支持
SQL> execute dbms_repcat.generate_replication_support('hawa','hw_test','table'); PL/SQL procedure successfully completed. SQL> select gname, master, status from dba_repgroup where gname='REP_HH'; GNAME M STATUS ------------------------------ - --------- REP_HH Y QUIESCED SQL> select sname,oname,status,gname from dba_repobject where gname='REP_HH'; SNAME ONAME STATUS GNAME ------------------------------ ------------------------------ ---------- ------------------------------ HAWA HW_TEST VALID REP_HH HAWA HW_TEST$RP VALID REP_HH HAWA HW_TEST$RP VALID REP_HH SQL> |
添加主体复制节点
SQL> execute dbms_repcat.add_master_database (gname=>'rep_hh',master=>'AUTHAA.COOLYOUNG.COM.CN',use_existing_objects=>true, copy_rows=>false, propagation_mode => 'synchronous'); PL/SQL procedure successfully completed. SQL> column masterdef format a10 SQL> column master format a10 SQL> column dblink format a25 SQL> column gname format a12 SQL> select gname, dblink, masterdef MASTERDEF, master MASTER from sys.dba_repsites where gname='REP_HH'; GNAME DBLINK MASTERDEF MASTER ------------ ------------------------- ---------- ---------- REP_HH AVATAR.COOLYOUNG.COM.CN Y Y REP_HH AUTHAA.COOLYOUNG.COM.CN N Y |
登陆主体站点,检查复制对象情况:
[oracle@www167 oracle]$ sqlplus repadmin/password SQL*Plus: Release 9.2.0.4.0 - Production on Mon Jun 27 09:34:49 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning option JServer Release 9.2.0.4.0 - Production SQL> select * from global_name; GLOBAL_NAME -------------------------------------------------------------------------------- AUTHAA.COOLYOUNG.COM.CN SQL> set linesize 120 SQL> select sname,oname,status,gname from dba_repobject where gname='REP_HH'; SNAME ONAME STATUS GNAME ------------------------------ ------------------------------ ---------- ------------------------------ HAWA HW_TEST VALID REP_HH HAWA HW_TEST$RP VALID REP_HH HAWA HW_TEST$RP VALID REP_HH |
在主体定义站点启动复制:
SQL> select * from global_name; GLOBAL_NAME ----------------------------------------------------------------------------- AVATAR.COOLYOUNG.COM.CN SQL> execute dbms_repcat.resume_master_activity('rep_hh',true); PL/SQL procedure successfully completed. |
在主体定义站点删除数据测试:
SQL> connect hawa/password Connected. SQL> select count(*) from hw_test; COUNT(*) ---------- 464 SQL> delete from hw_test where rownum <20; 19 rows deleted. SQL> commit; Commit complete. SQL> select count(*) from hw_test; COUNT(*) ---------- 445 |
在主体站点观察变化:
SQL> select * from global_name; GLOBAL_NAME -------------------------------------------------------------------------------- AUTHAA.COOLYOUNG.COM.CN SQL> select count(*) from hw_test; COUNT(*) ---------- 445 SQL> |
至此,同步复制配置完毕。