2 Replies Latest reply: Nov 12, 2012 8:14 PM by Dennis Feng RSS

    OGG的MAXTRANSOPS参数=1时的效果是什么?

    957679
      请问,当对ogg的replicat中设置maxtransops 1时,假设源端一个transaction包含6个statements,那么在目标端,因为maxtransops = 1,则 replicat会分6次提交这个transaction吗?
        • 1. Re: OGG的MAXTRANSOPS参数=1时的效果是什么?
          LiuMaclean(刘相兵)
          默认情况下,OGG是严格按照源端产生的交易依次进行提交,本身不改变交易的边界,但是有时候为了避免大交易需要读取大量队列文件以及在目标端数据投递需要大量资源,OGG提供了MAXTRANSOPS参数用于将大交易拆分为较小的交易多次提交,除去性能的提升外还能让管理人员更为实时的看到数据投递的变化。例如:
          MAXTRANSOPS 1000
          表示如果单个交易中的实际数据变化量超过了1千,replicat会每1千条进行一次提交。由于OGG的队列中全部是提交了的交易,使用此参数后只是交易被拆分为了多个依次提交,并不改变数据变化的顺序,所以对一致性并不影响。
          需要注意的是使用MAXTRANSOPS时,如果出现了系统异常如目标数据库宕机,有可能出现Replicat的检查点还处在交易开始点,但实际已经投递到大交易的中间某个点了,这样再次重启会报告一些数据错误。此时可以通过使用reperror default,discard将这些冲突数据写入discard文件,等待追上后再去验证这部分数据在两端是否一致,一般情况下不需要重新初始化。


          @@
          @@
          改造Oracle中文技术生态环境!

          *<font color="red" size="2" face="courier">如果觉得本回复有意义,请点击本条回复右手边的Correct按钮,谢谢!</font>*

          @@
          @@

          如何在OTN中文技术论坛提一个问题?
          论坛礼仪需知及学习oracle的方法论

          @@
          @@
          Maclean Liu
          Oracle Database Administrator
          Oracle Certified 10g/11g Master     
          www.askmaclean.com



          请把需要上传的文件发给我
          有问题请去OTN中文论坛开个帖子 我会回复 地址:http://www.otncn.org
          如果需要发送附件,可以直接发邮件到 liu.maclean@gmail.com
          • 2. Re: OGG的MAXTRANSOPS参数=1时的效果是什么?
            Dennis Feng
            看了刘大的回覆, 也找了一下相关资料, 看到MAXTRANSOPS中有一段叙述:
            MAXTRANSOPS (default 100,000,000) controls the maximum size of a single REPLICAT transaction. A smaller value for MAXTRANSOPS will split large, multiple record transactions into smaller blocks resulting in more commits and checkpointing. The tradeoff here is efficiency and transaction integrity.
            Transactions that were originally committed together as one event may be split into separate transactions with the risk of a momentary mismatch of balances and values.
            最后所谓的"risk of a momentary mismatch of balances and values", 是指因拆分多次提交的过程中, 有user同时查询目标端的资料, 进而导致查询结果笔数不一致的问题嘛? 或是不应如此理解, 还请刘大指点一下.