如图,出现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
转载请注明出处