ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄
2016-04-22 13:39
447 查看
ORA-12516:TNS:监听程序无法找到匹配协议栈的可用句柄
使用PL/SQLDeveloper数据库远程客户端连接程序连接数据库:
错误信息:
ORA-12516:TNS:监听程序无法找到匹配协议栈的可用句柄.
TNS-12516TNS:listenercouldnotfindavailablehandlerwithmatchingprotocolstack
导致原因可能为:
1.一般是由于数据库的当前会话数不满足造成的,相关的参数有两个:processes和sessions
(1)首先查看当前这两个参数的值
sql>conn/assysdba
sql>selectcount(*)fromv$session;从这里可以看出当前的session数
sql>showparameterprocesses;从输出的信息可以看到当前数据库中参数processes的值
sql>showparametersessions;从输出的信息可以看到当前数据库中参数sessions的值
这二者的关系是:sessions=(1.1*processes+5)
(2)修改这两个参数
altersystemsetprocesses=300scope=spfile;
altersystemsetsessions=335scope=spfile;
(3)重新启动数据库服务,使这两个参数生效。
(4)如果数据库服务无法正常启动,则可能是solaris10系统参数seminfo_semmns设置的偏小,因为每个process会占用一个semmns,semmns调整后需要重新启动操作系统。
semmns的计算公式为:SEMMNS>processes+instance_processes+system
processes=数据库参数processes的值instance_processes=5(smon,pmon,dbwr,lgwr,arch)
2.可能是tnsnames.ora文件中的配置的"SERVICE_NAME="和对应值(数据库名称)中间多了个空格,需要去掉之间的空格,好像有没有空格没有影响,已验证(可能有时候是这样引发ORA-12516)
3.如果做以上操作仍无法排除ORA-12516,需要做最后尝试:单独重启启动databasenameSeverice(databasename:是要连接目标数据库而引发ORA-12516错误的目标数据库名称)
已尝试:有效
(4)listener.log日志太大引发的,listener.log日志记录了通过listener处理的网络请求信息,它包含客户端请求的时间,连接方式(专用或共享),连接程序,网络协议,主机名,网络端口号等信息,listener.log的文件内容没有太大意义,可以不让listener写日志。
操作时:#在listener.ora文件最后加入一行:logging_listener=off
应用程序连接测试数据库时报ORA-12516:TNS:listenercouldnotfindavailablehandlerwithmatchingprotocolstack
检查监听日志文件,发现大量的TNS-12516错误
cd/u01/app/oracle/product/10.2.0/db_1/network/log
morelistener.log
登录数据库,检查参数session时,出现ORA-01012:notloggedon
治标治本的解决办法是修改processes参数值,但是此时数据库连接不上。可以通过下面方法解决:
1:停止监听服务,等数据库访问连接数下降用户再登录。
lsnrctlstop
2:sqlplus"/assysdba"登陆后,修改processes值。
由于是测试数据库,可以折腾一下,如果不想修改processes的值,可以通过下面临时解决方法解决问题
1:重启监听服务
lsnrctlreload
2:sqlplus"/assysdba"登陆后
shutdonwnabort
startup
3:ps-ef|grepora_dbw0_$Oracle_SID
kill-9pid;
startup--重启数据库
参考资料:
/article/8250032.html
http://blog.csdn.net/dingli312/article/details/11394753
/article/1456755.html
作者:潇湘隐者
出处:http://www.cnblogs.com/kerrycode/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
使用PL/SQLDeveloper数据库远程客户端连接程序连接数据库:
错误信息:
ORA-12516:TNS:监听程序无法找到匹配协议栈的可用句柄.
TNS-12516TNS:listenercouldnotfindavailablehandlerwithmatchingprotocolstack
导致原因可能为:
1.一般是由于数据库的当前会话数不满足造成的,相关的参数有两个:processes和sessions
(1)首先查看当前这两个参数的值
sql>conn/assysdba
sql>selectcount(*)fromv$session;从这里可以看出当前的session数
sql>showparameterprocesses;从输出的信息可以看到当前数据库中参数processes的值
sql>showparametersessions;从输出的信息可以看到当前数据库中参数sessions的值
这二者的关系是:sessions=(1.1*processes+5)
(2)修改这两个参数
altersystemsetprocesses=300scope=spfile;
altersystemsetsessions=335scope=spfile;
(3)重新启动数据库服务,使这两个参数生效。
(4)如果数据库服务无法正常启动,则可能是solaris10系统参数seminfo_semmns设置的偏小,因为每个process会占用一个semmns,semmns调整后需要重新启动操作系统。
semmns的计算公式为:SEMMNS>processes+instance_processes+system
processes=数据库参数processes的值instance_processes=5(smon,pmon,dbwr,lgwr,arch)
2.可能是tnsnames.ora文件中的配置的"SERVICE_NAME="和对应值(数据库名称)中间多了个空格,需要去掉之间的空格,好像有没有空格没有影响,已验证(可能有时候是这样引发ORA-12516)
3.如果做以上操作仍无法排除ORA-12516,需要做最后尝试:单独重启启动databasenameSeverice(databasename:是要连接目标数据库而引发ORA-12516错误的目标数据库名称)
已尝试:有效
(4)listener.log日志太大引发的,listener.log日志记录了通过listener处理的网络请求信息,它包含客户端请求的时间,连接方式(专用或共享),连接程序,网络协议,主机名,网络端口号等信息,listener.log的文件内容没有太大意义,可以不让listener写日志。
操作时:#在listener.ora文件最后加入一行:logging_listener=off
ORA-12516:TNS:listenercouldnotfindavailablehandlerwithmatchingprotocolstack
应用程序连接测试数据库时报ORA-12516:TNS:listenercouldnotfindavailablehandlerwithmatchingprotocolstack检查监听日志文件,发现大量的TNS-12516错误
cd/u01/app/oracle/product/10.2.0/db_1/network/log
morelistener.log
TNS-12516:TNS:listenercouldnotfindavailablehandlerwithmatchingprotocolstack
13-MAY-201414:49:35*(CONNECT_DATA=(SERVICE_NAME=xxx)(CID=(PROGRAM=c:\windows\system32\inetsrv\w3wp.exe)(HOST=GET08C0058)(USER=SYSTEM)))*(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.xxx.xxx)(PORT=4594))*establish*xxx*12516
登录数据库,检查参数session时,出现ORA-01012:notloggedon
[oraescm@lnxtest~]$sqlplus/assysdba
SQL*Plus:Release10.2.0.4.0-ProductiononTueMay1314:29:572014
Copyright(c)1982,2007,Oracle.AllRightsReserved.
Connected.
SQL>showparametersession;
ERRORatline1:
ORA-01012:notloggedon
治标治本的解决办法是修改processes参数值,但是此时数据库连接不上。可以通过下面方法解决:
1:停止监听服务,等数据库访问连接数下降用户再登录。
lsnrctlstop
2:sqlplus"/assysdba"登陆后,修改processes值。
由于是测试数据库,可以折腾一下,如果不想修改processes的值,可以通过下面临时解决方法解决问题
1:重启监听服务
lsnrctlreload
2:sqlplus"/assysdba"登陆后
shutdonwnabort
startup
3:ps-ef|grepora_dbw0_$Oracle_SID
kill-9pid;
startup--重启数据库
参考资料:
作者:
出处:
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
相关文章推荐
- Linux Kernel Release Versions
- 线程
- 作业调度
- ThinkPHP集成阿里支付
- MySQL 批量插入 Update时Replace
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- document.body / document.ducumentElement /等获取高度和宽度的区别 ----转载
- Python yield 使用浅析
- 【学习C++】C++ Primer Plus (第六版)第八章编程练习1-7
- .net如何发送格式化的文本内容
- jcenter 的一点总结
- js跨域访问,No ‘Access-Control-Allow-Origin‘ header is present on
- leetcode——337—— House Robber III
- Spring Junit4 测试Web应用程序
- hdu 5667
- Ubuntu下rm;rmdir;rm -rf;学习
- 一个貌似被恶意攻击的事情。。。。。。
- iOS开发-取消导航栏渲染问题(适应各种渲染问题)
- My97 DatePicker怎么禁止右键 触发的链接
- The type org.apache.http.HttpResponse cannot be resolved. It is indirectly referenced from required