[转帖]ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3035 | 回复: 1   主题: [转帖]ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案        上一篇   下一篇 
早起的猫
注册用户
等级:新兵
经验:71
发帖:1
精华:0
注册:2017-3-27
状态:离线
发送短消息息给早起的猫 加好友    发送短消息息给早起的猫 发消息
发表于: IP:您无权察看 2019-9-16 16:39:47 | [全部帖] [楼主帖] 楼主

简单描述一下场景,总共两台应用服务器,每台安装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;


注意一下processes的值和sessions的值,Oracle官方文档中要求:

sessions=processes*1.5+5


也就是说sessions的值是根据processes的值计算后得到的,这里需要注意一下,最后重启一下Oracle服务即可,此时再分别开启应用服务器2的3个tomcat并依次访问主页后再看一下process和session的参数值和占用值情况:
北京联动北方科技有限公司
如上图,可以看到process的值已经成功修改为1000,而此时开启了6个tomcat所占用的process值为378,session的占用值为375,都远远小于参数值,所以至此项目均已可以正常访问。

简单记录一下这个Oracle异常的解决方案,希望对遇到同样问题的朋友有所帮助,The End。




赞(0)    操作        顶端 
联动大白
注册用户
等级:列兵
经验:91
发帖:0
精华:0
注册:2015-5-27
状态:离线
发送短消息息给联动大白 加好友    发送短消息息给联动大白 发消息
发表于: IP:您无权察看 2019-10-18 0:30:00 | [全部帖] [楼主帖] 2  楼

为了方便大家阅读,我对文章中错误号来解释一下吧!

Error Id: ORA-12516

Title: TNS:listener could not find available handler with matching protocol stack

Description:

TNS:listener could not find available handler with matching protocol stack

Action:

Check to make sure that the service handlers (e.g. dispatchers) for the given SERVICE_NAME are registered with the listener, are accepting connections, and that they are properly configured to support the desired protocols.

Cause:

None of the known and available service handlers for the given SERVICE_NAME support the client’s protocol stack: transport, session, and presentation protocols.


也许你已明白,但对一个人有用也是我存在的理由!^_^ By:持之以恒的大白

-- 来自: 北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论