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.
分享到:
相关推荐
死锁是指两个或多个事务因互相等待对方释放资源而无限期地阻塞下去的情况。在DB2中,当两个或多个事务互相等待对方释放锁定资源时,就会发生死锁。 #### 三、死锁识别与分析 ##### 1. 错误代码-911 - **描述**: 当...
死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉,它们都将无法继续执行。在DB2中,这种情况可能导致系统性能下降,甚至阻塞正常业务操作。 DB2通过一种称为“死锁检测”...
DB2死锁问题在数据库应用系统中是一种常见的性能瓶颈,特别是在新系统上线初期,由于测试不足和对DB2机制理解不深,可能会频繁出现。DB2死锁涉及到多个层面,包括系统参数配置、应用程序设计以及性能监控与维护。...
### DB2死锁问题解析与处理方法 #### 一、理解DB2死锁现象 **DB2**(DB2 Universal Database)是由IBM公司开发的一款关系型数据库管理系统。在多用户并发访问DB2数据库的过程中,可能会遇到所谓的“死锁”问题。...
在DB2数据库管理系统中,死锁是一个常见的问题,它发生在两个或多个事务相互等待对方释放资源,从而导致它们都无法继续执行。本篇文章将详细介绍如何在DB2中检测和解决死锁,特别是针对标题中提到的"db2解除死锁"的...
死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉它们都将无法继续执行。在DB2中,当多个事务互相等待对方释放资源时,就可能出现这种情况。解决DB2数据库死锁的问题通常...
### DB2数据库处理表死锁知识点详解 #### 一、理解DB2中的死锁与锁机制 在DB2(Database 2)这种关系型数据库管理系统中,锁是一种用于确保数据一致性和完整性的关键机制。当两个或多个事务互相等待对方释放资源时...
DB2死锁问题通常在涉及更新操作的SQL语句中出现,但在本案例中,一个普通的SELECT语句引起了死锁,这在实践中较为罕见。死锁的产生是由于多个事务在资源请求上形成循环等待,导致系统无法继续执行。解决DB2死锁的...
10. **查看锁和死锁**:`db2 get snapshot for locks on db_name`获取锁的状态,`db2 "select agent_id, tabname, lock_mode from table(snap_get_lock('<db_name>')) as aa"`显示死锁信息。 11. **监控SQL性能**:...
6. 死锁解决:"解决数据库的死锁问题"和"当并发遇到隔离的时候 DB2"提供了处理DB2死锁的具体步骤和策略,包括使用DB2的死锁检测功能、事务回滚和死锁预防等技术。 7. 社区资源:这些HTML文件来自于各种技术社区,如...
进程、线程、死锁和POSIX规范的系统调用 进程是操作系统中一个独立的执行单元,它拥有自己的虚拟地址空间和系统资源。线程是轻量级的进程,它共享同一个进程的虚拟地址空间和系统资源。理解进程和线程的概念对于...
一、数据库死锁的现象 程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。 二、死锁的原理 当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提 交,另一条对于这一列...
从进程同步的概念可以知道,当并发进程需要竞争使用资源或需要相互协作向前推进时,如果不采取同步措施,或同步措施不恰当,则很容易导致并发进程不能向前推进而陷入僵局,即死锁现象。死锁是发生在一组相互竞争或...
死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉它们将无法继续执行。死锁是数据库系统中常见的问题,尤其在多用户、高并发的应用场景下,了解和处理死锁显得尤为重要。 ...
"SQL Server死锁的解除方法" SQL Server死锁是指在多个事务之间的资源竞争时,出现的循环等待资源的现象。死锁会导致系统性能下降,甚至会导致系统崩溃。因此,解决SQL Server死锁是非常重要的。 SQL Server死锁的...
在SQL Server数据库管理系统中,死锁是一个常见的性能问题,它发生在两个或多个事务相互等待对方释放资源,导致它们都无法继续执行。死锁不仅影响数据库的正常运行,还可能导致数据一致性问题。本文将详细介绍如何在...
- 没有设置适当的事务隔离级别:如读未提交(READ UNCOMMITTED)可能会减少死锁,但可能导致其他问题。 - 长事务:长时间运行的事务可能导致更多资源被锁定,增加死锁风险。 **3. 查询阻塞进程** 当一个SQL查询被...
如果没有检测到死锁,事务将被放入等待队列;如果检测到死锁,DM4会视为运行时错误,回滚当前事务的执行语句,避免了死锁对系统的影响。这种机制简化了解锁过程,从用户角度来看,系统似乎不存在解锁的问题。 总之...
此外,后缀表达式(也称为逆波兰表达式)是一种没有括号的表达式表示方式,运算符位于操作数之后,通过堆栈进行计算,简化了运算符优先级的问题。将中缀表达式转换为后缀表达式,主要遵循运算符优先级规则,通过扫描...