oracle - 提交dblink?

too*_*oop 6 sql database oracle dblink commit

如果我以用户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;
Run Code Online (Sandbox Code Playgroud)

这是否意味着对本地表(smith.tablea)的更新和对远程数据库表(bob.other_table)的插入都已提交或仅提交了对本地表的更新?

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

Mar*_*ski 6

文档

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

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


Egg*_*ggi 5

在这种情况下,只有远程事务和本地事务成功时,事务才有效.

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

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