0

进度版本 10c。

假设我有两个不同的应用服务器,让我们调用一个 X 和另一个 Y,每个都指向不同的数据库实例。

如果我有一个在 X 上运行的 .p 进程并使用(锁定)X.db 上的一些记录,并且在其中我调用 appserver Y 上的一个进程,以便操作 Y.db 上的记录...在失败的情况下获得正确的“行为”?

IE

  • Y 进程失败,X 进程可以检测到它并回滚(单独或通过在代码本身中强制它。
  • X 进程在成功调用 Y 进程后失败,Y 回滚任何更改。
  • Y 提交后 X 提交:两者都更新了各自的数据并释放了所有锁

即使这项工作有效,我是否应该注意任何具体的警告?性能呢?

4

1 回答 1

0

两个进程之间没有事务状态的自动链接。应用服务器只是另一个会话——它与另一个用户没有什么不同。这两个会话恰好在它们之间有一个通信通道,但没有 TRX 状态协调。

在场景 1 中,如果应用服务器调用失败,它会返回错误代码。然后父进程可以通过代码决定它想要做什么。但并不是所有的 TRX 失败都会返回给调用者(想想“kill -9”......)并且应用程序驱动的错误逻辑可能有错误。

在场景 2 中,Y 将独立于 X 提交。不会发生回滚。

我看不出场景 3 与场景 2 有什么不同。如果其中一个是异步调用,它仍然无关紧要,事务仍然彼此不同。

于 2012-12-19T19:17:43.380 回答