ORA-24247网络访问被访问控制列表 (ACL) 拒绝

        情景:Oracle EBS并发管理器无法启动

        现象:Oracle并发请求程序错误,表面日志指向内存错误

        环境:Oracle EBS R12.2.4

        2016年12月14号上午10点钟,Oracle EBS系统发现所有推向外围电商系统的并发程序全部保存,主要报错的信息是“内存不足”。由于处在业务发生期,因此不能随便停机重启(很多时候EBS重启能解决很大程度的问题)。于是准备等到中午午休时间通知所有业务财务人员停止使用,重启系统,同时开发人员和DBA(非EBS DBA)也在进行相关问题排查处理。技术人员提供相关日志到DBA处,然而始终未能在准备停机之前解决。

        第一次重启:中午12点整,我按照系统启停脚本正常启停应用服务,未发现报错,但是进系统发现所有并发未能启动。看到这里也并没有因此慌张,因为以前很多次启动应用服务的时候都遇到过,于是单独启动并发服务adcmctl.sh,也并未报错,结果还是没提示任何错误。再次进入前台页面查验,还是未能正常启动;

        第二次重启:中午12点36分,这次同时启动数据库和应用,完成相关操作后,发现系统并发管理器正常启动。这时去查验电商推送程序,发现还是报“内存”错误。此时已经12点45分左右。

        第三次重启:向DBA求助,他也没有更好的方法,于是他提出重启整个机器,reboot操作系统。由他操作,操作完成后结果并发管理器全部无法启动。这下有些慌了,因为已经到中午13点,这时业务人员已经打电话到领导那,甚至有相关人员直接来找领导问询进度。

        第四次、五次…….,各种进程kill后,多次重启仍然无法解决。就这样一直拖到下班。其中一个同事已经找好外部某著名13摸的技术专家,准备在实在没办法时通过外部资源付费解决(领导已经同意付费)。此时公司内部的DBA做过应用的回退,正准备进行数据库的闪回操作,闪回至中午11点50。而且也这样做了。终于在牺牲部分业务数据后,系统启动正常。马上去验证电商接口问题,很遗憾还是一片红彤彤。此时已经18点35分。

       此时大家都准备回家去,至少系统已经能使用,除开电商接口。15号早上起来,发现群里已经解决。其中一个技术顾问从最开始的并发请求的日志中发现ACL网络访问控制。问题迎刃而解。但原因未明,ACL安全性注册数据被冲掉(EBS访问外网系统均需注册ACL访问控制),具体的相关注册方式如下:

————————————————————————————————————————————

SecureCRT,以DBA登录数据库 uat3db:

Last login: Mon Jan 25 20:12:49 2016 from 172.16.1.225
[orauat3@uat3db ~]$ sqlplus apps/apps

SQL*Plus: Release 11.2.0.4.0 Production on Mon Jan 25 20:14:37 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> conn /as sysdba
Connected.
SQL> exec  dbms_network_acl_admin.create_acl('httprequestmid.xml','http request mid', 'APPS', TRUE,'connect',NULL,  NULL);

PL/SQL procedure successfully completed.

SQL> exec DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( acl => 'httprequestmid.xml', principal => 'APPS', is_grant => TRUE, privilege => 'resolve');

PL/SQL procedure successfully completed.

SQL> COMMIT;

Commit complete.

SQL> exec dbms_network_acl_admin.assign_acl('httprequestmid.xml','*',NULL, NULL); commit;

PL/SQL procedure successfully completed.

————————检查是否生效命令如下————————————————————————–

–查询:
SELECT any_path FROM resource_view WHERE any_path like '/sys/acls/%';

SELECT acl,
       principal,
       privilege,
       is_grant,
       TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
       TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
  FROM dba_network_acl_privileges;

SELECT host, lower_port, upper_port, acl FROM dba_network_acls;

 

————————————————————————————————————————————

————以下是其他可参考文件————-

参考文件:

http://www.linuxidc.com/Linux/2013-12/93385.htm

http://blog.sina.com.cn/s/blog_4ca24203010128oe.html

http://www.shangxueba.com/jingyan/1666117.html

http://www.cnblogs.com/benio/archive/2011/10/21/2219826.html

http://www.2cto.com/database/201312/261243.html

select utl_http.request('www.apple.com') from dual;

需要先使用 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL 创建访问控制列表(ACL)

BEGIN
 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
  acl          => 'email_server_permissions.xml',
  description  => 'Enables network permissions for the e-mail server',
  principal    => 'STAT',
  is_grant     => TRUE,
  privilege    => 'connect');
END;

–查询
SELECT host, lower_port, upper_port, acl FROM dba_network_acls;
SELECT acl,
       principal,
       privilege,
       is_grant,
       TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
       TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
  FROM dba_network_acl_privileges;

SELECT ANY_PATH FROM RESOURCE_VIEW;
结果如下图所示:

 

发表回复

您的电子邮箱地址不会被公开。