美文网首页
报错解决:java.sql.SQLRecoverableExce

报错解决:java.sql.SQLRecoverableExce

作者: 平面小狮子 | 来源:发表于2020-05-28 14:24 被阅读0次

    应用报错: 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
    
    1. 修改processes和sessions值
    SQL> alter system set processes=300 scope=spfile;
    系统已更改。
    SQL> alter system set sessions=335 scope=spfile;
    系统已更改。
    
    1. 修改processes和sessions值必须重启oracle服务器才能生效
    ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
    sessions=(1.1*process+5)
    
    1. 重启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.SQLRecoverableExce

          本文链接:https://www.haomeiwen.com/subject/hcxaahtx.html