天天看點

Goldengate添加字段等操作同步實驗

最近實驗goldengate同步過程,遇到一些異常現象,出現了一些不能同步的情況。

可能是剛接觸goldengate對其用法還不是很深入,也有可能就是goldengate的一些局限性,這還再深入研究。下面部署gg環境中沒有使用DDL同步。(部署方法參照上一篇:Oracle goldengate Windows平台oracle-oracle單向複制)

源和目标的GG版本:OGGCORE_11.1.1.1.2_PLATFORMS_111004.2100

下面是實驗記錄結果:

SQL> desc dept

Name   Type         Nullable Default Comments

------ ------------ -------- ------- --------

DEPTNO NUMBER(2)                             

DNAME  VARCHAR2(14) Y                        

LOC    VARCHAR2(13) Y                        

實驗1.添加字段

--在source,target分别修改表結構

Alter Table dept

Add  col Varchar2(10) Default 'a'

--在source修改兩個字段,一個是舊字段,一個是新加的字段

SQL> Select * From dept;

DEPTNO DNAME          LOC           COL

------ -------------- ------------- ----------

    10 ACCOUNTING     NEW YORK      a

    20 RESEARCH       DALLAS        a

    30 SALES          CHICAGO       a

    40 OPERATIONS     BOSTON        a

    12 ticke          licz          a

--更新源資料

SQL> Update dept

   Set dname='database',col='c'

   Where deptno=11;

SQL> Commit;

SQL> Select * From dept;

DEPTNO DNAME          LOC           COL

------ -------------- ------------- ----------

    10 ACCOUNTING     NEW YORK      a

    20 RESEARCH       DALLAS        a

    30 SALES          CHICAGO       a

    40 OPERATIONS     BOSTON        a

    12 database       licz          c

--在目标端檢查同步

SQL> Select * From dept;

DEPTNO DNAME          LOC           COL

------ -------------- ------------- ----------

    10 ACCOUNTING     NEW YORK      a

    20 RESEARCH       DALLAS        a

    30 SALES          CHICAGO       a

    40 OPERATIONS     BOSTON        a

    12 database       licz          a

--在源insert資料

Insert Into dept

Select 13,'hotel','licz','a' From dual;

Commit;

SQL> Select * From dept;

DEPTNO DNAME          LOC           COL

------ -------------- ------------- ----------

    10 ACCOUNTING     NEW YORK      a

    20 RESEARCH       DALLAS        a

    30 SALES          CHICAGO       a

    40 OPERATIONS     BOSTON        a

    12 database       licz          c

    13 hotel          licz          a

--在目标端檢查同步

SQL> Select * From dept;

DEPTNO DNAME          LOC           COL

------ -------------- ------------- ----------

    10 ACCOUNTING     NEW YORK      a

    20 RESEARCH       DALLAS        a

    30 SALES          CHICAGO       a

    40 OPERATIONS     BOSTON        a

    12 database       licz          c

    13 hotel          licz          a

--同樣實驗delete操作同步情況,也是正常的。

結論:在對表添加字段時後,在源表新字段上的update操作不能同步,insert,delete操作同步正常。而且在源表執行delete trandata和add trandata操作(實驗步驟省略)仍不能進行update操作的同步。

實驗2.主備字段修改預設值:source,target

--修改源和目标表的預設值後,DML操作同步正常

Alter Table dept

Modify  col Varchar2(10) Default 'b';

實驗3.修改主鍵(原主鍵和新主鍵名相同):source,target

--修改主鍵,DML操作同步正常

alter table EMP

Drop constraint PK_EMP;

alter table EMP

add constraint PK_EMP primary key (EMPNO,ename);

實驗4.異構表構同步

當是使用不同表名,不相同表結構,但是表對應的字段類型相同時,源的insert,delete操作能夠同步,而update操作則不能同步,如下表結構

源表:

create table region

( region number(3) primary key,

name varchar2(32)

);

目标表:

create table areacode

 ( code number(3) primary key,

  name varchar2(32)

);

繼續閱讀