【问题标题】:oracle - commit over dblink?oracle - 通过 dblink 提交?
【发布时间】:2012-03-23 20:07:25
【问题描述】:

如果我以 smith 用户身份连接到 oracle 数据库,并发出以下 3 个命令:

update smith.tablea
set col_name = 'florence' where col_id = 8;

insert into bob.other_table@mylink
values ('blah',2,'uncle','new');

commit;

这是否意味着本地表 (smith.tablea) 的更新和远程 db 表 (bob.other_table) 的插入都已提交,或者仅本地表的更新已提交?

注意:'mylink' 表示到远程数据库的 dblink。

【问题讨论】:

  • 您是否在另一个会话中检查过bob.other_table@mylink 以检查数据是否存在或没有工作?

标签: sql database oracle commit dblink


【解决方案1】:

在这种情况下,只有在远程事务和本地事务都成功的情况下,事务才能工作。

关于分布式事务的更多信息:

http://docs.oracle.com/cd/B19306_01/server.102/b14231/ds_txnman.htm

【讨论】:

    【解决方案2】:

    来自documentation

    Oracle 两阶段提交机制是完全透明的 发布分布式事务的用户。事实上,用户甚至不需要 知道事务是分布式的。 COMMIT 语句表示 事务结束自动触发两阶段提交 提交事务的机制。没有编码或复杂的语句 语法需要在正文中包含分布式事务 数据库应用程序。

    所以 - 是的,如果一切顺利,两个操作都会提交。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      相关资源
      最近更新 更多