2013-05-11 89 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上,現在它工作得很好。