關於高階複製的一些資料同步

hljhrbsjf發表於2006-02-20
果你原來兩個資料庫的表裡資料不一致,你用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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章