ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程”的异常
简单说明:我们开发时多人开发,会频繁访问服务器数据库,结果当连接数大的时候,就会报ora-12516的错误,ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程”的异常
注意:process和session设置的大小有比例
请参考文章设置: http://www.cnblogs.com/summary-2017/p/7248397.html
一般ORA-12516有两个原因,一个是session数不够,再有一个就是客户端和服务端建立连接的时候不稳定所引起的。
以sysdba身份登陆PL/SQL 或者 Worksheet
1.查看进程数和会话数
select count(*) from v$process; 取得数据库目前的进程数。
select value from v$parameter where name = 'processes'; 取得进程数的上限。
select count(*) from v$session;
1.1看配置的进程数和会话数:
show parameter processes;
show parameter sessions;
2.修改processes和sessions值
SQL> alter system set processes=300 scope=spfile;
系统已更改。
SQL> alter system set sessions=335 scope=spfile;
系统已更改。
3、查看processes和sessions参数,www.linuxidc.com但更改并未生效
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 50
SQL> show parameter sessions
NAME TYPE VALUE
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 60
shared_server_sessions integer
4、重启数据库,使更改生效
SQL> shutdown
SQL> startup
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 300
SQL> show parameter sessions
NAME TYPE VALUE
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 335
shared_server_sessions integer
********************************************************************************************************************************************************
ORA-12516 “TNS监听程序找不到符合协议堆栈要求的可用处理程序” 解决方案
| [日期:2016-09-27] | 来源:Linux社区 作者:wlwlwlwl015 | [字体:大 中 小] |
前言
简单描述一下场景,总共两台应用服务器,每台安装3个tomcat进行集群,并通过nginx做了负载均衡,今天在生产环境中部署项目后进行测试,发现在一台应用服务器中同样的代码,tomcat1和tomcat2正常,而访问tomcat3时报404错误,去看了下log发现是数据库服务器出了问题: 
然后登录到DB服务器去看看什么情况,结果登录时发现报以下错误: 
居然已经登录不上了,根本原因就是因为Oracle的process和session已经达到甚至超过最大值了,接下来就详细说明一下解决方案。
查看procress&session的参数值和占用值
上面提到由于超过连接最大值导致无法登录,所以用sys as dba也是登录不上的,首先需要先断开占用的procress,即停掉几个tomcat即可释放连接,接下来就可以登录了。在这里我停掉了所有tomcat,再通过sys用户登录sqlplus看一下procress和session的参数值和占用值: 
可以看到在没有任何在程序没有连接数据库的时候procress的占用值是18,而参数值为300,所有此时占用量很小,那么接下来分别启动应用服务器下的tomcat,依次看一下应用服务器1下的第1个tomcat,应用服务器1下的第2个tomcat和应用服务器1下的第3个tomcat之后,procress占用值的变化~
启动第1个tomcat后访问主页:
启动第2个tomcat后访问主页:
启动第3个tomcat后访问主页: 
不难发现每次process的值都增加了60,此时应用服务器1的tomcat已全部启动,那么也意味着应用服务器2的第二台tomcat启动后,process的值已超过300(198+120=318),所以当再启动应用服务器2的第3台tomcat时就无法登录了,所以我们仅需要修改process和session的最大值即可,修改语句如下:
alter system set processes=1000 scope=spfile;
alter system set sessions=1105 scope=spfile;
也就是说sessions的值是根据processes的值计算后得到的,这里需要注意一下,最后重启一下Oracle服务即可,此时再分别开启应用服务器2的3个tomcat并依次访问主页后再看一下process和session的参数值和占用值情况: 
如上图,可以看到process的值已经成功修改为1000,而此时开启了6个tomcat所占用的process值为378,session的占用值为375,都远远小于参数值,所以至此项目均已可以正常访问。
总结
简单记录一下这个Oracle异常的解决方案,希望对遇到同样问题的朋友有所帮助,The End。
更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

查阅资源原文:http://blog.csdn.net/superhoy/article/details/38613225
查阅资源原文:http://www.linuxidc.com/Linux/2016-09/135546.htm
版权声明,转载请注明出处:http://www.cnblogs.com/summary-2017/p/7248313.html
ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程”的异常的更多相关文章
- ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序
服务器上某个数据库出现' ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误,要解决该问题首先查看一下数据库现有的进程数,是否已经达到参数processes的大小. 使用 ...
- 【ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序】
服务器上某个数据库出现' ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误,要解决该问题首先查看一下数据库现有的进程数,是否已经达到参数processes的大小. 取得 ...
- Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务、ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序
问题1:ORA-12154: TNS: 无法解析指定的连接标识符 在一台服务器上部署了Oracle客户端,使用IP/SID的方式访问,老是报ORA-12154错误,而使用tnsnames访问却没有问题 ...
- 转载:ORA-12516 “TNS监听程序找不到符合协议堆栈要求的可用处理程序” 解决方案
ORA-12516 “TNS监听程序找不到符合协议堆栈要求的可用处理程序” 解决方案 简单描述一下场景,总共两台应用服务器,每台安装3个tomcat进行集群,并通过nginx做了负载均衡,今天在生 ...
- Oracle"TNS监听程序找不到符合协议堆栈要求的可用处理程序"解决方案
问题描述:在使用ETL工具通过odbc方式连接Oracle进行数据抽取的过程中,Oracle 监听日志报错如下: 根本原因就是Oracle的process和session已经达到了甚至超过了最大值,解 ...
- 记录一次 “ORA-12516:TNS:监听程序找不到符合协议堆栈要求的可用处理程序” 的处理过程
一.今天同事反馈业务化运行的数据中心库发生了oracle无法连接的情况,导致所有业务系统无法正常运作的问题.报:“ORA-12516:TNS:监听程序找不到符合协议堆栈要求的可用处理程序” 二.收到这 ...
- PLSQL连接数据库报监听程序找不到符合协议堆
服务器上某个数据库出现' ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误,要解决该问题首先查看一下数据库现有的进程数,是否已经达到参数processes的大小 根 ...
- ORA-12504:tns:监听程序在 CONNECT_DATA中未获得SERVICE_NAME
在VS2008中创建一个数据源时,提示以下错误 “ORA-12504:tns:监听程序在 CONNECT_DATA中未获得SERVICE_NAME” 本机安装ORACLE客户端,找出以下路径的文件D: ...
- (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...
随机推荐
- Safari Private 模式下 localStorage 的问题
现如今好多浏览器都有「隐身模式」,Safari 管这叫「Private Browing」,国内各种牌子的套壳浏览器叫「无痕浏览」.私以为从命名上来说,倒是国内更中文一些. 这种模式下浏览网页踏雪无痕, ...
- read命令读取用户输入
read命令用于从终端或文件中读取用户输入,它读取整行输入,如果没有指定名称,读取的行被赋值给内部变量REPLY.read命令常用选项:-a,-p,-s,-t,-n 1.REPLY变量 $readhe ...
- JAVA下JSON的类型输出及使用
JSON类型的输出: import java.util.ArrayList; import java.util.HashMap; import net.sf.json.JSONArray; impor ...
- [转] .NET领域驱动设计—初尝(疑问、模式、原则、工具、过程、框架、实践)
阅读目录: 1.1.疑问 1.1.1.UML何用 1.1.2.领域建模 1.2.模式 1.3.原则 1.5.过程 1.6.框架 1.7.项目演示 最近在研究DDD颇有收获,所以整理出来跟大家分享,共同 ...
- Vue.js组件之间的通信
导语:组件之间的关系不外乎两种, 父子组件和非父子组件,本文将对两类组件之间的通信方式进行详细阐述. 父子组件间的通信 通信方式1(单向绑定): Props down, Events up (建议使用 ...
- AngularJS高级程序设计读书笔记 -- 服务篇
服务是提供在整个应用程序中所使用的任何功能的单例对象. 单例 : 只用一个对象实例会被 AngularJS 创建出来, 并被程序需要服务的各个不同部分所共享. 1. 内置服务 一些关键方法也被 Ang ...
- 有关Dom的一些操作
学习前端的都会了解到一些Dom操作,让我们来看看Dom操作有哪些吧! DOM(即 Document Object Mode) 是 W3C(万维网联盟)的标准. DOM 定义了访问 HTML 和 XML ...
- Qlik报表开发见解
因为项目需要,最近去做了Qlik Sense报表开发,学习了Qlik报表的开发方法和一些基础的开发模式,以下是我对Qlik报表开发的一些见解,个人水平有限,欢迎大神指导. 1.Qlik Sense的函 ...
- Kubernetes部分Volume类型介绍及yaml示例
1.EmptyDir(本地数据卷) EmptyDir类型的volume创建于pod被调度到某个宿主机上的时候,而同一个pod内的容器都能读写EmptyDir中的同一个文件.一旦这个pod离开了这个宿主 ...
- Android 7.0 安装器安装过程分析 (com.android.packageinstaller)
1 安装入口PackageInstallerActivity,这个类只是在安装前做准备.通过各种校验,然后弹出被安装应用的权限框,等待用户安装.具体的流程如下 1.1 求mSessionId 如果是 ...