본문 바로가기
카테고리 없음

[Oracle] ASH Lock History

by 기미차니 2022. 10. 25.
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
-- #####################################################
-- ASH Lock History 
--
-- Active Session History Lock History 확인
-- #####################################################
select /*+ opt_param('_complex_view_merging','true') */ to_char(max(blocked.sample_time),'YYYY-MM-DD HH24:MI:SS') as sample_time
     , holder.instance_number              as holder_inst_num
     , holder.machine                      as holder_machine
     , holder.program                      as holder_program
     , holder.session_id                   as holder_sid
     , holder_user.username                as holder_username
     , substr(holder_sql.sql_text,1,50)    as holder_sql_text
     , ' ------------------> '             as is_blocking
     , blocked.instance_number             as blocked_inst_num
     , blocked.machine                     as blocked_machine
     , blocked.program                     as blocked_program
     , blocked.session_id                  as blocked_sid
     , blocked_user.username               as blocked_username
     , blocked.session_state               as blocked_session_state
     , blocked.event                       as blocked_event
     , blocked.blocking_session            as blocked_blocking_session
     , blocked.sql_id                      as blocked_sql_id
--     , blocked.sql_child_number            as blocked_sql_child_number
     , sys_obj.name                        as blocked_table_name
     , substr(blocked_sql.sql_text,1,50)   as blocked_sql_text
  from dba_hist_snapshot sn
       inner join
       dba_hist_active_sess_history holder
          on holder.dbid = sn.dbid
         and holder.snap_id = sn.snap_id 
         and holder.instance_number = sn.instance_number
       inner join
       dba_hist_active_sess_history blocked
          on holder.session_id = blocked.blocking_session
         and holder.session_serial# = blocked.blocking_session_serial# 
       inner join
       sys.obj$ sys_obj
          on sys_obj.obj# = blocked.current_obj#
       inner join
       dba_users holder_user
          on holder.user_id = holder_user.user_id
       inner join
       dba_users blocked_user
          on blocked.user_id = blocked_user.user_id
        left outer join
       v$sql blocked_sql
          on blocked_sql.sql_id = blocked.sql_id
         and blocked_sql.child_number = blocked.sql_child_number
        left outer join
       v$sql holder_sql
          on holder_sql.sql_id = holder.sql_id
         and holder_sql.child_number = holder.sql_child_number
 where blocked.instance_number = 2
   and blocked.sample_time    >= TO_DATE('2022-10-25 09:40:00','YYYY-MM-DD HH24:MI:SS'
   and blocked.sample_time    <= TO_DATE('2022-10-25 09:50:00','YYYY-MM-DD HH24:MI:SS'
   AND sn.begin_interval_time >= TO_DATE('2022-10-25 09:40:00','YYYY-MM-DD HH24:MI:SS'
   AND sn.begin_interval_time <= TO_DATE('2022-10-25 09:50:00','YYYY-MM-DD HH24:MI:SS'
   and blocked.event = 'enq: TX - row lock contention'
 group by holder.instance_number
        , holder.machine
        , holder.program
        , holder.session_id
        , holder_user.username
        , ' ------------------> '
        , blocked.instance_number
        , blocked.machine
        , blocked.program
        , blocked.session_id
        , blocked_user.username
        , blocked.session_state
        , blocked.event
        , blocked.blocking_session
        , blocked.sql_id
        , blocked.sql_child_number
        , sys_obj.name
        , holder_sql.sql_text
        , blocked_sql.sql_text
 order by sample_time
cs
반응형

댓글