事务队列等待深入分析之记录锁
来源:优易学  2011-11-4 17:04:50   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  这一类锁是代码逻辑造成的——第一个获取锁的事务没有提交或回滚,导致其他会话等待。因此,找到逻辑代码是解决此类锁等待的关键。对于等待事务,由于其语句被锁阻塞住,因此从V$SESSION中得到的SQL信息就是其当前正在执行的语句,也就是发生等待的语句:www.Examda.CoM考试就到考试大
  HELLODBA.COM> select w.waiting_session,
  2 s2.username waiting_user,
  3 q2.sql_text waiting_sql
  4 from dba_waiters w,
  5 v$session s2,
  6 v$sqlarea q2
  7 where w.waiting_session = s2.sid
  8 and s2.sql_address = q2.address;
  WAITING_SESSION WAITING_USER WAITING_SQL
  --------------- ------------------------------ ---------------------------------------------
  127 DEMO delete from tx_lock_tab where a=100
  对于持有锁的会话,由于其在申请到锁资源后还可能会执行其他语句,因此不能通过v$session直接查询到发生锁的语句,而需要通过v$open_cursor来找到该语句:
  HELLODBA.COM> select w.holding_session,
  2 s1.username holding_user,
  3 q1.sql_text holding_sql
  4 from dba_waiters w,
  5 v$session s1,
  6 v$open_cursor q1,
  7 v$locked_object l1,
  8 dba_objects o1
  9 where w.holding_session = s1.sid
  10 and s1.sid = q1.sid(+)
  11 and l1.session_id = s1.sid
  12 and l1.object_id = o1.object_id
  13 and (upper(q1.sql_text) like 'ÞLETE%' or upper(q1.sql_text) like '%UPDATE%')
  14 and upper(q1.sql_text) like '%'||o1.object_name||'%';
  HOLDING_SESSION HOLDING_USER HOLDING_SQL
  --------------- ------------------------------ ------------------------------------------------------------
  129 DEMO delete from tx_lock_tab where a=100
  这一查询结果可能会存在多条记录,那我们就需要结合等待会话的语句,从逻辑上分析是哪一条语句产生的锁。
  除了语句,我们还可以通过会话信息中找到发生等待的具体数据记录:
  HELLODBA.COM> select s.sid, o.object_name wait_object
  2 s.row_wait_obj#,
  3 s.row_wait_file#,
  4 s.row_wait_block#,
  5 s.row_wait_row#,
  6 dbms_rowid.rowid_create(1,
  7 s.row_wait_obj#,
  8 s.row_wait_file#,
  9 s.row_wait_block#,
  10 s.row_wait_row#) l_rowid
  11 from v$session s, v$enqueue_lock l, dba_objects o
  12 where s.sid = l.sid and s.row_wait_obj# = o.object_id(+)
  13 and s.sid = 127;
  SID WAIT_OBJECT ROW_WAIT_OBJ# ROW_WAIT_FILE# ROW_WAIT_BLOCK# ROW_WAIT_ROW# L_ROWID
  ---------- ----------- ------------- -------------- --------------- ------------- ------------------
  127 TX_LOCK_TAB 198074 5 67366 1 AAAwW6AAFAAAQcmAAB

上一页  [1] [2] [3] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训