关于高级复制的一些数据同步
【IT168 技术文档】
如果你原来两个数据库的表里数据不一致,你用dbms_repcat.add_master_database加表的时候用了:copy_rows=>false, oracle不会帮你做同步,因为你指明了说“不需要复制数据,我保证数据是一致”。这样你永远别想靠replication把数据同步。
你要么设置copy_rows=>ture,这样oracle会把远程表清空,做数据同步。
要么在用dbms_repcat.add_master_database就手工把数据搞成一致,再用copy_rows=>false把表加入replication group. 一般数据比较多都应该这么做。
大致上你可以:
你要么设置copy_rows=>ture,这样oracle会把远程表清空,做数据同步。
要么在用dbms_repcat.add_master_database就手工把数据搞成一致,再用copy_rows=>false把表加入replication group. 一般数据比较多都应该这么做。
大致上你可以:
你的两个replication group应该没什么关联,保证你要用的那个是normal就可以了。看看dept被加到那个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;
/
select gname from dba_repobject where oname='DEPT' and sname='SCOTT';
0
相关文章
