gpt4 book ai didi

oracle - 死锁的根本原因?

转载 作者:行者123 更新时间:2023-12-02 04:37:14 26 4
gpt4 key购买 nike

我在下面看到了在 oracle 12g 跟踪文件中检测到的死锁之一的详细信息,但我不明白为什么这里会发生死锁?

当线程 1 获取表 1 或表行的锁但等待表 2 行,同时线程 2 通过等待表 1 行获取表 2 行的锁时发生死锁

但是我看不到详细信息是哪个 session 获取了哪个表上的锁以及等待哪个资源。任何帮助在这里被锁定的对象是什么原因是什么?

Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-00290010-00015F75-00000000-00000000 295 1200 X 288 10 X
TX-00570012-00005D9B-00000000-00000000 288 10 X 295 1200 X

session 1200: DID 0001-0127-00014421 session 10: DID 0001-0120-00016BD1
session 10: DID 0001-0120-00016BD1 session 1200: DID 0001-0127-00014421

Rows waited on:
Session 1200: obj - rowid = 00051348 - BABRNIAARAAKfNLAAl
...
Session 10: obj - rowid = 000514F2 - BABRTyAAJAAKWbIAAY
....

----- Information for the OTHER waiting sessions -----
....
current SQL:
update employee set name=:1
----- End of information for the OTHER waiting sessions -----

Information for THIS session:

----- Current SQL Statement for this session (sql_id=5dfr2prw60rh1) -----
update department set address =:1 where id=:1
===================================================

最佳答案

您的输出表明当前 session 正在尝试更新部门表中的锁定记录(“本次 session 的信息”输出)。另一个 session 试图更新每个员工记录(“其他等待 session 的信息”输出)。当前 session 必须更新了员工表中的记录,阻塞了另一个 session ,而另一个 session 更新了当前 session 正在尝试更新的记录。

我认为这是导致死锁的某种练习,因为您将每个员工记录设置为相同的名称。

关于oracle - 死锁的根本原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41142594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com