ORA-02048 - 尝试在不登录的情况下开始分布式事务

时间:2014-03-05 00:35:22

标签: sql oracle

任何人都知道这个错误吗? ORA-02048:尝试在不登录的情况下开始分布式事务 ORA-02063:来自..dblink的前一行

当我从Java调用包含dblinks的PL / SQL包以访问其他数据库以获取插入数据时,就会发生这种情况。 dblink适用于其他子句,但不适用于此包。 如果我从TOAD开始调用这个PL / SQL包,它就可以正常工作。

我正在尝试重现此错误,我发现此错误来自模式: 当我单击使PL运行的按钮时,日志显示错误“找到ora-02292完整性约束子记录”,下次单击该按钮时,出现错误“ORA-02048”,它就像是第一个错误确实失去了与远程数据库的连接。

提前致谢

2 个答案:

答案 0 :(得分:0)

没有看到证明问题的最小测试用例,就不可能说了。

However, looking up the error message:
-bash-4.1$ oerr ora 2048
02048, 00000, "attempt to begin distributed transaction without logging on"
// *Cause: client program must issue a distributed transaction login.
// *Action: contact support.

因此,我建议您联系Oracle支持并打开SR。但是,他们可能首先要求的是一个可以证明问题的工作测试案例。

答案 1 :(得分:0)

问题是我有不同的程序,如:

程序1 - > (电话) - >步骤2 - > (电话) - > procedure3

在procedure3中,我与dblink有一个插入到远程表中的句子。

Procedure1捕获过程2和过程3中可能发生的异常。

问题是在procedure3中抛出异常。在这种情况下,放置在procedure1的异常catch中的回滚应该完成事务,但是它没有按预期工作。事务是这种情况保持打开,第二次在程序执行中,oracle向我显示ORA-02048错误。

解决方案是将异常捕获移动到procedure3。