Mark Harrison Asked: 2016-01-05 15:34:36 +0800 CST2016-01-05 15:34:36 +0800 CST 2016-01-05 15:34:36 +0800 CST Oracle RAC:两个事务可以共享一个SCN吗? 772 在什么情况下(如果有的话)两个交易可以共享一个 SCN? 换句话说,是否可以保证如果多个 DML 语句共享一个 SCN,它们一定是同一事务的一部分? oracle rac 1 个回答 Voted Best Answer Justin Cave 2016-01-05T16:45:36+08:002016-01-05T16:45:36+08:00 除非 Oracle 中存在错误,否则两个事务不会共享 SCN。 Oracle 如何确保这一点因版本、平台和配置设置而异。例如,在 Oracle 9.2 时代,默认情况下有一个非零值max_commit_propagation_delay,这意味着在一个节点上插入并提交的行可能不会立即对另一个节点上的查询可见。在该配置中,Oracle 可以使用Lamport SCN 生成算法,其中 SCN 是并行生成的,无需节点间通信。在 10.1 及更高版本中,使用广播提交策略(链接是来自 Julian Dyke 的 PPT 演示文稿,它非常好,但可能比您预期的要大)并max_commit_propagation_delay默认为 0(不知道如果您使用 10.1 和设置一个非默认值max_commit_propagation_delay——这很可能会返回 Lamport)。
除非 Oracle 中存在错误,否则两个事务不会共享 SCN。
Oracle 如何确保这一点因版本、平台和配置设置而异。例如,在 Oracle 9.2 时代,默认情况下有一个非零值
max_commit_propagation_delay
,这意味着在一个节点上插入并提交的行可能不会立即对另一个节点上的查询可见。在该配置中,Oracle 可以使用Lamport SCN 生成算法,其中 SCN 是并行生成的,无需节点间通信。在 10.1 及更高版本中,使用广播提交策略(链接是来自 Julian Dyke 的 PPT 演示文稿,它非常好,但可能比您预期的要大)并max_commit_propagation_delay
默认为 0(不知道如果您使用 10.1 和设置一个非默认值max_commit_propagation_delay
——这很可能会返回 Lamport)。