Heim >Datenbank >MySQL-Tutorial >关于Oracle Rac数据不同步

关于Oracle Rac数据不同步

WBOY
WBOYOriginal
2016-06-07 15:12:591275Durchsuche

欢迎进入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 Lamport Scheme能够适应绝大部分应用的要求,只有个别实时性特别高的业务,才需要Broadcast on Commit scheme。通过分析,不难理解,Broadcast on Commit scheme将需要更多的系统资源


 

关于Oracle Rac数据不同步

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn