ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案

ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案

1.进入数据库:sqlplus    /nolog

2.进入数据库:conn  sys/123456 as sysdba;

3.show parameter processes;

查看procress&session的参数值和占用值

上面提到由于超过连接最大值导致无法登录,所以用sys as dba也是登录不上的,首先需要先断开占用的procress,即停掉几个tomcat即可释放连接,接下来就可以登录了。在这里我停掉了所有tomcat,再通过sys用户登录sqlplus看一下procress和session的参数值和占用值:

ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案

4.select count(*) from v$process;

可以看到在没有任何在程序没有连接数据库的时候procress的占用值是65

ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案

解决办法:

1、查看当前的数据库连接数

 select count(*) from v$process ;    --当前的数据库连接数

 select count(*) from v$session;   --当前的session连接数 

2、数据库允许的最大连接数

 select value from v$parameter where name ='processes';  --数据库允许的最大连接数

3、修改数据库最大连接数  修改processes和sessions值

 alter system set processes = 300 scope = spfile;  --修改最大连接数:

 alter system set sessions=335 scope=spfile;        --修改session最大连接数:

(ORACLE的连接数(sessions)与其参数文件中的进程数(process)关系:sessions=(1.1*process+5))

4、关闭/重启数据库(修改processes和sessions值必须重启oracle服务器才能生效)

 shutdown immediate; --关闭数据库

 startup; --重启数据库

或者重启Oracle服务或重启Oracle服务器。

(注释:执行绿色的命令即可)