问题描述:
今天早上上班的时候,突然同事跟我说,昨天访问尚好的数据库现在无法正常连接。服务器上已连接的项目没有报连接失败,但是无法进行正常的数据访问。通过PL/SQL工具连接的时候,出现“错误:ORA-12537:TNS 连接关闭”错误。
问题分析:
由于之前出现过由于数据库的监听突然挂掉,导致连接异常,虽然那时通过PL/SQL工具连接时报的异常不是这个,但是为了排除这方面的原因,还是检查了下数据库的监听情况。
通过命令lsnrctl status,查看到数据库的监听是正常的。
因为无法通过PL/SQL连接工具连接数据库,所有就想通过DBA系统用户,连接数据库,进行检查。在数据库服务器上,执行“sqlplus / as sysdba”命令后,出现如下图异常:
看到这个ERROR,才明白,是数据库的连接数被占用完了,导致连接关闭的错误了。
问题解决:
马上让开发那边的同事,关掉连接这个数据库测试用户,释放一些连接。然后通过PL/SQL工具,连接上数据库,查看当前数据库服务器所占用的连接数。
select username,count(username) ,machine from v$session group by username,machine
发现某个机器的连接数巨大,检查对应服务器的后台日志,发现这些连接数都是由于程序中没有及时释放导致。
联系开发人员,优化代码。
时间: 2024-11-25 10:56:28