您好,在运行以下页面示例时 https://oracle-base.com/articles/9i/sumption-web-services-9i
oracle 开发人员使用acl生成错误,内容如下:
ORA-29273: fallo de la solicitud HTTP
ORA-06512: en "SYS.UTL_HTTP", línea 1130
ORA-24247: acceso de red denegado por la lista de control de acceso (ACL)
ORA-06512: en "xxxxxx.SOAP_API", línea 150
ORA-06512: en "xxxxx.ADD_NUMBERS", línea 34
29273. 00000 - "HTTP request failed"
*Cause: The UTL_HTTP package failed to execute the HTTP request.
*Action: Use get_detailed_sqlerrm to check the detailed error message.
Fix the error and retry the HTTP request.
我该如何解决?你有什么推荐?
首先要做的事情是:如果您使用的是 Oracle 11g,我不明白您为什么要遵循 Oracle 9i 示例。
该错误是不言自明的。您必须建立一个访问控制列表并将该权限分配给您希望允许通过 HTTP 访问外部资源的用户。
在 Oracle 11g 中,使用这些包中的任何一个都需要以下配置:
为了验证没有完成这样的配置,执行这个查询:
创建 ACL 是一个两步过程。第一步是创建 ACL 并定义赋予它的权限。标准语法是:
包含
connect
参数的值,它是 UTL_INTADDR 包所必需的。privilege
resolve!
principal
指定分配给 ACL 的第一个用户名,并且区分大小写!使用数据创建 ACL 的示例是:
这将创建一个包含用户和权限列表的 xml 文件。它位于
/sys/acl/
XML DB 的低位。我怎么知道你使用 Oracle 11g?因为这个错误在Oracle 9i 中不会发生,所以9i 中没有XML DB,也没有细粒度的访问控制(使用HTTP 控制对外部资源的访问)。第二步是将网络主机分配给 ACL。标准语法是:
还有一个数据示例:
在这里你必须考虑到:
hosts
。允许访问给定域中的所有主机。