跨数据库事务管控机制该如何处理,求具体思路
现在想实现跨数据库的事务:
比如:在本地(Oracle)插入一条用户信息,同时远程SQLSERVER数据库中删除一条数据(主键相同),保证两个操作在一个事务中完成.
说明一点:本地的数据库和远程的数据库的库结构是完全一样的.
大家谁有这方面的经验,多多指导!!!
[解决办法]
1、建立db_link;
2、建议用存储过程来实现插入操作(存储过程中用事务);
3、前台程序再调用存储过程。
[解决办法]
在所有需要用到事务的地方都显式定义being tran 然后显示commit/rollback,或者使用xact_abort选项来保证事务的逻辑一致性
[解决办法]
MSSQL服务器这边,MSDTC服务需启动.
[解决办法]
类似这样的代码,就可以实现分布式是事务:
分布式事务
Oracle 有很多很好的特性,其中之一就是能够透明地处理分布式事务。在一个事务的范围内,可以
更新多个不同数据库中的数据。提交时,要么提交所有实例中的更新,要么一个都不提交(它们都会回滚)。
为此,我不需要另外编写任何代码:只是“提交“就行了。
Oracle 中分布式事务的关键是数据库链接(database link)。
--建立database link
CREATE PUBLIC DATABASE LINK hisdb
CONNECT TO easyrep IDENTIFIED BY easyrep
USING 'repdb';
--插入远程数据库表记录
insert into table sss@hisdb values( ... );
--删除本地数据库表记录
delete from sss where id= ... ;