ITPub博客

首页 > 数据库 > 数据库开发技术 > 关于高级复制的一些数据同步

关于高级复制的一些数据同步

原创 数据库开发技术 作者:hljhrbsjf 时间:2006-02-20 22:21:11 0 删除 编辑
果你原来两个数据库的表里数据不一致,你用dbms_repcat.add_master_database加表的时候用了:copy_rows=>false, oracle不会帮你做同步,因为你指明了说“不需要复制数据,我保证数据是一致”。这样你永远别想靠replication把数据同步。
你要么设置copy_rows=>ture,这样oracle会把远程表清空,做数据同步。
要么在用dbms_repcat.add_master_database就手工把数据搞成一致,再用copy_rows=>false把表加入replication group. 一般数据比较多都应该这么做。

大致上你可以:
suspend replication group:
BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (gname => 'xxx');
END;
/

begin
DBMS_REPCAT.DROP_MASTER_REPOBJECT (
sname=>'SCOTT',
oname=>'DEPT',
type=>'TABLE');
end;
/

add the object again:
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT(
gname => '"xxx"',
type => 'TABLE',
oname => '"DEPT"',
sname => '"SCOTT"',
copy_rows => TRUE,
use_existing_object => TRUE);
END;
/

gerenate support:
BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'SCOTT',
oname => 'SCOTT',
type => 'TABLE',
min_communication => TRUE,
generate_80_compatible => FALSE);
END;
/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (gname => 'xxx');
END;
/

反正个别参数你看文档自己定吧。
5,
2,你的两个replication group应该没什么关联吧,保证你要用的那个是normal就可以了。看看dept被加到那个group了:
select gname from dba_repobject where oname='DEPT' and sname='SCOTT';
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/631872/viewspace-816078/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    115
  • 访问量
    527039