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

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

解决方式:

  • 1.在sys权限下,查询是否为当前用户分配acl权限
select * from dba_network_acl_privileges ;

  • 因此,执行以下sql,将系统中已经有的acl分配给当前用户
begin
  dbms_network_acl_admin.add_privilege
    (acl        => 'utl_http.xml',      -- 命名ACL
     principal  => 'USER',                   -- 用户
     is_grant   => true,                     -- true表示赋权,false表示取消赋权
     privilege  => 'connect');               -- 权限限制
end;
  • 如果没有acl文件,则需要创建acl;(慎用:一般直接使用系统自带的acl文件,直接使用添加acl给用户)
begin
  dbms_network_acl_admin.create_acl
    (acl         => 'utl_http.xml', -- 命名 ,命名禁止和系统的相同,和系统的相同会把系统数据删掉,造成acl无法使用
     description => 'some word.. ',           -- 描述
     principal   => 'USER',                   -- 要赋权限的用户
     is_grant    => true,                     -- true表示赋权,false表示取消赋权
     privilege   => 'connect');               -- 权限限制
end;
  • 分配地址端口
begin
  dbms_network_acl_admin.unassign_acl
    (acl        => 'utl_http.xml', -- 命名
     host       => '*',          -- 服务器地址,可以使用*作为通配
     lower_port => 1,                       -- 端口从
     upper_port => 10000);                  -- 端口到
end;
  • 删除用户权限
begin
      dbms_network_acl_admin.delete_privilege(
            '/utl_http.xml', 'PACDBUSER', NULL, 'resolve'
            );
end; 
  • 删除acl配置文件
begin
      dbms_network_acl_admin.drop_acl(
            '/utl_http.xml'
            );
end;
原文地址:https://www.cnblogs.com/hziwei/p/13985890.html