日期:2014-05-16  浏览次数:23272 次

oracle存储过程中使用DBLINK
最近遇到一问题,在oracle存储过程中使用DBLINK时,会报这个错:

ORA-02046:分布式事务处理已经开始
ORA-02063:preceding line from SZDW

SZDW为DBLINK名称。

用完DBLINK后已关闭SESSION

ALTER SESSION COLSE DATABASE LINK SZDW;

而且在用DBLINK前已经预先进行了一步异常处理用来关闭SESSION。

但是偶尔还是会报上面的错误,而且有时会报,有时不会报。

请高手指点,如何解决上述问题。

------解决方案--------------------
不要在远程调用的存储过程或者包中使用事务控制语句。因为远程调用的包执行时没有机制执行2-phase commit.