如何在SQL Developer上远程调试PLSQL代码?

时间:2014-03-10 21:34:20

标签: web-applications plsql oracle-sqldeveloper remote-debugging

我正在研究基于java的企业应用程序,我正在寻找在请求来自应用程序时在sql developer上调试plsql代码的方法。

我可以使用本地编写的测试sql程序远程调试pl sql代码,调用我的数据库上的特定过程。

我希望能够在请求来自应用程序时实现相同的调试控制。

通过右键单击数据库连接并单击远程调试,我得到一个'监听器for JPDA'弹出窗口,询问我的端口和本地地址。 通过输入部署此应用程序的计算机的IP地址,我收到错误 - '调试器无法使用指定的参数侦听JPDA。你想改变参数吗?'

我如何使这项工作?

4 个答案:

答案 0 :(得分:1)

  1. 在SQL Developer帮助中搜索:运行和调试函数和过程 向下滚动到远程调试

  2. 此博客来自内部Oracle人员解释它:http://barrymcgillin.blogspot.com/2012/04/remote-debugging-with-sql-developer.html

  3. Sue用作SQL Developer的产品经理:http://sueharper.blogspot.com/2006/07/remote-debugging-with-sql-developer_13.html

答案 1 :(得分:1)

正如MDW所说,Sue Harper's blog就是您所需要的。

要进行设置,基本上,在SQLDeveloper中右键单击您的连接,然后选择“远程调试”。输入要监听的数据库主机和端口。在您的客户端代码中,例如在java中,添加以下内容:

private void debugPlSql() throws SQLException {
    CallableStatement cstmt = null;
    try {
        cstmt = conn.prepareCall(
            "call DBMS_DEBUG_JDWP.CONNECT_TCP('...my-ip-address...', 16000 )");
        cstmt.executeUpdate();
    } finally {
        // cstmt.close() ...
    }
}

注意my-ip-address是您的数据库服务器本地IP地址,16000是我使用的调试端口,它将我带回到您的问题(现在已经过时了 - 很抱歉)

我有这个问题(警告),错误并没有那么有用,但在我的情况下,只是默认端口4000不可用。这就是为什么我的示例使用端口16000,因为它可用并且在我更改SQLDeveloper中的端口时工作正常。

我在执行感兴趣的sql之前调用debugPlSql

修改

不要忘记:

GRANT DEBUG CONNECT SESSION TO myuser;
GRANT DEBUG ANY PROCEDURE TO myuser;

答案 2 :(得分:0)

当对话框询问您有关IP地址和端口的信息时,您必须提供运行调试器的机器的值。我怀疑当你说你输入部署应用程序的机器的ip地址和端口时,你的意思是另一台计算机。

另一个重要的事情是,如果数据库服务器和运行调试器的机器之间有NAT或防火墙,则必须启用端口转发或将IP:端口列入白名单。当被问及ip和port时,你必须输入数据库服务器可以访问的外部IP地址。

the documentation中有足够详细的分步指南。虽然它适用于JDeveloper,但同样的规则也适用于SQL Developer。

答案 3 :(得分:0)

我可以在安装SQL Developer(非JRE版本)和JDK 1.8之后使用它。并授予必要的权限(如SYS)。还为客户端IP启用了网络ACL(SQL开发人员正在运行)。

请参阅博客了解详细步骤。

http://rajiv-kuriakose.blogspot.in/2016/08/how-to-enable-remote-debugging-in-sql.html