`

java.sql.SQLException: 无法从套接字读取更多的数据

阅读更多
本来订单的生成没有问题,但不知什么原因,报了一个这样的异常,致使订单不能生成

  [08-11-19 8:07:51:344 CST] 00000037 JDBCException E   could not insert: [gmit.jzt.buying.databean.EOrderDO#122594]
[08-11-19 8:07:51:344 CST] 00000037 JDBCException E   TRAS0014I: 下列异常已记录 java.sql.SQLException: ORA-01460: 转换请求无法实现或不合理



服务器是WebSphere,想到是价格的计算总价哪里出了问题,设了断点,然后输出,也不曾得出结果,总是报这个异常,后来把那些数据拿到本地测试(Excel导入订单),又出现了一个新的异常

ora-600 kksscl-inf-inl-loop
Connection aborted by peer: socket write error
java.sql.SQLException: 无法从套接字读取更多的数据

就百度了:

http://wmlm.itpub.net/post/12871/454535从此处得知是Oracle9i的驱动要升级了,结果换了驱动包就好了,是一个比较郁闷的问题,问题是解决了,但是我还是不知道为什么换了驱动包就可以了,如果有看到此文章的麻烦解答一下,我也把解决的方法转过来,供大家查阅:



日期:20080203
关键字:
ora-600 kksscl-inf-inl-loop
Connection aborted by peer: socket write error
java.sql.SQLException: 无法从套接字读取更多的数据
内容:
收到开发人员发来的邮件,告知JAVA应用程序 运行系统一段时间后,报“获取数据库连接失败”,“无法从套接字获取更多数据”,要求解决此问题

http://docs.google.com/Doc?id=dgdk3pdk_114cq8x87gw



内容:
收到开发人员发来的邮件,告知JAVA应用程序 运行系统一段时间后,报“获取数据库连接失败”,“无法从套接字获取更多数据”,要求解决此问题
附件中的日志摘抄部分内容如下:
java.sql.SQLException: Io 异常: Connection aborted by peer: socket write error
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:389)
at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConn
ection.java:772)
at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection.
java:712)
at weblogic.jdbc.pool.Connection.createStatement(Connection.java:356)
......
java.sql.SQLException: 无法从套接字读取更多的数据
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
......

到现场后首先检查报警日志,其中有以下信息:
Sat Feb 02 15:44:06 2008
Errors in file d:oracleadmingljkudumpgljk_ora_3200.trc:
ORA-00600: internal error code, arguments: [kksscl-inf-inl-loop], [1521], [199], [199], [955], [955], [], []

Sun Feb 03 12:26:07 2008
Errors in file d:oracleadmingljkudumpgljk_ora_3364.trc:
ORA-00600: internal error code, arguments: [kksscl-inf-inl-loop], [1521], [23], [23], [103], [103], [], []

通过查看UDUMP下的日志,找出有以下SQL语句:
select yhdm,yhmc,yhmm,dh,qxjgdm,sybz,sydz,fysz,color
from gljk_xt_yhxx t
where yhdm=(select SWRY_DM from P12366_CTAIS2_USER where NAME=:"SYS_B_0")
.......

上网查了一下资料,有以下原因可能会造成此类错误:
1 数据库版本需要升级(目前是9201+windows2000 as)
2 表或索引上有数据坏块
3 SESSION之间的阻塞
4 初始化参数设置
参考metalink文档:ORA-600[kksscl-inf-inl-loop] during heavy load with CURSOR_SPACE_FOR_TIME=TRUE

计划处理此问题的步骤如下:
1 找ORACLE支持(公司不出钱,这一步跳过去)
2 扫描表及索引,查看是否有坏块,如果有,进行坏块修复,或表及索引的重建
3 在应用停了之后,升级数据库到9204,检查以下初始化参数
cursor_space_for_time=false
session_cached_cursors=0
cursor_sharing=force
4 在下次错误发生,查看阻塞的SESSION
如果是因为SESSION阻塞,造成的应用程序中的错误,修改以下初始化参数
- set TIMED_STATISTICS=FALSE
- set _row_cache_cursors=20 or more (10 default)
- don't do any kind of tracing

检查过程:
SQL> select 'ANALYZE TABLE '||table_name||' VALIDATE STRUCTURE CASCADE ;' from user_tables;

发现问题:
SQL> ANALYZE TABLE gs12366_gljk.GLJK_YSWG_LIST VALIDATE STRUCTURE CASCADE ;
ANALYZE TABLE gs12366_gljk.GLJK_YSWG_LIST VALIDATE STRUCTURE CASCADE
*
ERROR 位于第 1 行:
ORA-01499: table/index cross reference failure - see trace file

开发人员还有一些附加的要求:
系统设计的是定期将gljk_yswg_list中的数据删除后放在历史表中(2733918条记录),但总是有一些数据在插入时提示列值过大,而两个表结构一样,也找不到原因.
积累到现在共有205045条记录,

处理过程:
先查看空闲的表空间,确认是否有足够的空间来保存临时数据
1 create table wang_temp1 as select * from GLJK_YSWG_LIST where skssq>'2008' ;
-- 共有87114条
2 create table wang_temp2 as select * from GLJK_YSWG_LIST where skssq<'2008';
-- 共有205045条
3 停掉所有相关的JAVA应用
4 备份表上的建索引脚本,rename table GLJK_YSWG_LIST;
5 rename table ww_temp1 to GLJK_YSWG_LIST;
6 运行创建索引脚本,补充上索引.(表上没有触发器,如果有,还需要还原)
7 进入测试查询
8 将wang_temp2中的数据插入到历史表GLJK_YSWG_HISTORY_LIST中.如果批量插入失败,写一个简单的存储过程进行插入,并捕捉不能插入的记录,分析原因进行解决.
9 处理完毕后,删除中转表wang_temp1 wang_temp2

在此做个记录,以供以后出现类似问题时参考.



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/OnlyOfMe/archive/2008/11/19/3334291.aspx
分享到:
评论
1 楼 zzy90718 2010-11-18  
其实是个驱动的问题

相关推荐

    JNDI的数据库连接池 pdf

    import java.sql.Connection; public class ConnectionPoolExample { public static void main(String[] args) { try { Context ic = new InitialContext(); DataSource ds = (DataSource) ic.lookup("java:...

    mysql-connector-java-5.1.46.zip

    1. **连接管理**:驱动程序负责建立、管理和关闭到MySQL服务器的网络连接,支持多种连接方式,如TCP/IP、UNIX套接字等。 2. **SQL语句执行**:它将Java应用程序中的SQL命令转化为MySQL服务器能理解的格式,执行查询...

    mysql-connector-java-5.1.39.0.zip

    它支持多种连接模式,如TCP/IP、Unix套接字和命名管道。 2. **SQL语句执行**:允许Java应用执行SQL查询、插入、更新、删除等操作,支持预编译的PreparedStatement和CallableStatement,提高性能并防止SQL注入攻击。...

    数据库驱动程序

    Oracle驱动程序通常遵循Java Database Connectivity (JDBC) 标准,这是一个Java API,允许Java程序员使用SQL语句来访问和操作数据库。JDBC驱动分为四种类型:Type 1、Type 2、Type 3 和 Type 4。Oracle提供的驱动...

    数据库驱动包

    MySQL JDBC驱动支持各种数据库连接模式,包括标准TCP/IP、套接字、命名管道以及共享内存等,确保在不同环境下都能顺利工作。 SQL Server 2008的JDBC驱动是由Microsoft开发的,名为SQL Server JDBC Driver,它同样...

    Java常见异常大全.pdf

    在Java程序设计中,异常处理是程序健壮性的重要组成部分。Java提供了一套丰富的异常类来帮助开发人员处理在程序执行过程中可能发生的错误。本文档列出了Java中常见的异常类型,并简要描述了这些异常的含义以及可能...

    jsonData:从file.json读取数据并保存到数据库

    本文将详细介绍如何使用Java从`file.json`这样的JSON文件中读取数据,并将其有效地保存到数据库中。 首先,我们需要了解JSON的基本结构。JSON是一种基于文本的、易于人阅读和编写的数据格式,同时也易于机器解析和...

    poi解析excel的poi包

    接下来,我们需要创建一个Java类来读取Excel文件。Apache POI提供了`HSSFWorkbook`类来处理`.xls`(Excel 97-2003格式)文件,而`XSSFWorkbook`则用于`.xlsx`(Excel 2007及以上版本)文件。假设你的Excel文件是`....

    java程序设计案例教程

    - 掌握UDP协议下的数据报套接字(DatagramSocket)的使用。 - 实现点对点的聊天应用,包括消息的发送和接收。 **工作任务:** - 使用TCP协议建立客户端和服务器端的连接,实现数据传输。 - 利用UDP协议的...

    java面试题

    在平安科技的Java开发技术面试题大全中,包含了众多与Java开发相关的知识点和技能。以下将对提供的部分内容中的关键字进行解析,并详细阐述它们所涉及的Java知识点。 1. request, response, pageContext, session, ...

Global site tag (gtag.js) - Google Analytics