Oracle死锁log

LiuTaiYe 2009-07-22 01:17:17
以下是lock信息,谁能看出点问题来吗?


SQL*Plus: Release 10.2.0.4.0 - Production on Tue Jul 21 15:50:01 2009

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit
Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options

SQL> ** Sessions Waiting on Blocked Session

SID SERIAL# STATUS WAITING_USERNAME OSUSER
MACHINE STATUS ROWS_PROCESSED
----- ------- -------- ------------------------------
------------------------------ ---------- -------- --------------
SQL_TEXT
-----------------------------------------------------------------
121 3266 ACTIVE DEANZA root
ussy-mesap ACTIVE 137127

p5
UPDATE UNIT SET note_key=note_key WHERE unit_key=:"SYS_B_0"

252 5424 ACTIVE DEANZA root
ussy-mesap ACTIVE 137127

p5
UPDATE UNIT SET note_key=note_key WHERE unit_key=:"SYS_B_0"

252 8481 ACTIVE DEANZA root
ussy-mesap ACTIVE 140278

p2
UPDATE UNIT SET note_key=note_key WHERE unit_key=:"SYS_B_0"

270 7869 ACTIVE DEANZA root
ussy-mesap ACTIVE 137127

p3
UPDATE UNIT SET note_key=note_key WHERE unit_key=:"SYS_B_0"

279 9276 ACTIVE DEANZA root
ussy-mesap ACTIVE 6

p3
UPDATE WORK_ORDER_ITEMS SET quantity_in_progress=quantity_in_prog
ress+:"SYS_B_0", last_modified_time=TO_TIMESTAMP (:"SYS_B_1", :"S
YS_B_2"), trx_id=:"SYS_B_3", xfr_update_pid=:"SYS_B_4" WHERE orde
r_item_key=:"SYS_B_5"

279 9276 ACTIVE DEANZA root
ussy-mesap ACTIVE 67

p3
UPDATE WORK_ORDER_ITEMS SET quantity_in_progress=quantity_in_prog
ress+:"SYS_B_0", last_modified_time=TO_TIMESTAMP (:"SYS_B_1", :"S
YS_B_2"), trx_id=:"SYS_B_3", xfr_update_pid=:"SYS_B_4" WHERE orde
r_item_key=:"SYS_B_5"


6 rows selected.

** Session Sql Blocking Lock

SID SERIAL# STATUS BLOCKING_USERNAME OSUSER
MACHINE STATUS ROWS_PROCESSED
----- ------- -------- ------------------------------
------------------------------ ---------- -------- --------------
SQL_TEXT
-----------------------------------------------------------------
121 3266 ACTIVE DEANZA root
ussy-mesap ACTIVE 137129

p5
UPDATE UNIT SET note_key=note_key WHERE unit_key=:"SYS_B_0"

273 5172 ACTIVE DEANZA root
ussy-mesap ACTIVE 697

p3
UPDATE TRACKED_OBJECT_STATUS SET previous_status=:"SYS_B_00", sta
tus=:"SYS_B_01", state=:"SYS_B_02", reason=NULL, previous_node_ke
y=-:"SYS_B_03", previous_node_name=NULL, previous_node_type=NULL,
previous_p_line_key=-:"SYS_B_04", previous_p_line_name=NULL, pre
vious_robj_key=-:"SYS_B_05", previous_robj_name=NULL, previous_ro
bj_type=NULL, queue_key=-:"SYS_B_06", queue_name=NULL, route_step
_key=:"SYS_B_07", route_step_name=NULL, wc_key=-:"SYS_B_08", wc_n
ame=NULL, p_queue_key=:"SYS_B_09", p_queue_name=NULL, p_line_key=
-:"SYS_B_10", p_line_name=NULL, tobj_queue_history_key=-:"SYS_B_1
1", revision=revision+:"SYS_B_12", last_modified_time=TO_TIMESTAM
P (:"SYS_B_13", :"SYS_B_14"), trx_id=:"SYS_B_15", xfr_update_pid=
:"SYS_B_16" WHERE tobj_status_key=:"SYS_B_17"

273 5172 ACTIVE DEANZA root
ussy-mesap ACTIVE 715

p3
UPDATE TRACKED_OBJECT_STATUS SET previous_status=:"SYS_B_00", sta
tus=:"SYS_B_01", state=:"SYS_B_02", reason=NULL, previous_node_ke
y=-:"SYS_B_03", previous_node_name=NULL, previous_node_type=NULL,
previous_p_line_key=-:"SYS_B_04", previous_p_line_name=NULL, pre
vious_robj_key=-:"SYS_B_05", previous_robj_name=NULL, previous_ro
bj_type=NULL, queue_key=-:"SYS_B_06", queue_name=NULL, route_step
_key=:"SYS_B_07", route_step_name=NULL, wc_key=-:"SYS_B_08", wc_n
ame=NULL, p_queue_key=:"SYS_B_09", p_queue_name=NULL, p_line_key=
-:"SYS_B_10", p_line_name=NULL, tobj_queue_history_key=-:"SYS_B_1
1", revision=revision+:"SYS_B_12", last_modified_time=TO_TIMESTAM
P (:"SYS_B_13", :"SYS_B_14"), trx_id=:"SYS_B_15", xfr_update_pid=
:"SYS_B_16" WHERE tobj_status_key=:"SYS_B_17"

273 5172 ACTIVE DEANZA root
ussy-mesap ACTIVE 850

p3
UPDATE TRACKED_OBJECT_STATUS SET previous_status=:"SYS_B_00", sta
tus=:"SYS_B_01", state=:"SYS_B_02", reason=NULL, previous_node_ke
y=-:"SYS_B_03", previous_node_name=NULL, previous_node_type=NULL,
previous_p_line_key=-:"SYS_B_04", previous_p_line_name=NULL, pre
vious_robj_key=-:"SYS_B_05", previous_robj_name=NULL, previous_ro
bj_type=NULL, queue_key=-:"SYS_B_06", queue_name=NULL, route_step
_key=:"SYS_B_07", route_step_name=NULL, wc_key=-:"SYS_B_08", wc_n
ame=NULL, p_queue_key=:"SYS_B_09", p_queue_name=NULL, p_line_key=
-:"SYS_B_10", p_line_name=NULL, tobj_queue_history_key=-:"SYS_B_1
1", revision=revision+:"SYS_B_12", last_modified_time=TO_TIMESTAM
P (:"SYS_B_13", :"SYS_B_14"), trx_id=:"SYS_B_15", xfr_update_pid=
:"SYS_B_16" WHERE tobj_status_key=:"SYS_B_17"

273 5172 ACTIVE DEANZA root
ussy-mesap ACTIVE 1770

p3
UPDATE TRACKED_OBJECT_STATUS SET previous_status=:"SYS_B_00", sta
tus=:"SYS_B_01", state=:"SYS_B_02", reason=NULL, previous_node_ke
y=-:"SYS_B_03", previous_node_name=NULL, previous_node_type=NULL,
previous_p_line_key=-:"SYS_B_04", previous_p_line_name=NULL, pre
vious_robj_key=-:"SYS_B_05", previous_robj_name=NULL, previous_ro
bj_type=NULL, queue_key=-:"SYS_B_06", queue_name=NULL, route_step
_key=:"SYS_B_07", route_step_name=NULL, wc_key=-:"SYS_B_08", wc_n
ame=NULL, p_queue_key=:"SYS_B_09", p_queue_name=NULL, p_line_key=
-:"SYS_B_10", p_line_name=NULL, tobj_queue_history_key=-:"SYS_B_1
1", revision=revision+:"SYS_B_12", last_modified_time=TO_TIMESTAM
P (:"SYS_B_13", :"SYS_B_14"), trx_id=:"SYS_B_15", xfr_update_pid=
:"SYS_B_16" WHERE tobj_status_key=:"SYS_B_17"

252 5424 ACTIVE DEANZA root
ussy-mesap ACTIVE 137129

p5
UPDATE UNIT SET note_key=note_key WHERE unit_key=:"SYS_B_0"

270 7869 ACTIVE DEANZA root
ussy-mesap ACTIVE 137129

p3
UPDATE UNIT SET note_key=note_key WHERE unit_key=:"SYS_B_0"

252 8481 ACTIVE DEANZA root
ussy-mesap ACTIVE 140279

p2
UPDATE UNIT SET note_key=note_key WHERE unit_key=:"SYS_B_0"

279 9276 ACTIVE DEANZA root
ussy-mesap ACTIVE 6

p3
UPDATE WORK_ORDER_ITEMS SET quantity_in_progress=quantity_in_prog
ress+:"SYS_B_0", last_modified_time=TO_TIMESTAMP (:"SYS_B_1", :"S
YS_B_2"), trx_id=:"SYS_B_3", xfr_update_pid=:"SYS_B_4" WHERE orde
r_item_key=:"SYS_B_5"

279 9276 ACTIVE DEANZA root
ussy-mesap ACTIVE 67

p3
UPDATE WORK_ORDER_ITEMS SET quantity_in_progress=quantity_in_prog
ress+:"SYS_B_0", last_modified_time=TO_TIMESTAMP (:"SYS_B_1", :"S
YS_B_2"), trx_id=:"SYS_B_3", xfr_update_pid=:"SYS_B_4" WHERE orde
r_item_key=:"SYS_B_5"

...全文
219 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiuTaiYe 2009-09-01
  • 打赏
  • 举报
回复
由于客户和我们都无法复制这个问题,无法进行进一步的研究了。

谢谢各位热心的回复。
Well 2009-08-08
  • 打赏
  • 举报
回复
学习了。。。只能在学习中进步。。。
meditatorx 2009-08-08
  • 打赏
  • 举报
回复
SELECT /*+ rule */ s.username, 
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
FROM v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL


test

kysstech 2009-08-08
  • 打赏
  • 举报
回复
学习
SYUEHOKO 2009-08-06
  • 打赏
  • 举报
回复
学习了。
majy 2009-08-06
  • 打赏
  • 举报
回复
看看相关的表是不是建了外键,却没有在从表外键字段上建立相应的索引,这个是最有可能引起死锁的原因之一。Bitmap索引也是存在这个问题。
liuyi8903 2009-07-22
  • 打赏
  • 举报
回复
既然是update比较多.

那么从客户给的信息中没办法看出来是具体哪种情况造成的.


1. 是否有itl waits

2. 是否有unique index or bitmap index

3. 普通的行级别的竞争,也就是commit/rollback的问题.

可看看v$lock dba_waiters v$enqueue_status的情况.

特别是v$lock

dba_waiters可以看到谁阻塞了谁.

最后一个可以看到整体的enqueue情况.

v$session_wait也最好是观察一下.

lan125709702 2009-07-22
  • 打赏
  • 举报
回复
学习中,帮顶
inthirties 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liutaiye 的回复:]
引用 4 楼 inthirties 的回复:
检查一下应用,是不是应用里有dead lock

这个难度有点大。产品已经运行10几年了,代码大概在100000000 (一亿行左右)。开发环境根本就模拟不出来。
[/Quote]

那就难办了,

查查V$LOCK, V$LOCKED_OBJECT这两个动态视图,看看被锁的对象
suncrafted 2009-07-22
  • 打赏
  • 举报
回复
帮顶了
LiuTaiYe 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inthirties 的回复:]
检查一下应用,是不是应用里有dead lock
[/Quote]
这个难度有点大。产品已经运行10几年了,代码大概在100000000 (一亿行左右)。开发环境根本就模拟不出来。
LiuTaiYe 2009-07-22
  • 打赏
  • 举报
回复
已经让客户执行了
ALTER SYSTEM KILL SESSION '121,3266';
ALTER SYSTEM KILL SESSION '252,5424';
ALTER SYSTEM KILL SESSION '270,7869';
ALTER SYSTEM KILL SESSION '273,5172';
ALTER SYSTEM KILL SESSION '279,9276';
ALTER SYSTEM KILL SESSION '252,8481';
ALTER SYSTEM KILL SESSION '273,1';
ALTER SYSTEM KILL SESSION '279,1';

我无法看客户的DB,所以上述的死锁检测语句不适合,只能在客户提供的信息上分析:(
inthirties 2009-07-22
  • 打赏
  • 举报
回复
检查一下应用,是不是应用里有dead lock
BlueskyWide 2009-07-22
  • 打赏
  • 举报
回复
1.死锁检测:
SELECT /*+ rule */ s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
FROM v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL

2.以DBA用户,可以通过alter system kill session 'sid,serial'来杀掉会话。
LiuTaiYe 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hebo2005 的回复:]
update后未commit?
[/Quote]

肯定有commit.

这是一个JBoss cluster (5台server) + Oracle RAC的环境。死锁出现时,客户提供的信息只有以上这些。
hebo2005 2009-07-22
  • 打赏
  • 举报
回复
update后未commit?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧