Oracle连接数太多报错-ORA-12516错误

系统上线,一下子有几百人用,数据库出现异常

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

一开始以为数据库出了问题呢。

使用sqlplus连接以后,查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常逼近

SQL> select count(*) from v$session;

COUNT(*)---------- 88

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 100

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 110

shared_server_sessions integer

2、修改processes和sessions值

SQL> alter system set processes=300 scope=spfile; 系统已更改。

SQL> alter system set sessions=335 scope=spfile; 系统已更改。

3、查看processes和sessions参数,但更改并未生效

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 100 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 110 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

其他:ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:

sessions=(1.1*process+5)

但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是/etc/proc/kernel 中semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,需要重新启动unix操作系统,参数才能生效。不过它的大小会受制于硬件的内存或ORACLE SGA。范围可从200——2000不等。

上面说的是unix,在RHEL5中, 就修改/etc/sysctl.conf里面的信号量:

kernel.sem   =   2000   32000   100   128     //传说中参数依次为SEMMSL(每个用户拥有信号量最大数);SEMMNS(系统信号量最大数);SEMOPM(每次semopm系统调用操作数);SEMMNI(系统信号量级数最大数).

所以要修改的是第二个参数

semmns的计算公式为:  SEMMNS>processes+instance_processes+system

processes=数据库参数processes的值

instance_processes=5(smon,pmon,dbwr,lgwr,arch)

system=系统所占用信号量。系统所占用信号量可用下列命令查出:

#ipcs -s

其中列NSEMS显示系统已占用信号量。

其它一些跟连接有关的参数,如 licence_max_sessions, licence_sessions_warning 等默认设置都为零,也就是没有限制。我们可以放心大胆地使用数据库了。

oracle报错12516,Oracle连接数太多报错-ORA-12516异常相关推荐

  1. oracle报609,案例:Oracle报错ORA-609 TNS-12537 TNS-12547 连接超时导致

    天萃荷净 生产数据库alert日志中出现错误信息ORA-609 TNS-12537 TNS-12547,分析原因为数据库inbound connect timeout默认为60导致 1.数据库aler ...

  2. oracle报01031错误,Oracle数据库shutdown报ORA-01031: insufficient privileg

    下午一位压测的同事找到我说一套压测的库连接报错,报错如下图: 要来ip和实例名登到服务器上看pmon进程还在 ps -ef |grep pmon 查看监听情况也是正常的 lsnrctl status ...

  3. sqlplus 登录oracle 报ERROR: ORA-01034:ORACLE not available ORA-27101:shared memory realm does not exit

    1 先看oracle的监听和oracle的服务是否都启动了.启动oracle监听: cmd的命令行窗口下,输入lsnrctl start,回车即启动监听. 2 查看oracle的sid叫什么,比如创建 ...

  4. mybatis批量插入oracle报表达式,mybatis oracle两种方式批量插入数据

    mybatis在oracle中批量插入数据时,单次批量大小有限制,批量插入时,单次批量过大,也会影响插入性能.故程序端也需要对应的限制. BEGIN insert into blacklist (id ...

  5. php 递归太多报错,PHP、递归 - 角落里的星辰的个人空间 - OSCHINA - 中文开源技术交流社区...

    //递归遍历文件 //递归:实现流程分析 /* *1.先找到父问题,定义函数,解决父问题(遍历给定路径文件里面的所有文件) *2.找出递归点,子问题调用自己的函数解决问题,(遍历文件下的所有文件) * ...

  6. php 递归太多报错,php – javascript太多的递归?

    我正在尝试创建一个脚本,在数据输入数据库后自动开始上传(我需要数据库用来上传文件的autoId). 当我运行javascript脚本运行php文件但它无法调用其他php来上传文件. too much ...

  7. oracle 报错总结

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  8. oracle ogg00423,【案例】Oracle报错PLS-00378 PLS-00439产生原因和MOS官方解决办法

    [案例]Oracle报错PLS-00378 PLS-00439产生原因和MOS官方解决办法 时间:2016-11-12 21:31   来源:Oracle研究中心   作者:代某人   点击: 次 天 ...

  9. oracle 6508,【案例】Oracle报错ORA-06552 ORA-06553 ORA-006508解决办法

    天萃荷净 Oracle研究中心案例分析:运维DBA反映Oracle数据库alert日志中出现大量ORA-06552 ORA-06553 ORA-006508报错,分析原因为存储过程异常导致,结合MOS ...

  10. oracle pls 00905,【案例】Oracle报错PLS-00714 PLS-00951原因和解决办法笔记

    [案例]Oracle报错PLS-00714 PLS-00951原因和解决办法笔记 时间:2016-11-14 11:07   来源:Oracle研究中心   作者:代某人   点击: 次 天萃荷净 P ...

最新文章

  1. Hibernate(1) 阻抗不匹配
  2. 《失业的程序员》(六):加班
  3. Android 中点击某个按钮实现 返回键 的功能
  4. luoguP5035金坷垃
  5. Linux(CentOS 7)安装docker
  6. 能量采集(HYSBZ-2005)
  7. 『中级篇』手动建立一个base Image(14)
  8. VS C++改变窗体背景色
  9. 时间管理——番茄工作法
  10. docker之部署一个不中毒的浏览器
  11. 台湾瑞昱Realtek RTL8153-VC-CG USB3.0 to lan简介
  12. 开学季:好好聊聊自己的大学生活
  13. 他在比亚迪30万变200亿,还是王传福的天使投资人
  14. ADO方法操作数据库
  15. IOS视频编辑,视频裁剪,视频拼接,音频处理,视频处理
  16. oracle10G 异构方式迁移表空间之二
  17. 个人开公司的流程及费用
  18. 2021-04-23 一年后第一次踢球
  19. libxml2的安装和使用
  20. Java程序编写----个人所得税计算器编写

热门文章

  1. 5. http://kb.cnblogs.com/page/90838/
  2. 19. jQuery 遍历
  3. 11.策略模式(Strategy Pattern)
  4. [2019杭电多校第三场][hdu6606]Distribution of books(线段树dp)
  5. 打开TestFlight并链接到具体的应用下载界面
  6. 【2018】面试复习大纲
  7. Android的存储方式
  8. SQL大圣之路笔记——SQL 行转列,列转行
  9. BST树、B树、B+树、B*树
  10. SaltStack之state.sls