原文地址: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是同步的:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。