10

如果我以 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) 的更新和对远程数据库表 (bob.other_table) 的插入都已提交,或者仅对本地表的更新已提交?

注意:'mylink' 代表一个到远程数据库的 dblink。

4

2 回答 2

9

文档

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

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

于 2012-03-06T11:39:16.077 回答
6

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

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

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

于 2012-03-06T11:31:17.627 回答