ResultSet.next () hangs while talking to oracle 11.2 using jdbc

We have a java application that speaks with oracle 11.2 using jdbc. We use oracle-jdbc-7.jar

Created-By: 20.12-b01 (Sun Microsystems Inc.) Implementation-Vendor: Oracle Corporation Implementation-Title: JDBC Implementation-Version: 12.1.0.1.0 

We also use Statement.setQueryTimeout ()

However, every few days, the thread talking to the oracle hangs when ResultSet.next () is executed.

The code is as follows:

 PreparedStatement ps = createPreparedStatement(); ps.setQueryTimeout(60); while (true) { ps.executeQuery(); //iterate over the ResultSet doing ResultSet.next() continuously //do something with the ResultSet //sleep for 1 second. } 

Threaddump:

 java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:152) at java.net.SocketInputStream.read(SocketInputStream.java:122) at oracle.net.ns.Packet.receive(Packet.java:311) at oracle.net.ns.DataPacket.receive(DataPacket.java:105) at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:305) at oracle.net.ns.NetInputStream.read(NetInputStream.java:249) at oracle.net.ns.NetInputStream.read(NetInputStream.java:171) at oracle.net.ns.NetInputStream.read(NetInputStream.java:89) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79) at oracle.jdbc.driver.T4CMAREngineStream.unmarshalUB1(T4CMAREngineStream.java:426) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:390) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:566) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:215) at oracle.jdbc.driver.T4CPreparedStatement.fetch(T4CPreparedStatement.java:1022) at oracle.jdbc.driver.OracleStatement.fetchMoreRows(OracleStatement.java:3590) at oracle.jdbc.driver.InsensitiveScrollableResultSet.fetchMoreRows(InsensitiveScrollableResultSet.java:1008) at oracle.jdbc.driver.InsensitiveScrollableResultSet.absoluteInternal(InsensitiveScrollableResultSet.java:972) at oracle.jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:572) - locked <0x00000000d0873738> (a oracle.jdbc.driver.T4CConnection) 

Any ideas on resolving this will be appreciated?

We tried using openjdk7 and oracle JDK 7, but that did not help.

Thanks.

+6
source share
1 answer

Try to find a blocking session.

 SELECT s.blocking_session, s.sid, s.serial#, s.seconds_in_wait FROM v$session s WHERE blocking_session IS NOT NULL 

If this is your session, you may need to optimize your request. Otherwise, something else is causing the problem.

PS: I'm not an SQL expert

+1
source