oracle的rac没有同步序列,关于Oracle Rac数据不同步

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 现在有这样的环境: 一台web Server,一个是纯JAVA APP 程序 数据库两台做成RAC的形式。 web Server与APP 程序都通过oci(rac)的方式连接 数据库。 出了这样的怪问题,webServer更新或是插图入一条数

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

现在有这样的环境:

一台web Server,一个是纯JAVA APP 程序

数据库两台做成RAC的形式。 web Server与APP 程序都通过oci(rac)的方式连接

数据库。

出了这样的怪问题,webServer更新或是插图入一条数据,后面紧跟着的在APP中就查询不到,等到用工具查询就没有问题.

初步怀疑

1. RAC方式下面的数据库两个instance的同步没做好?

查询相关资料发现在与MAX_COMMIT_PROPAGATION_DELAY有关.

最大提交传播时延(MAX_COMMIT_PROPAGATION_DELAY,简称MCPD),在ORACLE RAC(或OPS)环境中才使用,表示在RAC系统中,一个instance系统提交产生的最新系统改变码(SCN),能够以多快的速度反应到另一个instance中。

举例说明,RAC系统,有A,B两个实例(instance),A、B本地系统改变码为SCN1,A更新数据DATA1提交, LGWR操作完成后,A本地系统改变码为SCN2,经过不大于MAX_COMMIT_PROPAGATION_DELAY时间后,B系统本地改变码才变为SCN2。

Global Cache Services 将刷新RAC中的SCN。不管SCN是否及时刷新,后续的数据查询都不会因此产生数据库错误。但,在此时间内,有可能查询结果不是最新数据,产生读一致性(read consistency)问题。

RAC环境中的所有实例,此参数值必须相同。

ORACLE8i后,建议常用的两个值是0和700(默认),其他数值皆不建议。其实,这两个数值就代表了RAC环境中,两种SCN 产生机制:

Lamport Scheme和 Broadcast on Commit scheme。

设置为默认值700,表示采用Lamport Scheme,SCN改变不会完全同步,同步将在 7秒钟内完成,而不是总等待7秒钟后才完成。如果系统比较空闲,同步可能在0.5秒(甚至更短时间)内完成;不管系统多繁忙,同步时间也不可能超过7秒。不难理解,采用此模式,整个RAC系统的运行效率较高。

设置为0,表示采用Broadcast on Commit scheme,SCN改变完全同步。每当commit时(即LGWR 写redo log时):

- LGWR发送消息更新全局SCN(global SCN),

- LGWR 发送消息给每个活动的实例更新其本地SCN(local SCN)。

有资料说,只要MCPD < 700,系统将采用Broadcast on Commit scheme。

Lamport Scheme能够适应绝大部分应用的要求,只有个别实时性特别高的业务,才需要Broadcast on Commit scheme。通过分析,不难理解,Broadcast on Commit scheme将需要更多的系统资源

test.jsp?url=http%3A%2F%2Fwww.chinaitlab.com%2Fcms%2Fimages%2Flogo14.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Foptimize%2F716870.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值