自学内容网 自学内容网

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)!