什么情况下会出现oracle数据库自身连接超出最大连接数,急急急!

wu_xiao_sheng 2016-03-28 10:39:10
这些天一直被这个问题困扰,oracle连接超出最大连接数。原以为是tomcat程序还有没释放的连接,但是经过追踪审查之后发现不是程序的问题,而是数据库本身连接数异常多。下面是我操作过程。

重启oracle服务后,登陆sqlplus。
SQL> select count(*) from v$session;
SQL> show parameter processes;
SQL> show parameter sessions;
之前都是150,后来修改了成了500
SQL> alter system set processes=500 scope=spfile;
SQL> shutdown immediate;
SQL> startup
重启tomcat服务。
改完之后发现,过一段时间之后依然会冲到496个连接,不是改了最大连接数就能解决的。
SQL> select sid,serial#,a.* from v$session a where username='BOSS';
BOSS为正式数据库用户。
这个连接数很正常,也很稳定,基本在20个左右。
SQL> select sid,serial#,a.* from v$session a where username<>'BOSS';
不等于BOSS的基本上就是boss2这个用户在连接,boss2是数据库服务器名称。
请问大神这个是什么原因导致的?有什么解决办法吗?
...全文
8559 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄大仙呀 2017-08-31
  • 打赏
  • 举报
回复
我来挖一下坟贴,楼主的问题我也遇到了,我找到的原因是项目连接池设置了最小连接数,而最小连接数大于数据库的最大连接数,那么项目就会取最大值,那么连接数就满了,解决办法就是调小项目配置的最小连接数,要么就设置数据库的最大连接数让连接数大于需求,亲测有效,不知道和你遇到的问题是不是一样。
Swer 2016-05-27
  • 打赏
  • 举报
回复
请问最后你如何解决这个问题的啊?
wu_xiao_sheng 2016-05-27
  • 打赏
  • 举报
回复
引用 8 楼 sunfeihu 的回复:
请问最后你如何解决这个问题的啊?
通过把OracleDBConsolboss服务禁掉就可以了。
wu_xiao_sheng 2016-03-30
  • 打赏
  • 举报
回复
存储过程都看过,都有commit。
wu_xiao_sheng 2016-03-28
  • 打赏
  • 举报
回复
引用 3 楼 xu176032 的回复:
长时间的inactive的session,一般都是由于中间件(tomcat,weblogic等)执行了数据库操作,没有commit,或者没有关闭连接导致的,还是从程序角度出发吧,查一下SYSMAN这个用户开启数据库连接的所有地方,如果实在查不到,尝试kill一下inactive的session,如果不报错,就整个job,定时清理。。。。能想到的就这么多。。 个人建议,还是考虑前端程序,我们之前碰到过类似的,都是因为连接不关闭造成的。
恩 我在从程序角度查看一下有没有可能导致了这个问题。主要是程序稳定运行了很长时间了,如果有没有关闭的连接,最开始就不能正常运行。就在前两天出现了这个问题,在v$session, v$process中都可以看到会话数与进程数都在持续不断往上涨,两个方面增长的根源来自于不同的用户,v$process中的用户是SYSTEM,v$session中的用户是SYSMAN。执行killsession后,立马又重新生成新的session。
xu176032 2016-03-28
  • 打赏
  • 举报
回复
长时间的inactive的session,一般都是由于中间件(tomcat,weblogic等)执行了数据库操作,没有commit,或者没有关闭连接导致的,还是从程序角度出发吧,查一下SYSMAN这个用户开启数据库连接的所有地方,如果实在查不到,尝试kill一下inactive的session,如果不报错,就整个job,定时清理。。。。能想到的就这么多。。 个人建议,还是考虑前端程序,我们之前碰到过类似的,都是因为连接不关闭造成的。
wu_xiao_sheng 2016-03-28
  • 打赏
  • 举报
回复
说错了,应该是这样的,boss2是MACHINE,SYSMAN是用户。
xu176032 2016-03-28
  • 打赏
  • 举报
回复
boss2这个用户在连接,boss2是数据库服务器名称 用户名和数据库服务器名有啥关系吗,我觉得你还是需要从程序中查一下使用boss2这个用户创建连接的代码,是否存在连接不关闭的情况,oracle不会自己搞一堆连接的。
zhouhaochen 2016-03-28
  • 打赏
  • 举报
回复
有没有查过存储教程!
wu_xiao_sheng 2016-03-28
  • 打赏
  • 举报
回复
SYSMAN是关于oracle的EM管理的用户,如果不修改什么设置的话,实际没什么用。查看连接最多的就是这个用户,于是就把oracleEM管理的相关服务停掉了。OracleDBConsolboss服务停止后,连接数正常了。但是这只是暂缓之计,具体原因出在哪还没找出。求各位大神指导。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧