任何人都知道这个错误吗? ORA-02048:尝试在不登录的情况下开始分布式事务 ORA-02063:来自..dblink的前一行
当我从Java调用包含dblinks的PL / SQL包以访问其他数据库以获取插入数据时,就会发生这种情况。 dblink适用于其他子句,但不适用于此包。 如果我从TOAD开始调用这个PL / SQL包,它就可以正常工作。
我正在尝试重现此错误,我发现此错误来自模式: 当我单击使PL运行的按钮时,日志显示错误“找到ora-02292完整性约束子记录”,下次单击该按钮时,出现错误“ORA-02048”,它就像是第一个错误确实失去了与远程数据库的连接。
提前致谢
答案 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。