您的位置:首页 > 数据库 > Oracle

Oracle:ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝

2019-07-05 07:47 1791 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jioujiou520/article/details/89952518

在新建的数据库中,通过

UTL_HTTP
包发送请求时.抛出异常

ORA-06512: 在 "SYS.UTL_HTTP", line 368
ORA-06512: 在 "SYS.UTL_HTTP", line 1118
ORA-29273: HTTP 请求失败
ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝

原因,新创建的用户并未指定ACL权限(访问控制列表),因此不能直接访问互联网

解决方式

首先查询下,当前数据库中,是否为当前用户分配ACL权限

select * from dba_network_acl_privileges ;

可以看到,系统中,存有ACL文件,但是分配的
PRINCIAPL
中没有当前用户.

因此,执行以下SQL,将系统中已经有的
ACL
文件分配给当前用户.

begin
dbms_network_acl_admin.add_privilege
(acl        => '/sys/acls/XXX.xml',      -- 命名ACL
principal  => 'XXXX',                   -- 用户
is_grant   => true,                     -- true表示赋权,false表示取消赋权
privilege  => 'connect');               -- 权限限制
end;

如果很不幸,你之前没有创建过ACL文件
则需要创建,并分配访问端口
创建文件

begin
dbms_network_acl_admin.create_acl
(acl         => '/sys/acls/utl_http.xml', -- 命名
description => 'some word.. ',           -- 描述
principal   => 'XXXX',                   -- 要赋权限的用户
is_grant    => true,                     -- true表示赋权,false表示取消赋权
privilege   => 'connect');               -- 权限限制
end;

分配地址,端口

begin
dbms_network_acl_admin.unassign_acl
(acl        => '/sys/acls/ACLName.xml', -- 命名
host       => '11.11.111.11',          -- 服务器地址
lower_port => 1,                       -- 端口从
upper_port => 10000);                  -- 端口到
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: