Increase of Threads When A SQL Statement Execution Takes For A Long Time (Doc ID 1912569.1)

Last updated on MARCH 08, 2017

Applies to:

Oracle WebLogic Server - Version 10.3.6 and later
Information in this document applies to any platform.

Symptoms

Deployed into WLS  server 10.3.6,  an application interacts with Oracle Database  server.
Randomly, a thread (ExecuteThread: '6') executes SQL statement for la long time with the the following thread stack :

[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'" - Thread t@44
  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.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)
at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1838)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1803)
- locked (a oracle.jdbc.driver.T4CConnection) at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:294)
..
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

When the execution of this SQL statement takes a long time,  there are  threads which are created and blocked with the following thread stack :


"[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'" - Thread t@41
  java.lang.Thread.State: BLOCKED
at weblogic.transaction.internal.ServerSCInfo.callAfterCompletions(ServerSCInfo.java:994)
- waiting to lock (a weblogic.transaction.internal.ServerSCInfo) owned by "[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'" t@139
at weblogic.transaction.internal.ServerTransactionImpl.callAfterCompletions(ServerTransactionImpl.java:3074)
at weblogic.transaction.internal.ServerTransactionImpl.abandonNow(ServerTransactionImpl.java:3469)
at weblogic.transaction.internal.ServerTransactionImpl.access$300(ServerTransactionImpl.java:65)
at weblogic.transaction.internal.ServerTransactionImpl$3.run(ServerTransactionImpl.java:3451)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

The issue is that the number of these threads  (locked on weblogic.transaction.internal.ServerSCInfo handle)  is increasing continuously when  the SQL Statement execution takes a long time. As a consequence,  a restart of WLS server is needed.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms