oracle 监听程序当前无法识别连接描述符中请求的服务_记一次应用程序过多无效连接达上限导致数据库无法连接处理方案

概述

简单记录一下最近处理的一个小问题,主要是应用程序过多无效连接导致,看下思路就行。。


1、问题现象

报错日志提示:

ORA-12520: TNS:监听程序无法为请求的服务器类型找到可用的处理程序,测试应用端telnet数据库服务器端口也无法连通,远程oracle服务器端,Sqlplus登陆oracle,也报错:ORA-00020:maximum number of processes (800) exceeded

be9fdae75666c01c7e5290b3c61e4c5d.png

2、问题分析

根据提示得知,是Processes过多,超出最大值,正常解决办法是需要将oracle的最大process调大,但我之前已调整为800,不可能又去加这个值的,下面记录下问题排查过程


3、查看当前进程连接情况

可以看出当前进程数799,最大值是800,外面的连接就进不来了。

--查看当前进程数select count(*) from v$process;--查看进程,会话的历史最大数和最大数select resource_name,max_utilization,limit_value from v$resource_limit where resource_name in('processes','sessions');
69da2b16a1bf6f8aec30271a40aabc04.png

4、查看oracle总的连接数以及活跃连接数

活跃的连接只有22,看来是过期失效的连接很多

select t.INST_ID,count(*) count_all,sum(case when t.STATUS = 'ACTIVE' then 1 else 0 end) count_activefrom gv$session t group by t.INST_ID order by t.inst_id;
b56eb6637b74c6f73003650f5e49b48b.png

5、查看连接oracle每台机器的连接数和状态

为了判断究竟是哪台主机产生的问题就需要用以下sql查了

 select machine,status,count(*) from gv$session group by machine,status order by status;

好吧,问题在ZL-FSL-XXX主机上,应该是上面跑的应用事务处理后没有及时关闭数据库连接导致,后面开发排查应用程序解决..

ceb7dc0fa822c5ef685d418ba3e09231.png

后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下~

0669775cd4b8bb13eb262883dda3b6f3.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值