如何更改Oracle连接数的限制
java系统在运行过程中,有时候会抛出如下错误,如:
WARN - SQL Error: 17002, SQLState: null
ERROR - Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)
(ERR=125
19)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4))))
WARN - SQL Error: 17002, SQLState: null
ERROR - Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)
(ERR=125
19)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4))))
WARN - Unhandled Exception thrown: class org.springframework.transaction.CannotC
reateTransactionException
ERROR - Could not open Hibernate Session for transaction; nested exception is or
g.hibernate.exception.GenericJDBCException: Cannot open connection
以上错误的最终描述为 JDBCException: Connot open connection
出现上述错误的原因是,Oracle在提供服务过程当中会有一个连接数的限制,当连接数的数量
超过它的限定值时(一般默认为150),外部程序的连接就会被拒绝:(ERROR - Io 异常:
Connection refused).
出现这种错误的原因一般有两种:
1.程序员在action中创建了数据库连接,当多用户使用系统时,连接数会很容易达到连接上限.
2.排除第一种情况,当系统负荷较大时,连接数也有可能达到这个上限.
为解决这种问题,我们就需要修改Oracle的连接数限制.
修改办法有两种:
a、以sysdba身份登陆PL/SQL 或者 Worksheet, 在命令行窗口(不是SQL窗口)执行如下
命令:
show parameter processes; 显示结果如下图:
其中process 即为连接数的最大值.
b.更改系统连接数
alter system set processes=1000 scope=spfile;
c.创建pfile
create pfile from spfile; d.重启Oracle服务和tomcat.
如我的oracle安装在D盘:
打开这个初始化文件,找到其中的 # Processes and Sessions 参数:
###########################################
# Processes and Sessions
###########################################
processes=150
更改150 为300 或1000.
然后保存,重启Oracle和TOMCAT.