为了在sql developer 中调试存储过程,需要有三个条件
1.用户(数据库User)需要有Debug权限
--下面SQL可以查看,需要有Debug ANY PROCEDURE 和 Debug connect any
select * from user_sys_privs;
没有权限的话,需要用Grant语句赋予(这里不写了,可以杜娘)
2.Oracle数据库端设定(如果有ACL的话,需要设定允许客户IP连接)
-- 查询网络访问控制列表 acl
Select * From dba_network_acls
-- 查询访问控制权限列表acl
Select * From dba_network_acl_privileges
--创建设定访问控制权限列表ACL
--分配acl权限,执行如下sql语句:
begin
dbms_network_acl_admin.create_acl ( -- 创建访问控制文件(ACL)
acl => 'utl_http.xml', -- 文件名称
description => 'HTTP Access', -- 描述
principal => 'ITS', -- 授权或者取消授权账号,大小写敏感
is_grant => TRUE, -- 授权还是取消授权
privilege => 'connect', -- 授权或者取消授权的权限列表
start_date => null, -- 起始日期
end_date => null -- 结束日期
);
dbms_network_acl_admin.add_privilege ( -- 添加访问权限列表项
acl => 'utl_http.xml', -- 刚才创建的acl名称
principal => 'ITS', -- 授权或取消授权用户
is_grant => TRUE, -- 与上同
privilege => 'resolve', -- 权限列表
start_date => null,
end_date => null
);
dbms_network_acl_admin.assign_acl ( -- 该段命令意思是允许访问acl名为 utl_http.xml下授权的用户,使用oracle网络访问包,所允许访问的目的主机,及其端口范围。
acl => 'utl_http.xml',
host => '100.1.2.1', -- ip地址或者域名,填写http://localhost:9000/hello与http://localhost:9000/是会报host无效的
-- 且建议使用ip地址或者使用域名,若用localhost,当oracle不是安装在本机上的情况下,会出现问题
lower_port => 9000, -- 允许访问的起始端口号
upper_port => Null -- 允许访问的截止端口号
);
commit;
end;
begin
dbms_network_acl_admin.assign_acl ( -- 可以授权多个主机,或者多个主机的多个端口
acl => 'utl_http.xml',
host => '10.100.49.138',
lower_port => 80,
upper_port => NUll
);
commit;
end;
3.sql developer的设定
SQLDeveloperでツール->プリファレンス->デバッガを設定行っていただき、デバッグ実行時のデバッガホストを自分の端末のIPアドレス(ACN端末ではコマンドプロンプトからipconfigで確認)を指定してデバッグを実行していただけますでしょうか。
网友评论