博客分类:

 

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. [BZOJ3698]XWW的难题解题报告|上下界网络流|有源汇最大流

    XWW是个影响力很大的人,他有很多的追随者.这些追随者都想要加入XWW教成为XWW的教徒.但是这并不容易,需要通过XWW的考核.XWW给你出了这么一个难题:XWW给你一个N*N的正实数矩阵A,满足XW ...

  2. MyBatis系列三 之 使用getMapper剔除掉Dao的实现类

    MyBatis系列三  之  使用getMapper剔除掉Dao的实现类 我们在系列一 中 我们使用的是Dao的实现类   来操作底层数据库,今天我们使用getMapper()来替换Dao的实现类, ...

  3. 关于k Line Chart (k线图)

    K Line Chart python实现k线图的代码,之前找过matplotlib中文文档但是画k线图的finance方法已经弃用了.所以自己在网上搜寻一下加上改编,很好的实现出k线图, 代码如下: ...

  4. 遍历文档内容,得到HTML层级结构

    嗯..没发现有写好的,那就自己写一个,刚好自己今天看了DOM操作的知识点,巩固一下. HTML可以表示为一个层次结构,生成的DOM Tree 就是类似与数据结构中的树一样,每个DOM节点都有它的chi ...

  5. [ Python - 4 ] python 装饰器

    装饰器有很多经典的使用场景,例如插入日志.性能测试.事务处理等等,有了装饰器,就可以提取大量函数中与本身功能无关的类似代码,从而达到代码重用的目的. 装饰器有两种写法: 1. 装饰器不传参数 2. 装 ...

  6. servletcontext.getRealPath()

    getRealPath方法已经不建议使用了: http://blog.csdn.net/lzynihao/article/details/8315796 另外:http://veryls.iteye. ...

  7. <Linux性能调优指南>主要思路流程

    网上IBM很早放出的一本免费电子书, 十来年了,参考意义还是很大. 国内有翻译成中文在线阅读的版本. 见如下两个URL Linux Performance and Tuning Guidelines ...

  8. Submile text3 安装使用技巧

    第一次用submile text3,发现还是有一些东西需要配置的,而且submile text3是最近发布的,和原来的submile text2还是有一些区别的.这两天自己配置了一下,用起来感觉还是不 ...

  9. int 与 String 与 char 之间的互相转换

    int 转 String: //方式一: int i1 = 888; String s1 = Integer.toString(i1); //方式二: int i2 = 888; String s2 ...

  10. C#调用耗时函数时显示进度条浅探

    最近在做一个VSS日志分析工具,使用C#进行开发,在完成了所有功能后,发现,从服务器下载VSS日志非常耗时,因为此,导致工具使用体验不好,所以,准备增加一个进度条.鉴于C#不经常使用,一下子搞个进度条 ...