##ORA-12518, TNS:listener could not hand off client connection 解决方案:
问题:
1 | org.apache.cxf.interceptor.Fault: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [66000]; error code [12518]; Listener refused the connection with the following error: |
数据库系统环境说明:
IBM 3850 M2 / x3950 M2
cpu 8
内存 16G
win2003 enterprise Edition (5.2.3790 sp2)
oracle 11g (11.1.0.6.0)版本
分析问题:
遇到问题可以百度搜索,根据你的实际情况分析具体原因,并以最小的代价解决问题。
网上提到导致 ORA-12518错误的可能原因为:
一是session值过小,或用尽。
二是processes值设的过小,
三是需要增加参数DISPATCHERS。
首先获取上述中提及的参数值。
1)、查看session会话数:
select count(*) from v$session; –取得数据库目前的会话数。
select value from v$parameter where name = ‘sessions’; –取得会话数的上限。
select * from v$session; –查看会话连接情况
查看当前process和sessions是否接近上限值。若接近,可以将其增大。
当前session数 140
会话数的上限 170
确认当前session数的连接情况,都有哪些连接。
其中101条为JDBC Thin Client 46条为plsqldev.exe连接。
2)、使用plsql连接到oracle,查看process进程数:
select count(*) from v$process; –取得数据库目前的进程数。
select value from v$parameter where name = ‘processes’; –取得进程数的上限。
目前的进程数:147
进程数的上限 :150
3)、采用专有连接方式
DISPATCHERS涉及到连接方式问题,这里默认采用专有连接方式。 关于连接方式参见 资料2
第二,存在问题:
1、session 与process 配置不合理。
2、非生产应用程序占用session。
注:在访问量不大时,150左右是问题不大的。访问量大时需要增加。
第三,处理方案:
1、关闭非生产应用占用的连接,如:plsqldev。 关闭后,测试验证问题消失。
2、调整process和session数。
1).调整这两个参数值大小。
系统进程数process和系统会话数session之间存在一个关系:
process数=session数*1.1+5
我们在配置时参考该规律进行设定。
a) 修改process值
1 | alter system set processes=1000 scope=spfile; --将process值改为1000 |
b) 修改session值
1 | alter system set sessions=1105 scope=spfile; --将sessions值改为1105 |
2). 备份pfile,重启oracle
a) 修改完成后,备份pfile
1 | create pfile from spfile; --从spfile(运行时配置)创建pfile(系统配置) |
c) 重启oracle
重启的方法有很多种,可以重启oracle服务,或者重启数据库。Windows下可以直接重启服务。
在修改process遇到问题 “ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFILE” 参考资料3
参考资料:
1、问题处理方案
http://blog.csdn.net/estelle_belle/article/details/40621245
http://www.cnblogs.com/chinhr/archive/2011/10/11/2207528.html
http://blog.csdn.net/yanyaocrystal/article/details/52105846
2、关于连接方式
http://www.2cto.com/database/201504/391158.html
http://blog.sina.com.cn/s/blog_6d6e54f70100z12o.html
3、ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFILE
http://blog.csdn.net/haiross/article/details/41696035
4、关于spfile 与pfile
http://www.cnblogs.com/kerrycode/p/3254154.html
http://blog.csdn.net/test_me/article/details/5678316