转自网上,摘录
AIX版本 V5.3
ORACLE 版本 10.2.0.1
JDBC Driver版本 10.2.0.1 , 10.2.0.4
DATABASE CONNECT POOL C3P0
异常信息大意 error code [17002],。。。, Cause: java.sql.SQLException: Io exception: There is no process to read data written to a pipe
这个错误,无论是对数据库的select、insert或update都存在,怀疑是oracle驱动的问题,因为在oracle官网我们可以看到诸如此类相应的版本与驱动信息
原以为最好的方法是用oracle版本一致的驱动版本,但经过多次测试发现,采用高版本的JDBC DRIVER报错的时间会向后推迟久点(10.2.0.1大约1天多后,10.2.0.4大意两天左右),可问题依旧不可避免,也许是AIX自身的缺陷,但尚未证明并给予解决
尽管无法解决本问题;给出经过验证的可行性解决方案:
异常根源:
JDBC Idle Connection Problems on AIX Platform [ID 472572.1]
JDBC Connections from E-Business Suite Application Tier Fail with "java.sql.SQLException: Io exception: There is no process to read data written to a pipe." [ID 734293.1]
解决方案:
升级AIX 5.3 的 bos.net.tcp.client
详细信息:
A.查看bos.net.tcp.client版本号
$ lslpp -l |grep bos.net.tcp.client
bos.net.tcp.client 5.3.0.50 COMMITTED TCP/IP Client Support
bos.net.tcp.client 5.3.0.50 COMMITTED TCP/IP Client Support
B.查看系统核版本号
$ oslevel -r
5300-05
C.可升级到的版本号 bos.net.tcp.client 5.3.0.54
D.进行升级工作!
--------------------------------------------------------------------------------
请帮忙分析一下这个报错原因。
2010-12-23 16:22:29 Thread-0 ERROR (cn.com.alcatelsbell.sbg.ps.egov.common.db.ConnectionUtility:139) - Can not get database connection.
java.sql.SQLException: Io exception: There is no process to read data written to a pipe.
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:297)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:221)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:165)
at cn.com.alcatelsbell.sbg.ps.egov.common.db.AbstractConnectionUtility.getConnection(AbstractConnectionUtility.java:137)
at cn.com.alcatelsbell.svg.bm.common.ConnectionUtility.getConnectionOfDW(ConnectionUtility.java:67)
at cn.com.alcatelsbell.svg.bm.logloader.processor.BDSessionTrafficUtility.importBDUserSessionNMUrlTraffic(BDSessionTrafficUtility.java:48)
at cn.com.alcatelsbell.svg.bm.logloader.processor.statistics.BDSessionTrafficStatistics.save(BDSessionTrafficStatistics.java:187)
at cn.com.alcatelsbell.svg.bm.logloader.processor.statistics.ProcessorForStatistics.doProcessing(ProcessorForStatistics.java:173)
at cn.com.alcatelsbell.svg.bm.logloader.processor.SegmentProcessor.run(SegmentProcessor.java:50)
at java.lang.Thread.run(Thread.java:735)
2010-12-23 16:22:30 Thread-0 ERROR (cn.com.alcatelsbell.svg.bm.logloader.processor.BDSessionTrafficUtility:76) - insert data to BD_USER_SESSION_NMURL_TRAFFIC Exception !
java.sql.SQLException: Can not get database connection. Reason: Io exception: There is no process to read data written to a pipe.
at cn.com.alcatelsbell.sbg.ps.egov.common.db.AbstractConnectionUtility.getConnection(AbstractConnectionUtility.java:140)
at cn.com.alcatelsbell.svg.bm.common.ConnectionUtility.getConnectionOfDW(ConnectionUtility.java:67)
at cn.com.alcatelsbell.svg.bm.logloader.processor.BDSessionTrafficUtility.importBDUserSessionNMUrlTraffic(BDSessionTrafficUtility.java:48)
at cn.com.alcatelsbell.svg.bm.logloader.processor.statistics.BDSessionTrafficStatistics.save(BDSessionTrafficStatistics.java:187)
at cn.com.alcatelsbell.svg.bm.logloader.processor.statistics.ProcessorForStatistics.doProcessing(ProcessorForStatistics.java:173)
at cn.com.alcatelsbell.svg.bm.logloader.processor.SegmentProcessor.run(SegmentProcessor.java:50)
at java.lang.Thread.run(Thread.java:735)
AIX版本 V5.3
ORACLE 版本 10.2.0.1
JDBC Driver版本 10.2.0.1 , 10.2.0.4
DATABASE CONNECT POOL C3P0
异常信息大意 error code [17002],。。。, Cause: java.sql.SQLException: Io exception: There is no process to read data written to a pipe
这个错误,无论是对数据库的select、insert或update都存在,怀疑是oracle驱动的问题,因为在oracle官网我们可以看到诸如此类相应的版本与驱动信息
原以为最好的方法是用oracle版本一致的驱动版本,但经过多次测试发现,采用高版本的JDBC DRIVER报错的时间会向后推迟久点(10.2.0.1大约1天多后,10.2.0.4大意两天左右),可问题依旧不可避免,也许是AIX自身的缺陷,但尚未证明并给予解决
尽管无法解决本问题;给出经过验证的可行性解决方案:
异常根源:
JDBC Idle Connection Problems on AIX Platform [ID 472572.1]
JDBC Connections from E-Business Suite Application Tier Fail with "java.sql.SQLException: Io exception: There is no process to read data written to a pipe." [ID 734293.1]
解决方案:
升级AIX 5.3 的 bos.net.tcp.client
详细信息:
A.查看bos.net.tcp.client版本号
$ lslpp -l |grep bos.net.tcp.client
bos.net.tcp.client 5.3.0.50 COMMITTED TCP/IP Client Support
bos.net.tcp.client 5.3.0.50 COMMITTED TCP/IP Client Support
B.查看系统核版本号
$ oslevel -r
5300-05
C.可升级到的版本号 bos.net.tcp.client 5.3.0.54
D.进行升级工作!
--------------------------------------------------------------------------------
请帮忙分析一下这个报错原因。
2010-12-23 16:22:29 Thread-0 ERROR (cn.com.alcatelsbell.sbg.ps.egov.common.db.ConnectionUtility:139) - Can not get database connection.
java.sql.SQLException: Io exception: There is no process to read data written to a pipe.
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:297)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:221)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:165)
at cn.com.alcatelsbell.sbg.ps.egov.common.db.AbstractConnectionUtility.getConnection(AbstractConnectionUtility.java:137)
at cn.com.alcatelsbell.svg.bm.common.ConnectionUtility.getConnectionOfDW(ConnectionUtility.java:67)
at cn.com.alcatelsbell.svg.bm.logloader.processor.BDSessionTrafficUtility.importBDUserSessionNMUrlTraffic(BDSessionTrafficUtility.java:48)
at cn.com.alcatelsbell.svg.bm.logloader.processor.statistics.BDSessionTrafficStatistics.save(BDSessionTrafficStatistics.java:187)
at cn.com.alcatelsbell.svg.bm.logloader.processor.statistics.ProcessorForStatistics.doProcessing(ProcessorForStatistics.java:173)
at cn.com.alcatelsbell.svg.bm.logloader.processor.SegmentProcessor.run(SegmentProcessor.java:50)
at java.lang.Thread.run(Thread.java:735)
2010-12-23 16:22:30 Thread-0 ERROR (cn.com.alcatelsbell.svg.bm.logloader.processor.BDSessionTrafficUtility:76) - insert data to BD_USER_SESSION_NMURL_TRAFFIC Exception !
java.sql.SQLException: Can not get database connection. Reason: Io exception: There is no process to read data written to a pipe.
at cn.com.alcatelsbell.sbg.ps.egov.common.db.AbstractConnectionUtility.getConnection(AbstractConnectionUtility.java:140)
at cn.com.alcatelsbell.svg.bm.common.ConnectionUtility.getConnectionOfDW(ConnectionUtility.java:67)
at cn.com.alcatelsbell.svg.bm.logloader.processor.BDSessionTrafficUtility.importBDUserSessionNMUrlTraffic(BDSessionTrafficUtility.java:48)
at cn.com.alcatelsbell.svg.bm.logloader.processor.statistics.BDSessionTrafficStatistics.save(BDSessionTrafficStatistics.java:187)
at cn.com.alcatelsbell.svg.bm.logloader.processor.statistics.ProcessorForStatistics.doProcessing(ProcessorForStatistics.java:173)
at cn.com.alcatelsbell.svg.bm.logloader.processor.SegmentProcessor.run(SegmentProcessor.java:50)
at java.lang.Thread.run(Thread.java:735)