暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle ORA-24247从SQL Developer进行调试

askTom 2016-05-02
411

问题描述

sys@ORA12C> create user demo identified by demo
  2  default tablespace users
  3  quota unlimited on users;

User created.

sys@ORA12C> grant create session,create procedure to demo;

Grant succeeded.

sys@ORA12C> grant debug connect session to demo;

Grant succeeded.

sys@ORA12C> grant debug any procedure to demo;

Grant succeeded.

sys@ORA12C> grant execute on DBMS_DEBUG_JDWP to demo;

Grant succeeded.

sys@ORA12C> begin
  2     dbms_network_acl_admin.append_host_ace
  3     (host=>'LT035221',
  4      ace=> sys.xs$ace_type(privilege_list=>sys.XS$NAME_LIST('JDWP') ,
  5                     principal_name=>'DEMO',
  6                     principal_type=>sys.XS_ACL.PTYPE_DB) );
  7  end;
  8  /

PL/SQL procedure successfully completed.

sys@ORA12C> conn demo/demo@ora12c
Connected.
demo@ORA12C> create or replace procedure p as
  2  begin
  3     dbms_output.put_line('Hello_World');
  4  end;
  5  /

Procedure created.

demo@ORA12C> alter procedure p compile debug ;

Procedure altered.

demo@ORA12C>


尝试从SQL Developer调试时,得到了此错误消息

Connecting to the database DEMO_ORA12C.
Executing PL/SQL: ALTER SESSION SET PLSQL_DEBUG=TRUE
Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '10.191.61.86', '60590' )
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 DEMO_ORA12C.


您能否帮助我们了解调试此过程缺少什么权限?

专家解答

你的步子看起来很好,所以很可能是名字解析的原因之一。例如,

SQL> drop user demo cascade;

User dropped.

SQL> create user demo identified by demo
  2   default tablespace users
  3   quota unlimited on users;

User created.

SQL> grant create session,create procedure to demo;

Grant succeeded.

SQL> grant debug connect session to demo;

Grant succeeded.

SQL> grant debug any procedure to demo;

Grant succeeded.

SQL> grant execute on DBMS_DEBUG_JDWP to demo;

Grant succeeded.

SQL> begin
  2         dbms_network_acl_admin.append_host_ace
  3         (host=>'laptop01',
  4          ace=> sys.xs$ace_type(privilege_list=>sys.XS$NAME_LIST('JDWP') ,
  5                         principal_name=>'DEMO',
  6                         principal_type=>sys.XS_ACL.PTYPE_DB) );
  7      end;
  8  /

PL/SQL procedure successfully completed.

SQL> conn demo/demo
Connected.

SQL> create or replace procedure p as
  2      begin
  3         dbms_output.put_line('Hello_World');
  4      end;
  5      /

Procedure created.

SQL> alter procedure p compile debug ;

Procedure altered.



这一切看起来都很好,但当我尝试调试器时,我得到:

Connecting to the database demo_np12.
Executing PL/SQL: ALTER SESSION SET PLSQL_DEBUG=TRUE
Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '127.0.0.1', '61625' )
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 demo_np12.


在我的例子中,您可以看到我想连接到127.0.0.1 ,所以“笔记本电脑01”不能解析为这个。所以我添加了我需要的ACL :

SQL> begin
  2         dbms_network_acl_admin.append_host_ace
  3         (host=>'127.0.0.1',
  4          ace=> sys.xs$ace_type(privilege_list=>sys.XS$NAME_LIST('JDWP') ,
  5                         principal_name=>'DEMO',
  6                         principal_type=>sys.XS_ACL.PTYPE_DB) );
  7      end;
  8  /

PL/SQL procedure successfully completed.


然后调试器工作正常。

希望这个能帮上忙。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论