在使用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