ITPub博客

首页 > 数据库 > Oracle > 如何解决ORACLE11G里面ORA-24247 网络访问被访问控制列表 (ACL) 拒绝 错误

如何解决ORACLE11G里面ORA-24247 网络访问被访问控制列表 (ACL) 拒绝 错误

Oracle 作者:lhrbest 时间:2016-03-30 10:03:58 0 删除 编辑
在应用中直接上报数据时,获取ORACLE 11G(10g 没事)主机IP和实例时候,执行下列SQL语句出现错误:
SELECT lower(utl_inaddr.get_host_address||':'||SYS_CONTEXT ('USERENV', 'DB_NAME'))

FROM dual ;



 

试图连接到超级用户,给当前用户授予select any dictionary ,错误依旧

grant select any dictionary to test;

查询了下网上,有说用ORACLE发邮件也出类似错误的,解决方法都差不多,找了个类似的:

 

ORA-24247: network access denied by access control list (ACL)错误:

ERROR at line 1:

ORA-24247: network access denied by access control list (ACL)

ORA-06512: at "SYS.'UTL_INADDR", line 654

ORA-06512: at "SYS.'UTL_INADDR", line 671

ORA-06512: at line 1

按照其解决方案做了下,果然解决问题,在此记录下:

首先连接到超级用户:

SQL>Conn / as sysdba;

已连接。

SQL>

1 创建 ACL

SQL> begin

  2  dbms_network_acl_admin.create_acl (

  3  acl => 'UTL_INADDR.xml',

  4  description => 'utl_inaddr',

  5  principal => 'TEST',   --此为将来要进行操作的用户

  6  is_grant => TRUE,

  7  privilege => 'resolve'

  8  );

  9  commit;

 10  end;

 11  /

PL/SQL 过程已成功完成。

2  增加权限

begin

  2  dbms_network_acl_admin.add_privilege (

  3  acl => 'UTL_INADDR.xml',

  4  principal => 'TEST',

  5  is_grant => TRUE,

  6  privilege => 'connect'

  7  );

  8  commit;

  9  end;

 10  /

PL/SQL 过程已成功完成。

3  授予用户权限

SQL> begin

  2  dbms_network_acl_admin.assign_acl(

  3  acl => 'UTL_INADDR.xml',

  4  host => '*'

  5  );

  6  commit;

  7  end;

  8  /

  PL/SQL 过程已成功完成。

4  再次访问相应的表

SELECT lower(utl_inaddr.get_host_address||':'||SYS_CONTEXT ('USERENV', 'DB_NAME'))

FROM dual ;

fe80::645d:7021:9c8e:419a%11:sq

能够返回相应的信息,只不过此处没有返回正确的IP,而是IPV6的地址

C:\Users\lxy>ipconfig

……

以太网适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . :

   本地链接 IPv6 地址. . . . . . . . : fe80::645d:7021:9c8e:419a%11

   IPv4 地址 . . . . . . . . . . . . : 10.198.1.104

   子网掩码  . . . . . . . . . . . . : 255.255.0.0

   默认网关. . . . . . . . . . . . . : 10.198.1.254

…..

5 在需要的时候,可执行过程摘除相应的ACL

BEGIN

DBMS_NETWORK_ACL_ADMIN.drop_acl (

acl => 'UTL_INADDR.xml');

COMMIT;

END;

/


用ORACLE发邮件也会遇到这个问题,貌似11G新增了什么限制所致,为何建库的时候没有执行相关脚本呢,在此记录一下!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2072163/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
QQ:646634621| 网名:小麦苗| 微信公众号:xiaomaimiaolhr| 11g OCM| QQ群:618766405 微信群:私聊| 《数据库笔试面试宝典》作者| OCP、OCM、高可用(RAC+DG+OGG)网络班开讲啦,有需要的小伙伴可以私聊我。

注册时间:2012-09-23

  • 博文量
    1348
  • 访问量
    8073139