今天数据库连接老是会断开,重连不停的时显示
TNS-12520 TNS:listener could not find available handler for requested type of server 监听器找不到处理请求的程序
原因都已经交待清楚了,没有程序可用!
那么,监听器到底需要什么样的程序来处理请求呢?
简述一下客户端连接到服务器的过程:
客户端发出请求---->监听器收到请求----->监听器启动server process来处理请求---->客户端连接server process并与监听器断开连接。
可以看到,监听器收到请求后会启动一个server process来处理请求,如果不能启动server process,就会报上面的错误。
不能启动server process,一个常见的情况(不常见的我也不知道)就是进程数超过了process的设置。
检查进程数:
select count(*) from v$process;
-----------
243
show parameter processes
processes 250
初始化参数processes=250,当前进程243个,按理连接不上的,但是有一些中间件没有连上并且一起在尝试连接,在刚才报错时应该有超过250个进程在连接。
解决办法:
1.kill掉某些会话(不用停机)
2.修改系统参数 alter system set processes=500 scope=spfile;
然后重启数据库