• -------------------------------------------------------------
  • ====================================

Oracle11g Http请求报错 ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝 ORA-29273:HTTP 请求失败

编程语言 dewbay 7年前 (2017-05-18) 4139次浏览 已收录 0个评论 扫描二维码

项目要求每个星期执行一次 C#后台代码,写了一个 http 请求的存储过程以便每个星期固定时间访问一次后台代码, 用 call SP_XXX();执行存储过程,报出如下异常

ORA-29273: HTTP 请求失败
ORA-06512: 在 “SYS.UTL_HTTP“, line 1130
ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝
ORA-06512: 在 “YGMM.P_SENDSMS_TEST”, line 15
ORA-06512: 在 line 3

原因:Oracle 11g 引入了细粒度访问网络服务.通过在 XML DB 数据库中使用访问控制列表(ACL)来实现,允许控制哪个用户能够访问哪个网络资源。

解决办法:

1、给当前 Oracle 登入用户配置 ACL 权限

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/hellohttp://localhost:9000/是会报 host 无效的
                                            --
且建议使用 ip 地址或者使用域名,若用 localhost,当 oracle 不是安装在本机上的情况下,会出现问题
    lower_port
=> 9000,                    
--
允许访问的起始端口号
    upper_port
=>
Null                     
-- 允许访问的截止端口号
  );
  commit;
end;
如需其他删除权限等操作,可以访问如下网址

http://www.2cto.com/database/201404/290719.html。

最后再执行存储过程,发现可以访问到后台代码了。


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle11g Http请求报错 ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝 ORA-29273:HTTP 请求失败
喜欢 (4)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址