2013-05-11 248 views
2

我有一个奇怪的情况与调试pl sql代码。plsql远程调试断点不工作

我设置sql开发人员来侦听调试连接。在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); 
       } 

调试器连接成功,即我可以在SQL Developer中看到Run Manager这方面存在的。

尽管连接创建调试器不起作用。有时候,断点不会打上绿色标记,有时候是断点,但断点仍然不起作用。在任何情况下,调试器都不会在休息时停止,被调用的过程被成功执行,就好像没有休息一样。

我放置中断的软件包被编译为调试,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

会话是否打开了PL/SQL调试? ALTER SESSION SET PLSQL_DEBUG = TRUE – Brian 2013-05-11 13:20:44

+0

您使用的是RAC吗?如果是这样,你需要连接到一个特定的节点。 – 2013-05-11 16:03:43

+0

@Brian,这没有任何影响。我发现根问题并将添加评论。 – 2013-05-12 18:11:05

回答

1

我发现根问题。它不是关于oracle,它是关于应用程序服务器和与数据库的连接。我将调试器附加到一个bean中,并在其他bean中调用plsql过程。因为他们在同一笔交易中,我认为应该共享连接,但事实并非如此。所以我只是将调试器附件移到了调用过程的bean上,现在它工作得很好。