报错解决:java.sql.SQLRecoverableException:IO 错误:Got minus one from a read call
迪丽瓦拉
2025-06-01 17:43:58
0

报错解决:java.sql.SQLRecoverableException:IO 错误:Got minus one from a read call

应用报错:

      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 processesNAME                                  TYPE         VALUEdb_writer_processes                  integer     1gcs_server_processes                 integer     0job_queue_processes                  integer     10log_archive_max_processes            integer     2processes                            integer     50SQL> show parameter sessionsNAME                                  TYPE         VALUElicense_max_sessions                 integer     0license_sessions_warning             integer     0logmnr_max_persistent_sessions       integer     1sessions                             integer     60shared_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 processesNAME                                  TYPE         VALUEdb_writer_processes                  integer     1gcs_server_processes                 integer     0job_queue_processes                  integer     10log_archive_max_processes            integer    300processes                            integer     50SQL> show parameter sessionsNAME                                  TYPE         VALUElicense_max_sessions                 integer     0license_sessions_warning             integer     0logmnr_max_persistent_sessions       integer     1sessions                             integer    335shared_server_sessions               integer

相关内容