Chinaunix首页 | 论坛 | 博客
  • 博客访问: 112271
  • 博文数量: 36
  • 博客积分: 2260
  • 博客等级: 大尉
  • 技术积分: 400
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-27 22:49
文章分类

全部博文(36)

文章存档

2011年(10)

2010年(26)

我的朋友

分类: Oracle

2010-06-15 18:56:55

master replication双向复制表数据不同步的解决
 
masterdef(GC)
 
SQL> select count(*) from test.am_cntgds;
  COUNT(*)
----------
         3
 
master(ORCL)
 
SQL> select count(*) from test.am_cntgds;
  COUNT(*)
----------
         0
 
DBMS_RECTIFIER_DIFF
 
The DBMS_RECTIFIER_DIFF package contains APIs used to detect and resolve data inconsistencies between two replicated sites.
 
masterdef(GC)
 
建立存放差异数据的missing_rows表
 
SQL> create table test.missing_rows as select * from test.am_cntgds where 1=0;
 
建立存放差异rowid的missing_location表
 
SQL> create table test.missing_location(present varchar(128),absent varchar(128),r_id rowid);
 
比较产生差异数据
 
SQL> exec dbms_rectifier_diff.differences(sname1 =>'test',oname1 =>'am_cntgds',reference_site =>'gc.lab.com',sname2 =>'test',oname2 =>'am_cntgds',comparison_site =>'orcl.lab.com',missing_rows_sname =>'test',missing_rows_oname1 =>'missing_rows',missing_rows_oname2 =>'missing_location',missing_rows_site =>'gc.lab.com',max_missing =>500,commit_rows =>100);
 
SQL> select count(*) from test.missing_rows;
  COUNT(*)
----------
         3
 
使用dbms_rectifier_diff.rectify进行数据整合
 
第一个表存在的数据,在第二个表不存在的,将会被插入到第二个表
 
第二个表存在的数据,在第一个表不存在的,将会在第二个表删除
 
SQL> exec dbms_rectifier_diff.rectify(sname1 =>'test',oname1 =>'am_cntgds',reference_site =>'gc.lab.com',sname2 =>'test',oname2 =>'am_cntgds',comparison_site =>'orcl.lab.com',missing_rows_sname =>'test',missing_rows_oname1 =>'missing_rows',missing_rows_oname2 =>'missing_location',missing_rows_site =>'gc.lab.com',commit_rows =>100);
 
SQL> select count(*) from test.missing_rows;
  COUNT(*)
----------
         0

 

 

阅读(437) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~