概述
应用报错:
java.sql.SQLRecoverableException:IO 错误:Got minus one from a read call
据开发人员描述:起多个服务,最后服务的时候报这个错,无论最后的服务是啥,提供的报错日志
是java.sql.SQLRecoverableException:IO 错误:Got minus one from a read call
原因:
当应用连接数据库时,是通过连接池的机制进行连接的,数据库参数:max-session决定连接池的
大小,而应用同样也有一个参数,这个参数表示它连接数据库连接池所占用的最少资源。
例如:总共有10个应用需要连接数据库,如果每个应用连接数据库的最小连接数为10,那么10个应用总共会
有100个连接,这样就要求数据库连接池的max-session必须大于100,否则就会报“ Got minus one from a read call”的错误。
解决方法:
修改max-session
1. 查看processes和sessions参数
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 50
SQL> show parameter sessions
NAME TYPE VALUE
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 60
shared_server_sessions integer
2. 修改processes和sessions值
SQL> alter system set processes=300 scope=spfile;
系统已更改。
SQL> alter system set sessions=335 scope=spfile;
系统已更改。
3. 修改processes和sessions值必须重启oracle服务器才能生效
ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
sessions=(1.1*process+5)
4.重启Oracle
shutdown immediate;
startup;
5.再查看processes和sessions参数
SQL> show parameter processes
NAME TYPE VALUE
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 300
processes integer 50
SQL> show parameter sessions
NAME TYPE VALUE
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 335
shared_server_sessions integer
修改生效。
最后
以上就是漂亮水壶为你收集整理的报错解决:java.sql.SQLRecoverableException:IO 错误:Got minus one from a read call的全部内容,希望文章能够帮你解决报错解决:java.sql.SQLRecoverableException:IO 错误:Got minus one from a read call所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复