博客分类:

 

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. Eclipse+Tomcat实现热部署/热加载配置,修改java代码无需重启tomcat

    一.Tomcat热加载配置 Eclipse Package Explorer中找到Servers,点击你所需要运行的tomcat的config配置文件,例如 demo-config,双击该文件夹下的s ...

  2. mysql root设置密码 linux

    成功方案 mysqld_safe --user=mysql --skip-grant-tables --skip-networking & [root@localhost ~]# mysql ...

  3. 【Foreign】远行 [LCT]

    远行 Time Limit: 20 Sec  Memory Limit: 256 MB Description Input Output Sample Input 0 5 10 1 4 5 2 3 2 ...

  4. [bzoj2763][JLOI2011]飞行路线——分层图最短路

    水题.不多说什么. #include <bits/stdc++.h> using namespace std; const int maxn = 10010; const int maxk ...

  5. .NET中zip的压缩和解压

    在.NET可以通过多种方式实现zip的压缩和解压:1.使用System.IO.Packaging:2.使用第三方类库:3.通过 System.IO.Compression 命名空间中新增的ZipArc ...

  6. AtCoder Regular Contest 092 C D E F

    C - 2D Plane 2N Points 题意 二维平面上有\(N\)个红点,\(N\)个蓝点,一个红点和一个蓝点能配成一对当且仅当\(x_r<x_b\)且\(y_r<y_b\). 问 ...

  7. Codeforces 362E Petya and Pipes 费用流建图

    题意: 给一个网络中某些边增加容量,增加的总和最大为K,使得最大流最大. 费用流:在某条边增加单位流量的费用. 那么就可以2个点之间建2条边,第一条给定边(u,v,x,0)这条边费用为0 同时另一条边 ...

  8. c 語言 控制碼

    source code #include <stdio.h> int main() { char *test = "ABC\x41\n"; printf("s ...

  9. pool.map的第二个参数想传入多个咋整?

    from functools import partial from multiprocessing import Pool as ThreadPool pageurls=[] if maxpage: ...

  10. Stack的三种含义 ----超级经典 明白了 栈 的三种含义

    来自:http://www.ruanyifeng.com/blog/2013/11/stack.html ----------------------------------------------- ...