ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle死锁类型和原因分析

oracle死锁类型和原因分析

Linux操作系统 作者:weches 时间:2015-08-18 22:54:57 0 删除 编辑

产生死锁分很多种情况,我们最常见的是外健上面没有添加索引或者逻辑问题,当发生死锁时都会生成一个trace文件,这个文件名在alert中都有记载,通常我们会看到下面一段



 当看到trace文件时我们需要确认一下产生锁的类型,是两行还是一行,是TX还是TM,如果只有一行说明是同一个session,可能是自治事务引起的死锁


 

如上图中锁的类型为

TX  X X 
TX
 X  X 

锁的类型和引起的原因如下:

*      锁情的情况

锁类型

请求锁

死锁类型

引起原因

注释

TX锁,请求 X (6)锁

TX

X(6)

TX X X
TX X X

程序问题

应用程序逻辑问题

TM锁,请求 SSX (5)锁

TM

SSX (5)

TM SX SSX SX SSX
TM SX SSX SX SSX

外键无索引

TM 锁,占用 SX (3)锁, 请求SSX (5)锁

TX锁,请求  S(4) 锁

TX

S(4)

TX X S
TX X S

事务槽满了或有bitmap索引

TX 锁占用 X (6),请求 S (4)

TX锁,请求 X (6),只有一行信息

TX

X(6)

TX X X

自锁

通常为自治事务引起的

 

Oracle同时提供了诊断锁类型的文档见:1550091.2

Oracle锁的型号如下:
0 - none
1 - null (NULL)
2 - Row Share, also called a subshare table lock  (SS)
3 - Row eXclusive Table Lock, also called a subexclusive table lock (SX)
4 - Share Table Lock (S)
5 - Share Row-eXclusive, also called a share-subexclusive table lock (SSX)
6 - EXclusive (X)

 

 

参考文档:ID 1507093.1

 

ora60basic.jpg

ora60type3.jpg

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7908476/viewspace-1775697/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2015-08-18

  • 博文量
    2
  • 访问量
    1553