在使用JDeveloper進行開發的時候,程式中經常會調用Oracle資料庫中的過程、函數、Package中的過程和函數。我們也希望能在Debug頁面代碼的時候能跟蹤PLSQL代碼。JDeveloper的debugger使用資料庫對JPDA (Java Platform Debugger Architecture)的實作,提供了Remote debug的功能,使得開發人員可以輕松的在JDeveloper中remote debug PLSQL程式。
下面介紹如何使用:
1,資料庫連接配接使用者需要有以下權限:
DEBUG ANY PROCEDURE
DEBUG CONNECT SESSION
2,監聽端的設定:
1),在JDeveloper的應用中建立資料庫連接配接
2),在Database Navigator中,右鍵選擇建立的連接配接,然後‘Remote Debug’
3),在彈出的Listen for JPDA參數中填寫(port: 4000,Timeout: 0,Local address: 127.0.0.1)
port可以任意指定,Local address本地Debug可以是127.0.0.1,如果不同的機器,可以指定可通路的IP
4),在Database Navigator中打開需要Debug的PLSQL程式,在其中添加斷點。
3,調用端的設定:
1)調用可以在SQL*Plus中,也可以在ADF應用中。
2)在調用PLSQL代碼前,添加如下代碼來與前面建立的端進行連接配接:dbms_debug_jdwp.connect_tcp('127.0.0.1', '4000')
AM中代碼:getDBTransaction().executeCommand("begin dbms_debug_jdwp.connect_tcp('127.0.0.1', '4000'); end;");
成功後JDeveloper會提示:Debugger accepted connection from remote process on port 4000.
3)運作程式,在執行到PLSQL程式的時候,會在添加的斷點處停下來
4)完成後,斷開連接配接:EXEC DBMS_DEBUG_JDWP.DISCONNECT;
成功後的提示:Debugger disconnected from remote process.
2011/11/27 盧玉雙 @上海
參考:
Debugging PL/SQL and Java Stored Procedures with JPDA
Remote Debugging PL/SQL using JDeveloper
User's Guide for Oracle JDeveloper: Running and Debugging PL/SQL and JavaStored Procedures