SQL Error: 17002 Cannot open connection 修改oracle数据库连接数
现象:
tomcat启动一段时间后,抛出异常,异常信息如下:
2011-03-10 16:15:00,579 WARN [org.hibernate.util.JDBCExceptionReporter] - <SQL Error: 17002, SQLState: null>
2011-03-10 16:15:00,579 ERROR [org.hibernate.util.JDBCExceptionReporter] - <Io exception: Got minus one from a read call>
2011-03-10 16:15:00,579 WARN [org.hibernate.util.JDBCExceptionReporter] - <SQL Error: 17002, SQLState: null>
2011-03-10 16:15:00,579 ERROR [org.hibernate.util.JDBCExceptionReporter] - <Io exception: Got minus one from a read call>
2011-03-10 16:15:00,580 DEBUG [org.springframework.jdbc.support.SQLErrorCodeSQLException
数据库无法连接导致程序抛出异常。
原因:
导致上述错误的原因是,oracle在提供服务过程中会有一个连接数的限制,当连接数的数量超过它的限定值时(一般默认为150),外部连接就会被拒绝(ERROR-IO异常:Connection refused)
错误原因一般有:
1.程序员在程序中创建了数据库连接,当多用户使用系统时,连接数很容易达到连接限制。
2.当系统负荷较大时,连接数也可能达到这个上限。
解决方法:
修改oracle的连接数限制
1.查看oracle的当前连接数限制
select value from v$parameter where name = 'processes'
2.更改oracle连接数
alter system set processes = 300 scope = spfile;
以上操作需要数据库管理员权限才能执行,操作后需重启数据库,连接才生效;