# 错误码ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序 解决方案  > 错误码ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序 解决方案 > > ORA-12516 TNS:listener could not find available handler with matching protocol stack ## 解决 ## 1.错误原因 **由于超过连接最大值导致无法登录,所以用sys as dba也是登录不上的,首先需要先断开占用的procress,即停掉几个tomcat即可释放连接,接下来就可以登录了。 解决方法:** ```bash # 杀掉oracle进程: kill -9 `ps -ef|grep "oracle" |grep "LOCAL=NO"|awk '{print $2}'` ``` #### 2.以oracle身份登录数据库 ```bash (1) 以oracle身份登录数据库,命令:su -oracle (2) 进入Sqlplus控制台,命令:sqlplus /nolog (3) 以系统管理员登录,命令:connect / as sysdba ``` #### 3.查看procress的参数值和占用值 ```bash #(1)procress参数值: show parameter processes #(2)procress占用值: select count(*) from v$process; ```  #### 4.查看session的参数值 ```bash #(1)session参数值: show parameter sessions ```  修改process和session的最大值 ```bash #(1)process最大值: alter system set processes=500 scope=spfile; #(2)session最大值: alter system set sessions=776 scope=spfile; ``` #### 5.重启oracle 使配置生效 **1).关闭** ```bash shutdown immediate ```  **关闭成功** **2).启动** ```bash startup ```  #### **启动成功** #### 6.查看procress&session的参数值 查看配置是否生效 **1).查看procress参数值** ```bash show parameter processes ```  **2).查看session参数值** ```bash show parameter sessions ```  修改成功 ## 其他 ### sessions和processes关系 必须按照如下关系设置。 sessions=1.1*processes+5; 这个是sessions值和processes值的关系,最好按照这样做, 如果要将processes数设置为500,则sessions数必须为1.1*500+5=555 ## 参考 - https://blog.csdn.net/tianqishu11/article/details/78615850