OGG错误只能insert,update 无效果

今天做了一个实验:
环境:11G ogg  linux OT O
同步一张表数据:
源表 tab 目标表 tab 结构定义相同
在源库创建表:
create table tab (sn varchar2(2),sex char(1),mon date);
在目标库创建表:
create table tab (sn varchar2(2),sex char(1),mon date);
在源库加入同步进程我的架构为 源库一个抽取进程,一个推送进程,目标库一个复制进程
所以源库修改两个参数文件 一个抽取进程参数文件,一个推送进程参数文件,目标库只有一个复制进程只修改一个参数文件
源抽取进程参数文件
OGG错误只能insert,update 无效果_第1张图片
源推送进程参数文件
OGG错误只能insert,update 无效果_第2张图片
目标端复制进程参数文件
OGG错误只能insert,update 无效果_第3张图片
加入tab 表之后启动进程
GGSCI (OGG1) 32>start ggex
GGSCI (OGG1) 32>start ggpump
GGSCI (OGG2) 32>start replgg
向源端tab 表插入数据
insert into tab values('gf','m',sysdate);
insert into tab values('wf','m',sysdate);
insert into tab values('zf','m',sysdate);
insert into tab values('cf','m',sysdate);
insert into tab values('xf','m',sysdate);
insert into tab values('nf','m',sysdate);
insert into tab values('qf','m',sysdate);
commit;
目标端select * from tab;
OGG错误只能insert,update 无效果_第4张图片
数据已经同步过来
在源端做update
update tab set sex='f';
commit;
目标端查询 
OGG错误只能insert,update 无效果_第5张图片没有发生改变
在此发现 insert 能够同步但是update 不能同步。
在源端  GGSCI (OGG1) 32>info trandata *
Logging of supplemental redo log data is enabled for table GG.SEND.
Columns supplementally logged for table GG.SEND: ID.
Logging of supplemental redo log data is disabled for table GG.TAB.
Logging of supplemental redo log data is enabled for table GG.TGT.
Columns supplementally logged for table GG.TGT: NAME.
在目标端 GGSCI (OGG2) 32>info trandata *
Logging of supplemental redo log data is enabled for table REGG.RECEIVE.
Columns supplementally logged for table REGG.RECEIVE: ID.
Logging of supplemental redo log data is disabled for table REGG.TAB.
Logging of supplemental redo log data is enabled for table REGG.TGT.
Columns supplementally logged for table REGG.TGT: NAME.
 supplemental log 没有开
源端:GGSCI (OGG1) 32>add trandata gg.tab
目标端:GGSCI (OGG2) 32>add trandata regg.tab
再次在源端
update tab set sex='f';
commit;

目标端查询:select * from tab;
OGG错误只能insert,update 无效果_第6张图片
同步更新。
——————————————————————————分割线---------------------------------------------------------------------------------
 supplemental log:转一篇
关于Oracle补全日志补充说明
Oracle日志(redo log)一般用于实例恢复和介质恢复,但是如果需要靠日志还原完整的DML操作信息(比如Logmnr、Streams和这里的Goldengate),默认记录的日志量还不够。比如一个UPDATE的操作,默认redo只记录了rowid以及被修改的字段信息,但这里GoldenGate还原这个事务,因为不是根据rowid而是SQL层面根据唯一键值来定位记录,所以还需要将主键或者其他字段的信息附加到日志中去。要往日志中增加这些额外字段信息的操作,就是开启补全日志,即Add Supplemental Logging。打开补全日志,会使数据库的日志量增加,所以只打开需要的级别和对象即可。
Oracle补全日志可以在数据库级别设置,也可以在表级别设置。在数据库级别中,补全日志按补全的信息量,对应好几个级别:
(1)        最小附加日志(Minimal supplemental logging):是开启logmnr的最低日志要求,提供了行链接(chained rows)和多种数据存储(比如聚簇表、索引组织表)的信息。在Oracle 9.2之后的版本中,默认都不开启。
(2)        主键补全(Primary key supplemental logging):在日志中补全所有主键列。如果表中无主键,则补全一个非空唯一索引列;如果非空唯一索引键也没,那么会补全除了LOB和LONG类型字段以外的所有列,这时就和下面的所有补全一样了。
(3)        唯一键补全(Unique key supplemental logging):当唯一键列或位图索引列被修改时,在日志中补全所有唯一键列或位图索引列。打开唯一键补全也会同时打开主键补全。注意这个级别是需要条件触发的。
(4)        外键补全(Foreign Key supplemental logging):当外键列被修改时,将在日志中补全所有外键列。这个级别也是需要条件触发的。
(5)        所有补全(All supplemental logging):在日志中补全所有字段(排除LOB和LONG类型)。
这里对于补全日志的详细操作语句不做一一说明。
数据库级别中的5个类型中,除了最小附加日志级别,都可以在表级进行设置。除此之外,表级还可以明确指定需要补全的列。
Oracle表级补全日志需要在最小补全日志打开的情况下才起作用,即若一个数据库没有开最小补全日志或之前drop supplemental log data操作则即便指定了表级补全日志,实际在重做日志输出的过程中描述的记录仍只记录rowid和相关列值。而要关闭最小补全日志,也必须首先关闭数据库级别的其他补全级别后,才能关闭。 
以上部分内容参考自《Oracle 10gR2 Utilities》Supplemental Logging部分

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

转载于:http://blog.itpub.net/26764973/viewspace-1181152/

你可能感兴趣的:(OGG错误只能insert,update 无效果)