如何解决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 ;

 

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

      grant select any dictionary to test;

2、查询了下网上,有说用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新增了什么限制所致,为何建库的时候没有执行相关脚本呢,在此记录一下!

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值