原因:新创建的用户并未指定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;
begin
dbms_network_acl_admin.drop_acl(
'/utl_http.xml'
);
end;