当前位置: 首页 > news >正文

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

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


前言
 

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

转载于:https://www.cnblogs.com/DylanZ/p/8690391.html

相关文章:

  • 深入浅出MyBatis:反射和动态代理
  • 阿里云服务器 从0 配置Node Nginx 免密ssh 等 环境实现 pm2一键线上部署
  • C# 谁改了我的代码 使用 Resharper 快速做适配器
  • 学不好Linux?我们分析看看正确的学习方法是什么
  • openssl的应用及创建CA
  • 基于zookeeper的高可用Hadoop HA集群安装
  • 归并排序的相关用法
  • 前端js -- this指向总结。
  • 理解Java集合(三)Map : HashMap/SortedMap/TreeMap
  • java io流
  • Heap Dump (heap=dump)
  • 配置Etcd集群和TLS认证
  • 学习最重要是方法,管理最重要是高度
  • git分支管理和工作流规范:不同场景细化和演示
  • JSON返回DateTime/Date('123123123')/解决办法
  • Google 是如何开发 Web 框架的
  • angular组件开发
  • ES6 学习笔记(一)let,const和解构赋值
  • Javascript基础之Array数组API
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • node和express搭建代理服务器(源码)
  • Vue学习第二天
  • windows-nginx-https-本地配置
  • 初识 webpack
  • 代理模式
  • 高性能JavaScript阅读简记(三)
  • 精彩代码 vue.js
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端面试之闭包
  • 深度学习中的信息论知识详解
  • 实习面试笔记
  • 手写双向链表LinkedList的几个常用功能
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 用jquery写贪吃蛇
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #define 用法
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (70min)字节暑假实习二面(已挂)
  • (poj1.3.2)1791(构造法模拟)
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (一)80c52学习之旅-起始篇
  • (转)Android学习笔记 --- android任务栈和启动模式
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net IE10 _doPostBack 未定义
  • .Net mvc总结
  • .NET Reactor简单使用教程
  • .Net Remoting(分离服务程序实现) - Part.3
  • .Net8 Blazor 尝鲜
  • /usr/bin/env: node: No such file or directory
  • @Transactional 详解