文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>master replication冲突规则(Update,Uniqueness)

master replication冲突规则(Update,Uniqueness)

时间:2010-06-29  来源:rushmeplz

1.master replication 异步复制时同时update的冲突规则(dbms_repcat.add_update_resolution)   overwrite and discard   极少用,除了认为规定某一站点的数据绝对正确,发生冲突时overwrite或者discard其他站点的数据   Minimum and Maximum   根据parameter_column_name的值来决定应该应用哪个站点的column_group的值   Timestamp   为复制表增加一个timestamp的column,根据时间戳来解决冲突,需要站点间的时间同步   Priority Groups   为某一特定column分配一个优先级,发生冲突时根据优先级来解决冲突   Site Priority   为某一站点分配一个优先级,发生冲突时高优先级的站点数据将覆盖低优先级的站点数据     测试   Minimum and Maximum   表结构   CREATE TABLE TEST.USER_STATE
(
  ID     NUMBER,
  NUM    NUMBER,
  STATE  VARCHAR2(20 BYTE)
)
TABLESPACE USERS
  ALTER TABLE TEST.USER_STATE ADD (
  CONSTRAINT USER_STATES_PK
 PRIMARY KEY
 (ID)
  建立column_group   exec dbms_repcat.make_column_group(sname =>'test',oname =>'user_state',column_group =>'cg',list_of_column_names =>'id,num,state');   应用冲突规则   exec dbms_repcat.add_update_resolution(sname =>'test',oname =>'user_state',column_group =>'cg',sequence_no =>1,method =>'MAXIMUM',parameter_column_name =>'num');   复制更新到其他的站点   exec dbms_repcat.generate_replication_support('test','user_state','table');   激活复制   exec dbms_repcat.resume_master_activity('async_rg');   注册冲突检测的表状态   exec dbms_repcat.register_statistics(sname =>'test',oname =>'user_state');   ORCL   SQL> update test.user_state set num=100 where id=20;   GC   SQL> update test.user_state set num=80 where id=20;   ORCL   commit;   GC   commit;   ORCL   exec dbms_job.run(141);   SQL> select * from test.user_state where id=20;         ID        NUM STATE
---------- ---------- --------------------
        20        100 normal
  GC   SQL> select * from test.user_state where id=20;         ID        NUM STATE
---------- ---------- --------------------
        20        100 normal
  select * from dba_represolution_statistics查看冲突发生的时间和解决方式     TimeStamp   为表增加timestamp的column   exec dbms_repcat.alter_master_repobject(sname =>'test',oname =>'user_state',type =>'table',ddl_text =>'ALTER TABLE TEST.USER_STATE ADD (time  DATE)');   应用复制到其他站点   exec dbms_repcat.generate_replication_support('test','user_state','table');   调整column_group和dbms_repcat.add_update_resolution   exec dbms_repcat.drop_update_resolution(sname =>'test',oname =>'user_state',column_group =>'cg',sequence_no =>1);
exec dbms_repcat.drop_column_group(sname =>'test',oname =>'user_state',column_group =>'cg');
  exec dbms_repcat.make_column_group(sname =>'test',oname =>'user_state',column_group =>'cg',list_of_column_names =>'id,num,state,time');
exec dbms_repcat.add_update_resolution(sname =>'test',oname =>'user_state',column_group =>'cg',sequence_no =>1,method =>'MAXIMUM',parameter_column_name =>'time');
  应用复制到其他站点   exec dbms_repcat.generate_replication_support('test','user_state','table');   激活复制组   exec dbms_repcat.resume_master_activity('async_rg');   ORCL   SQL> update test.user_state set num=100,time=sysdate where id=20; 1 row updated.   SQL> commit; Commit complete.   GC   SQL> update test.user_state set num=80,time=sysdate where id=20; 1 row updated.   SQL> commit; Commit complete.   ORCL   exec dbms_job.run(141);   SQL> select * from test.user_state;         ID        NUM STATE                TIME
---------- ---------- -------------------- -------------------
        20        100 normal               2010-06-29 23:10:55
  GC   SQL> select * from test.user_state;         ID        NUM STATE                TIME
---------- ---------- -------------------- -------------------
        20        100 normal               2010-06-29 23:10:55
  select * from dba_represolution_statistics; --查看冲突状态   Uniqueness   增加uniqueness冲突规则   exec dbms_repcat.ADD_UNIQUE_RESOLUTION(sname =>'test',oname =>'user_state',constraint_name =>'user_states_pk',sequence_no =>1,method =>'discard',parameter_column_name =>'num');   应用复制到其他站点   exec dbms_repcat.generate_replication_support('test','user_state','table');   激活复制组   exec dbms_repcat.resume_master_activity('async_rg');   查看现有冲突规则   select * from dba_represolution;   ORCL   SQL> insert into test.user_state values(100,100,'normal',sysdate); 1 row created.   SQL> commit; Commit complete.   GC   SQL> insert into test.user_state values(100,20,'normal',sysdate); 1 row created.   SQL> commit; Commit complete.   ORCL   exec dbms_job.run(141);   SQL> select * from test.user_state where id=100;         ID        NUM STATE                TIME
---------- ---------- -------------------- -------------------
       100        100 normal               2010-06-29 23:29:44
  GC   SQL> select * from test.user_state where id=100;         ID        NUM STATE                TIME
---------- ---------- -------------------- -------------------
       100         20 normal               2010-06-29 23:15:05
  select * from dba_represolution; --表上现有的冲突规则   select * from dba_represolution_statistics; --冲突的状态    
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载