Java plsql远程调试断点不工作
我在调试pl sql代码时遇到了一个奇怪的情况 我将SQLDeveloper设置为侦听调试连接。在java代码中,我使用以下代码附加调试器:Java plsql远程调试断点不工作,java,oracle,plsql,remote-debugging,oracle-sqldeveloper,Java,Oracle,Plsql,Remote Debugging,Oracle Sqldeveloper,我在调试pl sql代码时遇到了一个奇怪的情况 我将SQLDeveloper设置为侦听调试连接。在java代码中,我使用以下代码附加调试器: CallableStatement cstmt = null; try { cstmt = getConnection().prepareCall("begin DBMS_DEBUG_JDWP.CONNECT_TCP( '10.1.1.17', 4000); end;");
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);
}
调试器成功连接,即我可以在sql developer中的运行管理器中看到连接存在
尽管创建了连接,但调试器不工作。有时断点没有绿色标记,有时是,但断点仍然不起作用。在任何情况下,调试器都不会在中断时停止,即成功执行调用的过程,就好像没有中断一样
我放置中断的包是为调试而编译的,启动调试器选项
设置为单步执行
。我还尝试了sqldeveloper
3.2.2和3.0.6、3.0.4,使用相同的行为。我从“Sql Developer”和从应用程序使用的用户相同,并且该用户具有调试权限(调试连接会话
,调试任何过程
)。我没有办法使它工作
下一步要尝试什么,如何诊断此问题?我发现了根本问题。这不是关于oracle,而是关于应用程序服务器和与数据库的连接。我在一个bean中附加调试器,在另一个bean中调用plsql过程。由于他们在同一个事务中,我认为应该共享连接,但事实并非如此。所以我把调试器附件移到了调用过程的bean上,现在它工作得很好。会话是否打开了PL/SQL调试?ALTER SESSION SET PLSQL_DEBUG=True您在使用RAC吗?如果是这样,您需要连接到一个特定的节点。@Brian,这没有任何效果。我发现了根问题,并将添加一条注释。@jonearles,说得好,但我使用的是同一个节点。我发现了根本问题。这不是关于oracle,而是关于应用程序服务器和与数据库的连接。我在一个bean中附加调试器,在另一个bean中调用plsql过程。由于他们在同一个事务中,我认为应该共享连接,但事实并非如此。所以我只是将调试器附件移到了调用过程的bean上,现在它工作得很好。@michaelnesterenko请将注释移到一个答案:)