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

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

作者:互联网

 

在应用中直接上报数据时,获取ORACLE 11G(10g 没事)主机IP和实例时候,执行下列SQL语句出现错误:
SELECT lower(utl_inaddr.get_host_address||':'||SYS_CONTEXT ('USERENV', 'DB_NAME'))    

FROM dual ;

bb

 

试图连接到超级用户,给当前用户授予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新增了什么限制所致,为何建库的时候没有执行相关脚本呢,在此记录一下!

标签:xml,network,24247,INADDR,acl,UTL,SQL,ACL,ORACLE11G
来源: https://blog.51cto.com/lhrbest/2696704