回滚段被锁,请问该如何处理

[复制链接]
查看11 | 回复9 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
oracle9204,linux,回滚段自动管理
查看v$lock,发现回滚段被锁,
39
5A55200C
5A55201C
103
TX
1703979
8630
0
6
6312
0
40
5EE3F2D8
5EE3F2EC
114
TM
33864
0
3
0
4810
0
41
5A5524DC
5A5524EC
114
TX
1703979
8630
0
6
4810
0
42
5EE3F810
5EE3F824
115
TM
33864
0
3
0
4752
0
43
5A5526F0
5A552700
115
TX
1703979
8630
0
6
4752
0
44
5EE3F684
5EE3F698
141
TM
33864
0
3
0
4755
0
45
5A552658
5A552668
141
TX
1703979
8630
0
6
4755
0
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
你看看session 103,114,115,141都在干什么。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
他们执行同一句sql进行update,变量是绑定的。
UPDATE TC_COSSET SET COSSET_LEVEL = :1, EXP_CURRENT = :2 ,STRENGTH = :3,AGILITY = :4,CONSTITUTION = :5, WISDOM = :6,HP = :7,MP = :8,EP = :9,FP = :10,GP = :11,CP = :12 ,COSSET_REPUTE = :13 WHERE COSSET_ID = :14
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 holly_pansy 发布
[B]oracle9204,linux,回滚段自动管理
查看v$lock,发现回滚段被锁,
39
5A55200C
5A55201C
103
TX
1703979
8630
0
6
6312
0
40
5EE3F2D8
5EE3F2EC
114
TM
33864
0
3
0
4810
0
41
5A5524DC
5A5524EC
114
TX
1703979
8630
0
6
4810
0
42
5EE3F810
5EE3F824
115
TM
33864
0
3
0
4752
0
43
5A5526F0
5A552700
115
TX
1703979
8630
0
6
4752
0
44
5EE3F684
5EE3F698
141
TM
33864
0
3
0
4755
0
45
5A552658
5A552668
141
TX
1703979
8630
0
6
4755
0 [/B]

描述有问题,就是普通的TX锁。在v$session_wait会有enqueue的waitevent.
用如下的语句查一下,把holder session处置一下,比如kill掉就ok了。
[php]
SELECT DECODE(request,0,'Holder: ','Waiter: ')||sid
sess, id1, id2, lmode, request,
type FROM
V$LOCK WHERE (id1, id2, type)

IN (SELECT id1, id2, type FROM V$LOCK WHERE request>0)
ORDER BY id1, request
;
[/php]
v$lock中TX的ID1,ID2分别对应v$session_wait中的p2和p3。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
不论是lmode和request中数字对应都如下:
0 - none
1 - null (NULL)
2 - row-S (SS)
3 - row-X (SX)
4 - share (S)
5 - S/Row-X (SSX)
6 - exclusive (X)
从1楼中可以看出都在申请6 - exclusive (X) 。
请同时查询v$session_wait和v$lock_object,v$session等视图,查出是在什么对象上lock了,是什么导致了lock。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
奇怪,会话290有2个TX锁
1
5DFCA60C
5DFCA718
290
TX
4259841
1289
6
0
11018
1
2
5EE3DC08
5EE3DC1C
290
TM
33864
0
3
0
11018
0
3
5EE3DB84
5EE3DB98
290
TM
33981
0
3
0
11018
0
4
5EE3DB00
5EE3DB14
290
TM
33960
0
3
0
11018
0
5
5EE3DA6C
5EE3DA80
290
TM
33986
0
3
0
11018
0
6
5EE3D9E8
5EE3D9FC
290
TM
33984
0
3
0
11018
0
7
5A551B4C
5A551B5C
290
TX
458753
99103
0
6
11018
0
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
执行
SELECT DECODE(request,0,'Holder: ','Waiter: ')||sid
sess, id1, id2, lmode, request,
type FROM
V$LOCK WHERE (id1, id2, type)

IN (SELECT id1, id2, type FROM V$LOCK WHERE request>0)
ORDER BY id1, request
结果都是TX锁
Holder: 172
458753
99103
6
0
TX
Waiter: 62
458753
99103
0
6
TX
Waiter: 71
458753
99103
0
6
TX
Waiter: 74
458753
99103
0
6
TX
Waiter: 182
458753
99103
0
6
TX
Waiter: 219
458753
99103
0
6
TX
Waiter: 252
458753
99103
0
6
TX
Waiter: 290
458753
99103
0
6
TX
Waiter: 329
458753
99103
0
6
TX
Waiter: 763
458753
99103
0
6
TX
Waiter: 610
458753
99103
0
6
TX
Waiter: 526
458753
99103
0
6
TX
Waiter: 359
458753
99103
0
6
TX
Waiter: 303
458753
99103
0
6
TX
Waiter: 230
458753
99103
0
6
TX
Holder: 797
786466
30218
6
0
TX
Waiter: 258
786466
30218
0
6
TX
Waiter: 417
786466
30218
0
6
TX
Waiter: 439
786466
30218
0
6
TX
Waiter: 858
786466
30218
0
6
TX
Waiter: 707
786466
30218
0
6
TX
Waiter: 441
786466
30218
0
6
TX
Holder: 228
983055
22588
6
0
TX
Waiter: 169
983055
22588
0
6
TX
Waiter: 624
983055
22588
0
6
TX
Waiter: 631
983055
22588
0
6
TX
Waiter: 811
983055
22588
0
6
TX
Waiter: 804
983055
22588
0
6
TX
Holder: 595
1310760
14951
6
0
TX
Waiter: 73
1310760
14951
0
6
TX
Waiter: 699
1310760
14951
0
6
TX
Holder: 384
1703979
8630
6
0
TX
Waiter: 57
1703979
8630
0
6
TX
Waiter: 141
1703979
8630
0
6
TX
Waiter: 842
1703979
8630
0
6
TX
Waiter: 728
1703979
8630
0
6
TX
Waiter: 628
1703979
8630
0
6
TX
Waiter: 530
1703979
8630
0
6
TX
Waiter: 504
1703979
8630
0
6
TX
Waiter: 319
1703979
8630
0
6
TX
Waiter: 233
1703979
8630
0
6
TX
Waiter: 228
1703979
8630
0
6
TX
Waiter: 223
1703979
8630
0
6
TX
Waiter: 115
1703979
8630
0
6
TX
Waiter: 103
1703979
8630
0
6
TX
Waiter: 190
1703979
8630
0
6
TX
Waiter: 114
1703979
8630
0
6
TX
Holder: 215
3997712
1907
6
0
TX
Waiter: 60
3997712
1907
0
6
TX
Waiter: 284
3997712
1907
0
6
TX
Waiter: 396
3997712
1907
0
6
TX
Waiter: 595
3997712
1907
0
6
TX
Waiter: 739
3997712
1907
0
6
TX
Holder: 290
4259841
1289
6
0
TX
Waiter: 209
4259841
1289
0
6
TX
Waiter: 507
4259841
1289
0
6
TX
Waiter: 254
4259841
1289
0
6
TX
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 holly_pansy 发布
[B]奇怪,会话290有2个TX锁
1
5DFCA60C
5DFCA718
290
TX
4259841
1289
6
0
11018
1
2
5EE3DC08
5EE3DC1C
290
TM
33864
0
3
0
11018
0
3
5EE3DB84
5EE3DB98
290
TM
33981
0
3
0
11018
0
4
5EE3DB00
5EE3DB14
290
TM
33960
0
3
0
11018
0
5
5EE3DA6C
5EE3DA80
290
TM
33986
0
3
0
11018
0
6
5EE3D9E8
5EE3D9FC
290
TM
33984
0
3
0
11018
0
7
5A551B4C
5A551B5C
290
TX
458753
99103
0
6
11018
0 [/B]

再正常不过的了,这表明290是在请求这个锁,两行综合起来表达了一个意思
格式化了一下:
[php]

Lmode request
1
5DFCA60C
5DFCA718
290
TX
4259841 1289
6
0
11018
1
7
5A551B4C
5A551B5C
290
TX
458753
99103
0
6
11018
0
[/php]
每一行表明290在等待一个被别的session held的Tx的Lock。
第二行表明290想把锁定这个object(一行)为独占模式(request为6)
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 holly_pansy 发布
[B]执行
SELECT DECODE(request,0,'Holder: ','Waiter: ')||sid
sess, id1, id2, lmode, request,
type FROM
V$LOCK WHERE (id1, id2, type)

IN (SELECT id1, id2, type FROM V$LOCK WHERE request>0)
ORDER BY id1, request
结果都是TX锁
Holder: 172
458753
99103
6
0
TX
Waiter: 62
458753
99103
0
6
TX
Waiter: 71
458753
99103
0
6
TX
Waiter: 74
458753
99103
0
6
TX
。。。
[/B]

多执行几次,kill掉不变的holder session应解锁了。
如果你的系统一直是这个状态,找应用开发商好好调整下应用吧。
偶而的一次是正常的。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 hrb_qiuyb 发布
[B]
再正常不过的了,这表明290是在请求这个锁,两行综合起来表达了一个意思
格式化了一下:
[php]

Lmode request
1
5DFCA60C
5DFCA718
290
TX
4259841 1289
6
0
11018
1
7
5A551B4C
5A551B5C
290
TX
458753
99103
0
6
11018
0
[/php]
每一行表明290在等待一个被别的session held的Tx的Lock。
第二行表明290想把锁定这个object(一行)为独占模式(request为6) [/B]

每一行290(sid)的lmode=5,而request=0,应该是290本身不是在等待,而是hold这个lock了吧。
从7楼的“Holder: 290 4259841 1289 6 0 TX”也可以看出290是holder。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行