oracle死锁类型和原因分析

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


bb


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


bb

 

如上图中锁的类型为

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

 

fj.pngora60basic.jpg

fj.pngora60type3.jpg

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

转载于:http://blog.itpub.net/21605631/viewspace-763991/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值