问题描述
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.
您能否帮助我们了解调试此过程缺少什么权限?
专家解答
你的步子看起来很好,所以很可能是名字解析的原因之一。例如,
这一切看起来都很好,但当我尝试调试器时,我得到:
在我的例子中,您可以看到我想连接到127.0.0.1 ,所以“笔记本电脑01”不能解析为这个。所以我添加了我需要的ACL :
然后调试器工作正常。
希望这个能帮上忙。
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




