首先问题出现背景:在开发过程中,测试环境中服务器日志突然报错获取不到数据库连接,通过命令
select count(1) from v$session;
查询数据库的会话连接数,发现150条,而数据库默认的会话连接就是150,也就是说会话已经满了!
后来百度查阅文章
https://blog.csdn.net/itxiaohei323/article/details/8431789
查看了下具体的会话状态
select sid,serial#,username,program,machine,status from v$session;
果然发现有大量的inactive状态(130)的会话存在。
并且观察到machine(主机名)字段绝大部分是同一个,通过查看本机的主机名称
发现是咱们的一位开发小伙本地起了一万个应用,并且是连的测试库,导致会话满了。
以上只是一种排查经验,具体解决方案(修改连接数)这里也总结一下:
进入sqlplus:
sqlplus /nolog
conn /as sysdba
show parameter processes;--查看连接数信息,一般没做处理的话是默认150个
alter system set processes=500 scope = spfile;--修改连接数
commit;
shutdown immediate;
startup;--重启生效
show parameter processes;--再次查看连接数,检查是否生效