ORA-29273: HTTP 请求失败
ORA-06512: 在 "SYS.UTL_HTTP", line 1722
ORA-24247:网络访问被访问控制列表(ACL)拒绝
ORA-06512: 在 line 1
原因:首次使用webservice的时候没有创建acl访问控制权限。
解决:
1、创建一个 ACL
BEGIN
dbms_network_acl_admin.create_acl(acl => 'httprequestpermission.xml',
DESCRIPTION => 'Normal Access',
principal => 'CONNECT',
is_grant => TRUE, PRIVILEGE => 'connect',
start_date => NULL,
end_date => NULL);
END;
参数 principal => 'CONNECT' 表示该 ACL 适用于 CONNECT 角色。该 ACL 是作为一个httprequestpermission.xml文件创建的。
2、查看是否创建成功
select host, lower_port, upper_port, acl from dba_network_acls;
select v.ACL,
v.principal,
v.privilege,
v.is_grant,
v.start_date,
v.end_date
from dba_network_acl_privileges v;
3、为 ACL 增加一个权限:
begin
dbms_network_acl_admin.add_privilege(acl => 'httprequestpermission.xml',
principal => 'SCOTT',
is_grant => TRUE,
privilege => 'connect',
start_date => null,
end_date => null);
end;
4、分配将受该 ACL 制约的主机以及其他详细信息:
begin
dbms_network_acl_admin.assign_acl(acl => 'httprequestpermission.xml',
host => '10.1.1.12',
lower_port => 8011,
upper_port => NULL);
end;