【问题标题】:Are transactions commited order guaranteed in Oracle RAC?Oracle RAC 中是否保证事务提交顺序?
【发布时间】:2017-02-02 19:01:45
【问题描述】:

我有很多小额交易。我使用 Oracle RAC 中的 XA JDBC 驱动程序以某种顺序逐一执行它们。是否保证它们按照我调用它们的相同顺序提交?

更新: 一切都发生在一个数据库会话中。

【问题讨论】:

  • 您说的是在单个数据库会话中发生的许多事务吗?还是同时运行多个会话? “我给他们打电话的顺序”是什么?如果我们谈论多个会议,您将必须非常、非常具体。根据您的代码发出提交的应用服务器上的时间戳进行排序将与在 Oracle 端测量某些内容大不相同。
  • 一切都发生在一个数据库会话中。
  • 真正的问题是:为什么交易的顺序很重要?为什么你认为这很重要?
  • 有一种叫做“Lamport 时间戳”的东西。阅读它。你到底有什么问题?

标签: database oracle jdbc transactions oracle-rac


【解决方案1】:

是的,他们是。

在 RAC 或非 RAC 环境中,当您成功执行提交时,这意味着已保证将数据库更改记录在磁盘上(在 REDO 日志中)。当日志写入器写入重做日志时,它会增加 RAC 中所有实例的全局 SCN(系统更改编号)。如果你有足够的权限,可以通过查询select current_scn from v$database;查看数据库当前的SCN。

commit 有一些非默认选项,它不一定要等到重做日志写入完成才返回成功。如果您使用它们,那么可能多个事务可以在同一个 SCN 中进行批处理。这将允许在为批处理发布一个 SCN 之前,在不同的实例上提交一个 SCN。避免这些选项,你会没事的。

【讨论】:

    猜你喜欢
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2011-06-22
    • 2020-05-28
    • 2017-02-01
    • 2015-09-16
    • 2019-08-25
    相关资源
    最近更新 更多