首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >僵局的根本原因?

僵局的根本原因?
EN

Stack Overflow用户
提问于 2016-12-14 12:24:26
回答 1查看 388关注 0票数 3

我在下面看到oracle 12g跟踪文件中检测到的一个死锁的详细信息,但是我不知道为什么这里会出现死锁?

当线程1获得table1或表行上的锁,但等待表2行时发生死锁,同时线程2获取表2行的锁,逐行等待table1行。

但我看不到获取哪个会话的详细信息、哪个表上的锁以及等待哪个资源的信息。有什么帮助吗?被锁在这里的物体是什么?原因是什么?

代码语言:javascript
复制
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 
===================================================
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-14 14:46:03

您的输出显示当前会话试图更新部门表中的锁定记录(“此会话的信息”输出)。另一个会话试图更新每个员工记录(“其他等待会话的信息”输出)。当前会话必须已更新了employee表中的记录,从而阻塞了另一个会话,而另一个会话更新了当前会话试图更新的记录。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41142594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档