Oracle连接满了,无法登录数据库,如何分析连接来源?

数据库 Oracle
通过服务器IP,进程名,文件名等可以精确定位到具体的应用,可以沟通临时停止或重启此应用,最后排查此应用连接不释放的问题。

问题现象:

收到数据库连接数使用率高的告警:

[ID:xxx][CJC测试系统:XXX][数据库],连接数使用率偏高,the current value is 95.58 %[CJC],故障发生时间:2025-02-28 xx:xx:xx

尝试登录数据库:

cjc-db-01# sqlplus / as sysdba
SQL> select * from v$resource_limit;
select * from v$resource_limit
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0


SQL> select status from v$instance;
select status from v$instance
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0

告警日志如下:

Process W004 submission failed with error = 20
ORA-00020: maximum number of processes (430) exceeded
 ORA-20 errors will not be written to the alert log for
 the next minute. Please look at trace files to see all
 the ORA-20 errors.

问题分析:

临时解决方案 重启应用 或 重启数据库释放连接,但是如果不定位到连接来源,重启后问题仍有可能发生。

数据库服务器,查看连接来源,可以通过netstat或监听日志查看,本次通过netstat进行查看:

netstat -ano | grep 1521 > 0228.log
more 0228.log
cat 0228.log|wc -l
445
cat 0228.log | grep 192.168.0.101|wc -l
394

可以看到,数据库连接来源主要是 192.168.0.101 。

继续查看 192.168.0.101 服务器上什么应用连接的数据库:

登录到这台服务器:

通过 netstat 命令检查,查看到是 pid=6666 的java程序在连接数据库。

root@cjc-xx-02:#netstat -lanp|grep 1521|more
tcp        0      0 192.168.0.101:****         192.168.0.103:1521        ESTABLISHED 6666/java          
tcp        0      0 192.168.0.101:****         192.168.0.103:1521        ESTABLISHED 6666/java          
tcp        0      0 192.168.0.101:****         192.168.0.103:1521        ESTABLISHED 6666/java          
tcp        0      0 192.168.0.101:****         192.168.0.103:1521        ESTABLISHED 6666/java  
......

当前还有283个连接

root@cjc-xx-02:#netstat -lanp|grep 1521|wc -l
283

查看对应的进程

root@cjc-xx-02:#ps -ef|grep 6666
tomcat   6666     1  0 Feb24 ?        00:16:38 java -jar -Xms****M -Xmx****M xxxtestxxx.jar --spring.profiles.active=xxx

查找对应的文件

root@cjc-xx-02:#find / -name xxxtestxxx.jar

解决方案:

通过服务器IP,进程名,文件名等可以精确定位到具体的应用,可以沟通临时停止或重启此应用,最后排查此应用连接不释放的问题。


责任编辑:武晓燕 来源: IT小Chen
相关推荐

2010-06-12 15:53:22

MySQL数据库

2011-07-18 14:00:29

RailsOracle

2010-05-05 15:45:52

Oracle数据库

2017-09-11 19:30:44

MySQLCmd命令连接数据库

2011-03-25 09:05:02

Oracle数据库共享连接专用连接

2010-10-26 15:21:11

连接Oracle数据库

2011-07-29 15:11:42

WeblogicOracle数据库连接

2024-05-08 08:37:44

2010-10-26 16:07:45

连接oracle数据库

2010-04-06 11:02:30

Oracle 数据库

2010-04-15 10:20:18

连接Oracle数据库

2010-10-26 16:27:37

连接Oracle数据库

2009-12-31 11:07:33

连接ADO.NET

2011-09-01 22:45:37

OracleORA-01940

2010-10-26 15:54:02

连接oracle数据库

2010-04-07 18:26:43

Oracle数据库

2010-04-08 18:45:35

Oracle数据库

2009-07-20 14:30:38

jdbc连接数据库代码

2010-04-22 16:56:46

Oracle数据库

2009-08-20 17:55:43

C#连接Oracle数
点赞
收藏

51CTO技术栈公众号