DB2 中死锁的错误代码、原因和示例
当两个应用程序锁定彼此需要的数据时,就会发生死锁情况。两个应用程序都在等待另一个应用程序释放锁,因此发生了死锁。
让我们看一个例子来更好地理解这一点:
有两个COBOL-DB2程序在执行:PROGA和PROGB。
PROGA在ORDERS表中持有UPDATELOCK,而PROGB在TRANSACTION表中持有UPDATELOCK。在某个时间点,PROGA需要TRANSACTIONTABLE上的UPDATELOCK,PROGB需要ORDERS表上的UPDATELOCK,但两个应用程序不能在同一页上放置UPDATELOCK。
因此,两个程序将等待对方释放锁并最终进入DEADLOCK状态。
如果程序进入死锁状态,COBOL-DB2程序将失败并显示错误代码-911和-913。-911表示DB2发出了自动回滚,而-913表示DB2未发出自动回滚(DB2不可能)。