调试pl sql代码我有一个奇怪的情况。
我设置sql developer来监听调试连接。在java代码中,我使用以下代码附加调试器:
CallableStatement cstmt = null;
try {
cstmt = getConnection().prepareCall("begin DBMS_DEBUG_JDWP.CONNECT_TCP( '10.1.1.17', 4000); end;");
cstmt.execute();
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeStatement(cstmt);
}
调试器连接成功,即我可以在Run Manager
中的sql developer中看到该连接存在。
尽管创建了连接,但调试器无效。有时断点不会带有绿色标记,有时它们是,但断点仍然不起作用。在任何情况下,调试器都不会在中断时停止,调用成功执行的过程就好像没有中断一样。
我将放置中断的包编译为调试,Start Debugger Option
设置为Step Over
。我也尝试Sql Developer
3.2.2和3.0.6,3.0.4具有相同的行为。我从'Sql Developer'和应用程序使用的用户是相同的,并且该用户具有调试权限(DEBUG CONNECT SESSION
,DEBUG ANY PROCEDURE
)。我没有想法如何让它发挥作用。
接下来要尝试什么,如何诊断这个问题?
答案 0 :(得分:1)
我发现了root问题。它不是关于oracle,而是关于应用服务器和数据库的连接。我在一个bean中附加调试器并在其他bean中调用plsql过程。因为他们在同一个交易中,我认为应该共享连接,但事实并非如此。所以我只是将调试器附件移动到调用过程的bean,现在它可以正常工作。