什么是-911和-913错误代码?什么是死锁,死锁是如何发生的?

当两个应用程序锁定彼此所需的数据时,将发生DEADLOCK条件。这两个应用程序都等待另一个释放锁,因此发生死锁。

让我们看一个例子来更好地理解这一点:

有两个正在执行的COBOL-DB2程序:PROG A和PROGB。

PROG A在ORDERS表中保存一个UPDATE LOCK,而PROG B在TRANSACTION表中保存一个UPDATE LOCK。在某个时间点,PROG A在TRANSACTION TABLE上需要一个UPDATE LOCK,而PROG B在ORDERS表上需要一个UPDATE LOCK,但是两个应用程序不能在同一页上放置UPDATE LOCK。

因此,这两个程序将相互等待以释放锁定并最终进入DEADLOCK状态。

如果程序进入DEADLOCK状态,则COBOL-DB2程序将失败,错误代码为-911和-913。-911表示DB2发出了自动回滚,而-913表示DB2没有发出自动回滚(DB2不可能)。