SQL ERROR 17002

来源:互联网 发布:迅雷校园招聘java笔试 编辑:程序博客网 时间:2024/06/05 00:14
 

SQLError:17002 Cannot open connection 修改oracle数据库连接数  

2011-05-05 15:38:42|  分类:oracle |  标签:|字号 订阅

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.SQLErrorCodeSQLExceptionTranslator] - <Translating SQLException withSQL state 'null', error code '17002', message [Io exception: Got minus one from a read call]; SQL was [???] for task [Hibernate operation: Cannot open connection]>

 

数据库无法连接导致程序抛出异常。

 

原因:
导致上述错误的原因是,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;

 

以上操作需要数据库管理员权限才能执行,操作后需重启数据库,连接才生效;