Oracle RAC 中是否保证事务提交顺序?

Are transactions commited order guaranteed in Oracle RAC?

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

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

是的,他们是。

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

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