Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

163

积分

0

好友

12

主题
1#
发表于 2013-1-17 10:21:28 | 查看: 5153| 回复: 6
Oracle 10.2.0.5

数据库在之前的某一段时间 出现enq: TX - row lock contention ,导致db_time急剧增高.

那我要怎么知道 在那一段时间中,是哪一个sql引起的enq: TX - row lock contention ?

谢谢 !
2#
发表于 2013-1-17 14:57:34
本帖最后由 check.ora 于 2013-1-17 15:04 编辑

数据库版本:
  1. SYS>select * from v$version;

  2. BANNER
  3. ----------------------------------------------------------------
  4. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
  5. PL/SQL Release 10.2.0.1.0 - Production
  6. CORE    10.2.0.1.0      Production
  7. TNS for Linux: Version 10.2.0.1.0 - Production
  8. NLSRTL Version 10.2.0.1.0 - Production
复制代码
--数据库open 状态下通过这个视图能查看x$和V$等这些动态视图;
  1. SYS>col TABLE_NAME for a28
  2. SYS>col COMMENTS for a38
  3. SYS>select * from dict where table_name like '%V$LOCK%';

  4. TABLE_NAME                   COMMENTS
  5. ---------------------------- --------------------------------------
  6. V$LOCK_ELEMENT               Synonym for V_$LOCK_ELEMENT
  7. V$LOCKS_WITH_COLLISIONS      Synonym for V_$LOCKS_WITH_COLLISIONS
  8. V$LOCKED_OBJECT              Synonym for V_$LOCKED_OBJECT
  9. V$LOCK                       Synonym for V_$LOCK
  10. V$LOCK_ACTIVITY              Synonym for V_$LOCK_ACTIVITY
  11. V$LOCK_TYPE                  Synonym for V_$LOCK_TYPE
  12. GV$LOCK_ELEMENT              Synonym for GV_$LOCK_ELEMENT
  13. GV$LOCKS_WITH_COLLISIONS     Synonym for GV_$LOCKS_WITH_COLLISIONS
  14. GV$LOCKED_OBJECT             Synonym for GV_$LOCKED_OBJECT
  15. GV$LOCK                      Synonym for GV_$LOCK
  16. GV$LOCK_ACTIVITY             Synonym for GV_$LOCK_ACTIVITY
  17. GV$LOCK_TYPE                 Synonym for GV_$LOCK_TYPE
复制代码
具体的查询方法还请自己寻找,以便加深你和这些视图的“感情”,另外你也可用此法寻找你想要的视图

回复 只看该作者 道具 举报

3#
发表于 2013-1-17 15:30:04
10g有ASH的情况还是很简单的,举个例子

session A:


SQL> select * from mac;

        T1
----------
         1
        10
       100
      1200
         0
         0
         0
         0

8 rows selected.

SQL> update mac set t1=t1+1;

8 rows updated.



session B;

SQL> delete mac;


SQL> select event,sid from v$session where wait_class!='Idle';

EVENT                                                                   SID
---------------------------------------------------------------- ----------
SQL*Net message to client                                               136
enq: TX - row lock contention                                           143



在今后的7天时间内都能查验相关 enq: TX - row lock contention   信息


  1. SQL> select session_id,sql_id,count(*) from dba_hist_active_sess_history where event='enq: TX - row lock contention' group by session_id,sql_id;

  2. no rows selected

  3. SQL> select session_id,sql_id,count(*) from v$active_session_history where event='enq: TX - row lock contention' group by session_id,sql_id;   

  4. SESSION_ID SQL_ID          COUNT(*)
  5. ---------- ------------- ----------
  6.        143 gv17udzstaqa4         73
  7.           
  8.           
  9. SQL> select sql_text from v$SQL WHERE SQL_ID='gv17udzstaqa4';

  10. SQL_TEXT
  11. --------------------------------------------------------------------------------
  12. delete mac

  13. SQL> select sql_text from dba_hist_sqltext WHERE SQL_ID='gv17udzstaqa4';

  14. no rows selected


  15. SQL> exec dbms_workload_repository.create_snapshot;

  16. PL/SQL procedure successfully completed.

  17. SQL> select session_id,sql_id,count(*) from dba_hist_active_sess_history where event='enq: TX - row lock contention' group by session_id,sql_id;

  18. SESSION_ID SQL_ID          COUNT(*)
  19. ---------- ------------- ----------
  20.        143 gv17udzstaqa4          7

  21. SQL>  select sql_text from dba_hist_sqltext WHERE SQL_ID='gv17udzstaqa4';

  22. SQL_TEXT
  23. --------------------------------------------------------------------------------
  24. delete mac          
  25.           
复制代码

回复 只看该作者 道具 举报

4#
发表于 2013-1-17 15:30:45
dba_hist_active_sess_history视图查找对应时间段,对应event的sql_id

回复 只看该作者 道具 举报

5#
发表于 2013-1-17 16:29:41
repentance 发表于 2013-1-17 15:30
dba_hist_active_sess_history视图查找对应时间段,对应event的sql_id

如果出现这个等待时候木有生成快照是看不到信息的。你看刘大的例子,

回复 只看该作者 道具 举报

6#
发表于 2013-1-17 17:37:25
ricky 发表于 2013-1-17 16:29
如果出现这个等待时候木有生成快照是看不到信息的。你看刘大的例子,

那有没有别的方法?
谢谢

回复 只看该作者 道具 举报

7#
发表于 2013-1-17 17:45:01
repentance 发表于 2013-1-17 15:30
dba_hist_active_sess_history视图查找对应时间段,对应event的sql_id

谢谢 ,可以查到sql 多谢

SELECT * FROM dba_hist_active_sess_history
where instance_number=1
and snap_id in(15431,15430,15432,15429)
and  event='enq: TX - row lock contention'

回复 只看该作者 道具 举报

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

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 04:33 , Processed in 0.054753 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569