ORA-21520故障 限制某个ip的连接数

来源:互联网 发布:qq农场软件 编辑:程序博客网 时间:2024/06/06 02:23


如图,出现ORA-21520错误,上边统计ADUN实例的进程已经达到1499个了,平时这个链接数不应个这么高的,然后通过netstat查看对1521的连接数达到1472个,我的实例设置最大的连接数才是1500个

无疑,这个12520错误是这么来的,链接达到实例的上限了!

然后通知研发人员,让他们看了下现场,最后他们自己吧程序down掉,连接数降下来了,sqlplus也就可以直接登录了。


最后为了避免这样的悲剧再次发生,迷途小运维(也就是笔者)在网上找到了一个触发器sql,运行后效果不错,也给大家分享下!

内容如下:

create or replace trigger logon_audit  
after logon on database  
declare  
  i_sessions         number;  
  i_sessions_limited number := 2;     //被限制的IP的最大链接数
  str_userip         varchar2(15) := '188.188.3.240';    //被限制的IP
  except_ip_limited exception;  
begin  
  dbms_application_info.set_client_info(sys_context('userenv',  'ip_address'));  
  select count(*)  
    into i_sessions  
    from v$session  
   where client_info = str_userip;  
  if (i_sessions > i_sessions_limited) then  
    raise except_ip_limited;  
  end if;  
exception  
  when except_ip_limited then  
    raise_application_error(-20003, 'ip:' || str_userip || ' 连接数受限!');    
end logon_audit;


这个触发器成功编译之后效果如下

如果是普通用户超过这个最大连接数则登录失败 


alert log记录如下:

Errors in file /oracle/diag/rdbms/sem/SEMtrace/SEM_j000_21992.trc:
ORA-12012: 自动执行作业 "APEX_040200"."ORACLE_APEX_MAIL_QUEUE" 出错
ORA-20003: ip:188.188.3.240 连接数受限!
ORA-06512: 在 line 17

如果是有dba角色的用户登录,则只会在alert log中做如上记录,能正常登录!


###########################

本文由笔者原创,sql来自网络

作者:john

转载请注明出处

原创粉丝点击