You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Developer中无法调试PL/SQL存储过程的问题如何解决?

错误原因

该报错是Oracle的访问控制列表(ACL)限制了当前数据库用户使用DBMS_DEBUG_JDWP包建立TCP连接的权限。PL/SQL调试功能需要Oracle服务端主动回连你本地SQL Developer的监听端口,默认未授权的场景下就会抛出ORA-24247错误。

解决方案

需要使用SYS或者拥有DBA权限的账号执行以下授权操作:

步骤1:提前确认核心信息

  • 需要调试权限的数据库用户名(Oracle用户名默认大写存储,后续操作需填写大写)
  • SQL Developer所在的主机IP,报错示例中为127.0.0.1,如果是连接远程数据库请填写本地机器的公网/局域网IP
  • 端口范围建议放开1024到65535的动态端口范围,避免每次调试随机端口变化需要重复授权

步骤2:创建ACL规则(如果不存在对应规则)

BEGIN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
    acl          => 'sql_developer_debug_acl.xml',
    description  => 'ACL for SQL Developer PL/SQL Debugging',
    principal    => '替换为你的数据库用户名(大写)',
    is_grant     => TRUE,
    privilege    => 'connect',
    start_date   => SYSTIMESTAMP,
    end_date     => NULL
  );
  COMMIT;
END;
/

如果执行时提示同名ACL已存在,执行以下语句追加权限即可:

BEGIN
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
    acl          => 'sql_developer_debug_acl.xml',
    principal    => '替换为你的数据库用户名(大写)',
    is_grant     => TRUE,
    privilege    => 'connect'
  );
  COMMIT;
END;
/

步骤3:绑定允许访问的主机和端口范围

BEGIN
  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
    acl         => 'sql_developer_debug_acl.xml',
    host        => '替换为SQL Developer所在主机IP',
    lower_port  => 1024,
    upper_port  => 65535
  );
  COMMIT;
END;
/

步骤4:授予调试基础权限(部分Oracle版本需要额外配置)

-- 授予调试连接权限
GRANT DEBUG CONNECT SESSION TO 替换为你的数据库用户名(大写);
-- 如果只需要调试自有存储过程,可以替换为 GRANT DEBUG ON PROCEDURE 存储过程名 TO 用户名;
GRANT DEBUG ANY PROCEDURE TO 替换为你的数据库用户名(大写);

注意:生产环境操作请严格控制允许的主机IP和端口范围,不要使用通配符*放开所有主机访问权限,避免安全风险。

验证生效

授权完成后重启SQL Developer,重新触发调试操作即可正常使用。

内容的提问来源于stack exchange,提问作者Lova Chittumuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:06:01