oracle GoldenGate系列:(五)关于GoldenGate附加日志的理解

几个月之前写了几篇关于OGG的文章,但是由于各种原因停了下来。现在将之前的再笔记整理一遍,继续写下去。
今天这篇文章写的主要是 GoldenGate中附加日志的作用,而不是单纯地写附加日志本身的功能。
在前面部署OGG的过程中,我们需要打开附加日志。那么附加日志是什么呢?使用OGG的时候为什么需要打开附加日志?
一、 OGG需要打开附加日志的 原因
GoldenGate实现主备库的复制是不是单纯的基于SQL的复制,而是基于逻辑变化复制(LCR)的复制。
         而要实现这种逻辑上的复制ORACLE需要打开附加日志,记录额外需要的信息。
二、附加日志
附加日志(supplemental log)可以指示数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,如逻辑standby、GoldenGate、LogMiner等等。可以在数据库和表上设置。
  附加日志 分别有 最小附加日志(minimal supplemental logging)和 标识键日志(identification key logging)两种。
GoldenGate在部署时明确要求打开的是 最小附加日志。而 最小附加日志 可以确保LogMiner(或其他任何基于LogMiner的产品)可以支持行链接、簇表、索引组织表等。
三、表级附加日志
除此之外,在复制过程中还要求添加表级附加日志。即添加trandata
添加表级附加日志的过程是这样的:如果有主键则只加入主键;无主键添加唯一索引;两者皆无,则添加所有列。
而将主键或唯一索引添加入附加日志,是因为主备库的需要,原因如下:
主库的数据改变了,GoldenGate又不是基于SQL的复制,想要改变备库的数据,就要对主备库建立映射关系。而每张表的主键或者唯一键就是很好选择。为什么呢。因为只要把主备库的表先对应起来,然后再通过主键或者唯一键映射,主键或者唯一键都是唯一的,所以主库上修改了一行数据。备库上自然有一行数据与其对应。
比如:当我们执行这个语句的时候,trail文件至少有以下信息
          update dept set dname='Personnel' where dname='RESEARCH';

 镜像 
deptno 
DNAME 
   table
后镜像    
20 Personnel 
emp.dept

trail文件中会写入上述后镜像的一些信息,从库在通过这些信息修改备库数据。
ps:也有一些其他的数据库通过记录rowid方式实现,但这种方法有明显的弊端。
四、开启附加日志需要注意的有:
1.对于无主键和唯一键的表,虽然可以以所有列作为基准代替,但是这种表会产生大量的日志量和回滚段的开销。
2.在添加附加日志时。有时候Lock会导致无法打开表的附加日志;
3.添加过程中如果一个表报错未加成功,后面就不执行,后面的表全部未增加附加日志;
这里只是列举了部分,其他的还需要自己发现或在生产中总结

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

转载于:http://blog.itpub.net/31386161/viewspace-2134730/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值