【问题标题】:Oracle 11g ORA-24247: network access denied by access control list (ACL)Oracle 11g ORA-24247:访问控制列表 (ACL) 拒绝网络访问
【发布时间】:2019-01-22 00:49:28
【问题描述】:

我在链接http://www.oracle-base.com/articles/9i/ConsumingWebServices9i.php 中使用soap_api。我能够在

中调用 Web 服务
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
"CORE   10.2.0.1.0  Production"
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

但是当我在

中使用相同的
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
"CORE   11.2.0.1.0  Production"
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

它的给予

"ORA-29273: HTTP request failed
 ORA-06512: at "SYS.UTL_HTTP", line 1130
 ORA-24247: network access denied by access control list (ACL)"

请帮忙

【问题讨论】:

标签: oracle oracle11g oracle10g ora-24247


【解决方案1】:

Oracle 允许使用多个 PL/SQL API(UTL_TCP、UTL_SMTP、UTL_MAIL、UTL_HTTP 和 UTL_INADDR)访问外部网络服务,所有这些都是使用 TCP 协议实现的。您需要为此创建一个 ACL(访问控制列表)。在这种情况下,波纹管脚本可能对我有用。就我而言:我正在使用 SYS.UTL_HTTP 从 pl/sql 级别调用一个基于 SOAP 的 Web 服务。

begin
  dbms_network_acl_admin.create_acl (
  acl          => 'networkacl.xml',
  description  => 'Allow Network Connectivity',
  principal    => 'PUBLIC',
  is_grant     => TRUE,
  privilege    => 'connect',
  start_date   => SYSTIMESTAMP,
  end_date     => NULL);
 dbms_network_acl_admin.assign_acl (
  acl         => 'networkacl.xml',
  host        => 'AS NEEDED*',
  lower_port  => AS NEEDED*,
  upper_port  => AS NEEDED*);
  commit;
end;

你可以看看:here

  • 按需 = 根据您的要求定义自己

【讨论】:

  • 这授予 每个 数据库用户连接到 每个 端口上的 每个 主机的权利 - 似乎有点矫枉过正直接邀请 DOS 攻击。
  • 我授予了相关委托人,但现在我收到 ORA-06512:在“SYS.UTL_HTTP”第 1415 行,您有什么建议吗?我还向我的用户授予了对 utl_http 的执行权
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-30
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多