博客分类:

 

Tomcat服务器下的应用连接Oracle时报错,出现以下异常:

java.sql.SQLException: Io 异常: Got minus one from a read call

查询数据库连接情况:

  1. SQL> select username,count(username) from v$session where username is not null group by username;
  2. USERNAME                       COUNT(USERNAME)
  3. ------------------------------ ---------------
  4. SP2                                         33
  5. YWTWEBDB                                    14
  6. SYS                                          2
  7. INFO                                         1
  8. MF                                         658
  9. UC                                         183
  10. 6 rows selected.
  1. SQL> select count(*) from v$session where status='ACTIVE';
  2. COUNT(*)
  3. ----------
  4. 675

原因不明:表现是数据库的连接数比较大,临时处理是重启数据库,重启后解决,但估计不是最终的解决方法。。重启后的连接情况:

  1. 正常的时候的数据库连接数:
  2. SQL> select username,count(username) from V$SESSION where username is not null group by username ;
  3. USERNAME                       COUNT(USERNAME)
  4. ------------------------------ ---------------
  5. SP2                                         11
  6. YWTWEBDB                                     2
  7. SYS                                          1
  8. INFO                                         1
  9. MF                                          79
  10. MYJIN                                        1
  11. UC                                          19
  12. 7 rows selected.

以下收集了网上此问题的相关解决方法如下:

http://www.iteye.com/topic/1126453

http://blog.sina.com.cn/s/blog_529aacbd0100t22b.html

http://hi.baidu.com/xjieni/item/1afbff62dab025167cdecc21

摘录如下:

  1. 今日无意中用java连接oracle时,竟出现以下异常,甚是奇怪:
  2. Caused by: java.sql.SQLException: Io 异常: Got minus one from a read call
  3. at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
  4. at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
  5. at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
  6. at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:404)
  7. at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
  8. at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314) ....
  9. 问题在重新启动应用后,应用连接oracle时出错,无法启动应用。
  10. 最后重新启动oracle11g的服务,没有问题了,但是还没有找到具体原因。
  11. 后来在另外一台应用上也发现同样问题,发现问题的严重性,经过分析可能是驱动问题;在不重新启动oracle11g服务的情况下,替换最新版本的jdbc驱动包,问题解决;
  12. 出问题的ojdbc14.jar版本:(查看jar包的MANIFEST.MF文件)
  13. Manifest-Version: 1.0
  14. Specification-Title:    Oracle JDBC driver classes for use with JDK14
  15. Sealed: true
  16. Created-By: 1.4.2_08 (Sun Microsystems Inc.)
  17. Implementation-Title:   ojdbc14.jar
  18. Specification-Vendor:   Oracle Corporation
  19. Specification-Version:  Oracle JDBC Driver version - "10.2.0.1.0"
  20. Implementation-Version: Oracle JDBC Driver version - "10.2.0.1.0"
  21. Implementation-Vendor:  Oracle Corporation
  22. Implementation-Time:    Wed Jun 22 11:19:45 2005
  23. Name: oracle/sql/converter/
  24. Sealed: false
  25. Name: oracle/sql/
  26. Sealed: false
  27. Name: oracle/sql/converter_xcharset/
  28. Sealed: false
  29. 解决问题的ojdbc14.jar版本:
  30. Manifest-Version: 1.0
  31. Specification-Title:    Oracle JDBC driver classes for use with JDK14
  32. Sealed: true
  33. Created-By: 1.4.2_14 (Sun Microsystems Inc.)
  34. Implementation-Title:   ojdbc14.jar
  35. Specification-Vendor:   Oracle Corporation
  36. Specification-Version:  Oracle JDBC Driver version - "10.2.0.4.0"
  37. Implementation-Version: Oracle JDBC Driver version - "10.2.0.4.0"
  38. Implementation-Vendor:  Oracle Corporation
  39. Implementation-Time:    Sat Feb  2 11:40:29 2008
  40. Name: oracle/sql/converter/
  41. Sealed: false
  42. Name: oracle/sql/
  43. Sealed: false
  44. Name: oracle/sql/converter_xcharset/
  45. Sealed: false
  1. Caught: java.sql.SQLException: Io 异常: Got minus one from a read call
  2. 使用JDBC连接Oracle时,多次出现上述错误,后来去网上找了下,基本提供的方法有这么几种:
  3. 1:数据库连接满了,扩大数据库连接池
  4. 2:所登录的机子IP不在sqlnet.ora内,加入后重启listerner即可
  5. 3:数据库负载均衡时,指定了(SERVER=DEDICATED),去除这个即可
  6. 4:网管在Oracle配置上限制了该台机子访问Oracle的权限,这个问题基本和2类似,也是修改Oracle配置即可;
  7. 正在寻找解决办法,现在数据库不归我管,不能重启,扩大连接池治标不治本,而且数据库连接池是我自己写的,盲目的扩大会造成其他用户访问的多种问题,最好是能销毁之前创建的那些链接。哎,这就是代码不规范的坏处啊。创建Connection的时候一定不能忘了close,就算连接池也不要忘了returnConnection啊。
  1. 因为,数据库一直都是正常的,所以不可以是那些配置之类的错误。
  2. 后面DBA查了些东西后,给出结论说是,系统资源不够了。
  3. --查看系统资源
  4. SELECT   resource_name,
  5. current_utilization,
  6. max_utilization,
  7. LIMIT,
  8. ROUND (max_utilization / LIMIT * 100) || '%' rate
  9. FROM   (SELECT   resource_name,
  10. current_utilization,
  11. max_utilization,
  12. TO_NUMBER (initial_allocation) LIMIT
  13. FROM   v$resource_limit
  14. WHERE   resource_name IN ('processes', 'sessions')
  15. AND max_utilization > 0);
  16. RESOURCE_NAME                  CURRENT_UTILIZATION MAX_UTILIZATION      LIMIT RATE
  17. ------------------------------ ------------------- --------------- ---------- -----
  18. processes                                      312             500        500 100%
  19. sessions                                       317             509        555 92%
  20. 发现是资源不足。
  21. 处理方法是:
  22. alter system set processes=1000 scope=spfile;
  23. alter system set sessions=1110 scope=spfile; 然后重启数据库
  24. 只是,我重启之后值也都下降了,估计还有其他原因导致资源不足的吧。

java.sql.SQLException: Io 异常: Got minus one from a read call的更多相关文章

  1. NC57访问报错:java.sql.SQLException: Io 异常: Got minus one from a read call

    一.报错信息 1.  前端登录界面 2.  后台应用日志 报错信息一致为: $$callid= $$thread=[Service Monitor and Runtime Enroment] $$ho ...

  2. java.sql.SQLException: Io 异常: Connection reset

    当数据库连接池中的连接被创建而长时间不使用的情况下,该连接会自动回收并失效,但客户端并不知道,在进行数据库操作时仍然使用的是无效的数据库连接,这样,就导致客户端程序报“ java.sql.SQLExc ...

  3. java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186646784)(ERR=12505)(ERR

    dbc 链接orcal出错 java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186646784)( ...

  4. spring+ibatis问题1—— 程序报错:java.sql.SQLException: Io 异常: Connection reset by peer, socket write error; ”或“java.sql.SQLException 关闭的连接”异常

    转自:http://blog.sina.com.cn/s/blog_1549fb0710102whz2.html spring+ibatis程序测试时报错:java.sql.SQLException: ...

  5. java.sql.SQLException: Io 异常: Invalid number format for port number

    java.sql.SQLException: Io 异常: Invalid number format for port number   jdbc数据库链接配置没有写端口号 ​ 要检查jdbc的配置 ...

  6. nested exception is java.sql.SQLException: IO 错误

    1.错误描述 (mx.messaging.messages::ErrorMessage)#0 body = (null) clientId = "18CE3B03-9709-9DA8-763 ...

  7. java.sql.SQLException: 关闭的连接 解决办法

    程序如果长时间不进行数据库操作,那么数据源中的 Connection 很可能已经断开.其原因有可能是防火墙,或者连接的数据库设置的超时时间.这里使用的是 C3P0 连接 oracle 数据库,引起的异 ...

  8. presto——java.sql.SQLException: Error executing query与javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?异常问题

    使用presto的时候以mysql为presto的数据源 安装的presto是0.95版本:使用的presto-jdbc是0.202的,这里使用jdbc去访问时候,connection可以链接成功,但 ...

  9. HiveServer2 的jdbc方式创建udf的修改(add jar 最好不要使用),否则会造成异常: java.sql.SQLException: Error while processing statement: null

    自从Hive0.13.0开始,使用HiveServer2 的jdbc方式创建udf的临时函数的方法由: ADD JAR ${HiveUDFJarPath} create TEMPORARY funct ...

随机推荐

  1. 【BZOJ2440】完全平方数 [莫比乌斯函数]

    完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 小X自幼就很喜欢数. 但奇怪的是 ...

  2. bzoj3669: [Noi2014]魔法森林 lct版

    先上题目 bzoj3669: [Noi2014]魔法森林 这道题首先每一条边都有一个a,b 我们按a从小到大排序 每次将一条路劲入队 当然这道题权在边上 所以我们将边化为点去连接他的两个端点 当然某两 ...

  3. [POJ1595]欧拉线性筛(虽然这道题不需要...)

    欧拉线性筛. 对于它的复杂度的计算大概思考了很久. procedure build_prime; var i,j:longint; begin fillchar(vis,sizeof(vis),tru ...

  4. Logistic函数

    Logistic函数(又称sigmoid函数)        Logistic函数或Logistic曲线是一种常见的S形函数,它是皮埃尔·弗朗索瓦·韦吕勒在1844或1845年在研究它与人口增长的关系 ...

  5. Ansible 创建用户 Playbook 脚本

    创建用户,设置wheel组sudo不需要密码,然后将用户添加到wheel组,并将用户的公钥传输到节点上: --- - name: Linux Create User and Upload User P ...

  6. java servlet输出数据

    httpServletResponse.setContentType("text/html;charset=UTF-8"); httpServletResponse.getWrit ...

  7. 几种常用排序算法的python实现

    1:快速排序 思想: 任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序. 一趟快速排序的算法是: 1)设置 ...

  8. KDJ金叉测试

    # -*- coding: utf-8 -*- import os import pandas as pd # ========== 遍历数据文件夹中所有股票文件的文件名,得到股票代码列表stock_ ...

  9. python 判断平年还是闰年

    while 1: s = input('请填入一个年份:') s = int(s) year = False if s % 100 == 0 and s % 400 == 0: year = True ...

  10. Mysql缺少可执行的命令

    MySQL问题解决:-bash:mysql:command not found 问题:       [root@linux115 /]# mysql -uroot -p        -bash: m ...