Oracle ORA-12516 错误解析
(2007-05-09 17:20:51)
转载
分类:Oracle数据库
五一期间,负责的内蒙项目的数据库连接的时候突然出现“ORA-12516: TNS: 监听程序不到符合协议堆栈要求的可用处理程”的异常,很是郁闷!!可看看Tomcat还在正常连接着,可PL/SQL怎么着就登录不了,报这个异常,一时之间把我吓坏了,还以为数据库又出现什么问题了!!于是就赶紧去网上查查。得到了一系列的答案,其中下面这个我还是比较认可的。
ORA-12516:TNS:监听程序无法到匹配的信息栈的可用句柄错误
ORA-12520:解决方法:查了一下,原来是以前设置共享服务器时SESSION设了170,PROCESSES设了150,
共享服务器时就肯定够用,专用服务器就不行了,后来改为SESSION设555,PROCESSES设500。
重启数据库,正常了。
然后又马上再查了,PROCESSES已经达到140了,奇怪,不可能有这么多人,再查SESSION发现只有30多,
想了一下,哦!原来是共享服务器SHARED_SERVER设了100,就将它改成了10。解决方法:加大PROCESSES
后来,我把数据库给停了,但并没有按照上面的说法去增加PROCESSES,重新启动之后,连接就正常了,个人认为是访问量达到了设置的最大限,不过上面的解决方法是可以解决的,并且也比较彻底。如果大家以后再遇到这种问题,可以尝试着把PROCESSES放大来解决这个问题!!
ORA-12516错误的处理
分类:数据库Oracle技术2007-06-08 11:47 5734人阅读评论(1) 收藏举报
解决过程:
1、查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常逼近
SQL*Plus: Release 10.2.0.1.0- Production on星期一 10
月915:50:21 2006Copyright (c) 1982, 2005, Oracle. All rights reserv ed.
SQL> conn /as sysdba
已连接。SQL>select count(*) from v$session;
COUNT(*)----------
45
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer1
gcs_server_processes integer0
job_queue_processes integer10
log_archive_max_processes integer2
processes integer50
SQL> show parameter sessions
NAME TYPE VALUE
java_soft_sessionspace_limit integer 0l
icense_max_sessions integer0
license_sessions_warning integer0
logmnr_max_persistent_sessions integer1
sessions integer60
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 integer1
gcs_server_processes integer0
job_queue_processes integer10
log_archive_max_processes integer2
processes integer50
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
session数据错误是什么意思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不等。
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连接数太多报错-ORA-12516错误
IT猫扑技术2010-06-28 21:49来源:itmop作者:秩名点击: 次
系统上线,一下子有几百人用,数据库出现异常
ORA-12516: TNS: 监听程序不到符合协议堆栈要求的可用处理程
一开始以为数据库出了问题呢。
使用sqlplus连接以后,查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常逼近
Sql代码
1.SQL> select count(*) from v$session;
2.COUNT(*)----------
3. 88
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论