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;

Published by

风君子

独自遨游何稽首 揭天掀地慰生平