Oracle连接数满问题解决及排查 ORA-00020:maximumnumber of processes
问题描述:
测试环境功能验证过程中,测试反馈页面数据加载缓慢,接口查询超时的情况。
原因分析:
1、有可能是数据库操作一直没释放连接。
2、项目使用数据库连接池,因为配置问题,造成连接一直未释放。
3、项目未使用数据库连接池,一直创建连接并未关闭连接。
解决方案:
1、可以先停止部分项目的进程。
2、增加数据库连接数。
3、排查连接数升高的问题。
排查思路:
验证oracle服务是否正常
1、登录oracle服务器查看服务是否正常
##切换oracle用户
su - oracle
##连接oracle
sqlplus / as sysdba
2、发现登录不进去,返回异常,大概意思是由于processes进程数达到了最大值,导致无法登录.
ORA-00020:maximumnumber of processes(2000) exceeded
释放连接数
两种方式:
1、关闭连接数据库的相关服务,让数据库连接数降下来。
2、停止监听服务,等待数据库访问连接数下降后再登录。
#停止监听服务
lsnrctl stop
#启动监听服务
lsnrctl start
查询当前连接数
select count(*), b.MACHINE, b.USERNAME , b.PROGRAM ,b.OSUSER from v$process a, v$session b where a.ADDR = b.PADDR and b.USERNAME is not null group by b.MACHINE , b.USERNAME , b.PROGRAM ,b.OSUSER
如下图:
增加数据库连接数
##使用dba权限登录
sqlplus / as sysdba
##查询数据库设置的最大连接数
show parameter processes;
##修改最大连接数
alter system set processes = 3000 scope = spfile;
##重启数据库
shutdown immediate;
startup;
##重新查询数据库设置的最大连接数
show paratemer processes;
排查连接数升高的问题
两种排查方向:
第一种:
1、通过查询当前连接数sql找到 连接数最多的连接。
2、通过连接信息中的username 从而找到开发的代码中使用的数据库连接信息的username。
3、排查服务中数据库连接信息,配置信息是否有问题。
第二种:
1、数据库服务所在服务器, 执行netstat -ano 命令来看所有连接,包含IP端口信息
##执行命令
netstat -ano > 1.txt
2、通过外部请求IP端口,找到对应服务进行下一步排查。
原文地址:https://blog.csdn.net/qq_41814311/article/details/145185532
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!