Goldengate添加字段等操作同步实验
2013-01-06 09:18
197 查看
最近实验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)
);
可能是刚接触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)
);
相关文章推荐
- Oracle Database的基本操作——SELECT语句,添加表主键约束,内置函数,字段串接
- java操作parquet文件,添加字段
- Mysql字段操作—添加字段、删除字段、修改字段名、修改字段类型(约束条件) 、重命名表名
- 模拟一下goldengate中断后,重新同步操作
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 用SQL语句添加删除修改字段等操作
- phpwind 会员添加字段操作过程
- github添加远程库和本地库同步操作
- SQL 查询分析器操作(修改、添加、删除)表及字段等
- 在GridView控件中添加相关的操作字段/操作按钮
- goldengate 重新或者添加同步部分表
- 使用GreenDao 添加字段,删除表,新增表操作
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等,需要的朋友可以参考下。
- django中ManyToManyField字段的添加操作——注意!!
- (超详细)Oracle 10g RAC 添加节点实验操作总结
- 用SQL语句添加删除修改字段和一些其他基本操作------阿冬专栏
- 源表字段修改以后引发GoldenGate同步失败
- veridata实验举例(4)验证veridata查找出updata、delete操作导致的不同步现象
- SQL语句添加、修改、删除字段及一些表与字段的基本操作
- SQL 查询分析器操作(修改、添加、删除)表及字段等