我正在尝试在装有 Windows 11 的 PC 上使用“Oracle SQL Developer”版本 23.1.0.097 调试过程。 我已使用 SSH 隧道与 Linux 上的远程 Oracle Database 18c XE 版本 18.0.0.0.0 建立了连接。 我可以成功执行该过程,无需调试。
但是当我尝试调试它时,它失败并显示一些消息:
Connecting to the database #####.
Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '127.0.0.1', '11183' )
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at "SYS.DBMS_DEBUG_JDWP", line 68
ORA-06512: at line 1
Process exited.
Disconnecting from the database ####.
我在网上搜索了可能的解决方案,但无法修复它。我向我的用户授予了以下权限:
BEGIN
DBMS_NETWORK_ACL_ADMIN.append_host_ace(
host => '*',
lower_port => 5001,
upper_port => 65535,
ace => xs$ace_type(privilege_list => xs$name_list('JDWP'),
principal_name => 'MY-USER', /* replace with my real user*/
principal_type => xs_acl.ptype_db));
END;
但是现在调试器失败并显示另一条消息:
Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '127.0.0.1', '14573' )
ORA-30683: failure establishing connection to debugger
ORA-12541: TNS:no listener
ORA-06512: at "SYS.DBMS_DEBUG_JDWP", line 68
ORA-06512: at line 1
Process exited.
但这没有意义,因为我已连接到数据库并使用 SSH 隧道...
现在终于可以远程调试了。我发布我的答案,以防对其他人有用。
经过一些研究和测试,我无法解决 DBMS_DEBUG_JDWP 的问题。
但是: 我成功地通过使用旧的、已弃用但值得信赖的 DBMS_DEBUG 来实现远程调试。
在“工具”>“首选项”>“调试”中:选择单选按钮“使用 DBMS_DEBUG”而不是默认的“DBMS_DEBUG_JDWP”。