DB2 死鎖無沒有反應

sqiutz發表於2010-03-16

The Microsoft SQL Server 2000 Driver for JDBC may cause an application to stop responding, or "hang," while working with concurrent transactions in a multi-threaded environment. A thread dump file that is generated during the hang (with the 'kill -quit <pid>' command in a Unix environment, or with the CTRL+SHIFT+BREAK key combination in the command session where the application is launched in a Windows environment) shows the following call stack:

java.net.SocketInputStream.socketRead 
java.net.SocketInputStream.read com.microsoft.util.UtilSocketDataProvider.getArrayOfBytes
com.microsoft.util.UtilBufferedDataProvider.cacheNextBlock 
com.microsoft.util.UtilBufferedDataProvider.getArrayOfBytes 
com.microsoft.jdbc.sqlserver.SQLServerDepacketizingDataProvider.signalStartOfPacket 
com.microsoft.util.UtilDepacketizingDataProvider.getArrayOfBytes 
com.microsoft.util.UtilPagedTempBuffer.write com.microsoft.util.UtilPagedTempBuffer.write 
com.microsoft.util.UtilByteArrayDataProvider.receive 
com.microsoft.util.UtilByteOrderedDataReader.receive 
com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.submitRequest 
com.microsoft.jdbc.sqlserver.tds.TDSCursorRequest.sendCursorFetch 
com.microsoft.jdbc.sqlserver.tds.TDSCursorRequest.openCursor 
com.microsoft.jdbc.sqlserver.SQLServerImplStatement.execute 
com.microsoft.jdbc.base.BaseStatement.commonExecute 
com.microsoft.jdbc.base.BaseStatement.executeQueryInternal 
com.microsoft.jdbc.base.BasePreparedStatement.executeQuery
CAUSE:
When the Java application, or the application server that initiates and manages transactions on multiple threads using the Microsoft JDBC driver, switches from manual commit mode to auto commit mode between transactions, the driver does not automatically commit any open transactions. This can cause tables to remain locked. When a table remains locked, any subsequent query against that table stops responding.
resolve:
    Prevent the transaction rollback and adjust the server or system attribute after roll back.

相關文章