Oracle读取一致性

原文地址:Managing Read Consistency
oracle版本:11g r1
 
Oracle分布式数据库中的一个重要限制就是读取一致性。问题产生的原因是因为每个系统都有自己的SCN,SCN可以当作数据库的内部时间戳。Oracle数据库服务通过SCN来明确查询数据的版本号。
 
分布式事务中的SCN在三种情况进行同步:1、每个SQL语句执行结束时;2、每个事务的开始时;3、每个食物结束时。节点间如果有大量通信尤其是分布式更新操作,这个同步的动作会非常频繁。尽管有这样那样的问题,在分布式系统中实际上没有任何方式能保证SCN的绝对同步:总会存在这样的情况,一个节点持有的SCN是另外一个节点之前的SCN。
 
因为SCN获取机制,你可以查询一个略微旧的快照数据,因此无法立刻看到远程数据库的最新变化。根据读取一致性,查询可以得到一致并且旧的数据。注意,查询所得到的数据是基于旧的SCN,因此如果本地执行更新事务并更新远程节点的两个表后,下次访问这两张表时会得到更新前的数据。
 
SCN获取机制的一个结果就是2个连续的 select 语句能够得到不同的数据,甚至在2个语句之间没有DML执行。例如,你执行更新语句然后向远程数据库提交该更新。当你用 select 语句查询视图(基于该远程表),视图不回显示更新的列。下一次执行 select 语句时,这个更新出现。
 
你可以使用下列条件来确定在查询前两个机器的SCN是同步的:
 

公司主营业务:网站制作、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出梅江免费做网站回馈大家。

  • 因为SCN是在远程查询后完成同步,会在每个远程查询之前都有一个虚拟的远程查询,例如, select * from dual@remote 。
  • 因为SCN会在每个远程事务的开始、提交、回滚当前事务时进行同步,在远程查询之前。

网站标题:Oracle读取一致性
网址分享:http://scyanting.com/article/psoepe.html