前言:
是因为个很奇葩的需求,因为新开发的功能还没有上线,需要临时做个老库和新库数据同步的功能,因为老程序跑着一版.net的,用的sqlserver2008数据库,新库用的oracle,新版程序没有上线,数据就想展示在线上,因此,要做个老库和新库的同步程序。
老库sqlserver 是2008,新库oracle是12c
用到了sqlserver2008的“链接服务器”功能,以此来做dblink,我在网上找了很久很久,实在是找不到可用的资料,链接上了远程数据库还是会有数据库无法访问oracle的分布式事务的错误,很难受,最后是无意中了解到Oracle的分布式事务是一个ODAC的包,oracle装在linux上,linux上可没有什么MSDTC,MSDTC配置也是sqlserver链接sqlserver的。
话不多说,走起
无法执行远程事务的错误如下图
由图可知,如果是不正确的方法链接了oracle数据库,即使可以查询数据,也会在需要执行事务的时候出现这个问题,又怎么实现同步数据呢?
还有一个奇怪的问题,在sql界面是可以执行事务的,在触发器中却不可以,那怎么行,就是得用触发器呢。
正确的步骤如下
首先,在