博客分类:

 

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. 知问前端——日历UI(一)

    日历(datepicker)UI,可以让用户更加直观的.更加方便的输入日期,并且还考虑不同国家的语言限制,包括汉语. 调用datepicker()方法 $('#date').datepicker(); ...

  2. [bzoj1977][BeiJing2010组队]次小生成树 Tree——树上倍增+lca

    Brief Description 求一个无向图的严格次小生成树. Algorithm Design 考察最小生成树的生成过程.对于一个非树边而言,如果我们使用这一条非树边去替换原MST的路径上的最大 ...

  3. 一张图介绍 html中offset、client、scroll、offset 、padding、margin 各种属性介绍

  4. Python爬虫学习 - day2 - 站点登陆

    利用Python完成简单的站点登陆 最近学习到了爬虫,瞬时觉得很高大上,想取什么就取什么,感觉要上天.这里分享一个简单的登陆抽屉新热榜的教程(因为它不需要验证码,目前还没有学会图像识别.哈哈),供大家 ...

  5. go开发

    我开发中一直用这一段 //for debuggingfunc printPretty(v interface{}, mark string) (err error) { fmt.Printf(&quo ...

  6. [Leetcode Week10]01 Matrix

    01 Matrix 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/01-matrix/description/ Description Given a ...

  7. servlet(3) - servlet知识点 - 小易Java笔记

    1.servlet的生命周期 (1)容器最终要调用service方法为客户进行服务.(此处“容器”指java运行的环境,tomcat是jsp/servlet的容器) ==> 在内存中一个Serv ...

  8. Log4Net的控制台,WinForm,WebApplication使用

    一.Log4Net的控制台,WinForm,WebApplication使用 1.首先使用nuget 添加log4Net 到控制台项目中 log4j每个符号的具体含义:%d %5p %c{1}:%L ...

  9. DRF视图集的路由设置

    在使用DRF视图集时,往往需要配一大堆路由,例如: # views.py class DepartmentViewSet(ListModelMixin,CreateModelMixin,Retriev ...

  10. MyBatis3-实现多表关联数据的查询

    前提: 1.新建Article表和增加模拟数据,脚本如下: Drop TABLE IF EXISTS `article`; Create TABLE `article` ( `id` ) NOT NU ...