找到相同查询的最慢的SQL执行


在多次运行相同的查询时,请考虑几个问题:

  • 查询是否总是在相同的时间内执行?
  • 如果某些执行速度较慢,则执行时间最慢?
  • 何时发出最慢的曝光?
  • 还有什么能弄清楚最慢的曝光?

所有这些都可以从活动会话历史记录或ASH中的数据回答。 ÂQuale查询以秒为单位的最大,最小和平均执行时间以及最慢的exectuiton的开始时间和结束时间给出的最慢的执行时间:

Col AV 9999999
col mx for 9999999
col mn for 9999999

select
   sql_id,
   count(*),
   round(min(delta),0) mn,
   round(avg(delta),0) av,
   round(max(delta),0) mx,
   substr(max(times),12) max_run_time
from (
   select
        sql_id,
        sql_exec_id,
        max(delta) delta ,
        -- lpad sets a fixed width on delta so it can be
        -- stripped off above with substr
        -- delta in "times" is just for sorting not displaying
        lpad(round(max(delta),0),10) || ' ' ||
        to_char(min(start_time),'YY-MM-DD HH24:MI:SS')  || ' ' ||
        to_char(max(end_time),'YY-MM-DD HH24:MI:SS')  times
   from ( select
                                            sql_id,
                                            sql_exec_id,
              cast(sample_time as date)     end_time,
              cast(sql_exec_start as date)  start_time,
              ((cast(sample_time    as date)) -
               (cast(sql_exec_start as date))) * (3600*24) delta

           from
              dba_hist_active_sess_history.
           where sql_exec_id is not null
        )
   group by sql_id,sql_exec_id

)
group by sql_id
having count(*) > 10
order by mx
/

sql_id count(*)mn av mx max_run_time
------------- ---------- -------- -------- -------- -----------------------------------
155VJQZJQP58F 27 0 115 786 11-04-11 07:39:47 11-04-11 07:41:20
7nf5917x3tq5x        113        0      129      791 11-04-11 01:03:19 11-03-02 04:16:09
asg774pz0kqga         11       11      225      799 11-04-14 12:20:10 11-03-02 12:18:58
1kf1jsykb1nk6        529        0      107      800 11-04-09 18:41:28 11-03-01 23:13:56
8rua4c9agcqkb        978        0       73      820 11-03-01 23:13:50 11-03-01 23:13:56
fdagtr1sdk8tn        313        0      242      841 11-04-08 21:30:31 11-04-08 21:30:38
7b5w34atn8q1h        124        0       25      898 11-03-07 20:53:17 11-03-07 20:53:23
9w7mbuv734tfy         11       30      509      954 11-04-14 09:00:55 11-03-02 04:27:33
88qxmg220db9s         23        4      357     1040 11-04-13 22:08:20 11-04-13 02:20:09
83ngzw213v0cs        302        1      207     1122 11-04-11 16:26:32 11-03-07 16:12:11
34cgtc9xkgxny         61      978     1163     1272 11-03-02 10:06:24 11-03-02 10:06:30
g5u58zpg0tuk8         97        1       62     1359 11-04-13 02:49:33 11-04-12 02:23:39
6tkqndn1tzf23         29        7      187     1370 11-04-13 06:56:43 11-03-02 06:56:54
g4wrnvdmf23b1         11       19      458     1397 11-04-14 12:22:28 11-03-02 12:21:19
bpkg6y9wvf717         31        0      189     1427 11-04-13 21:19:51 11-03-02 21:08:00
4d6m2q3ngjcv9        320        3      485     1701 11-04-10 18:00:54 11-03-01 23:10:55
882tp5sbq1tq5         17       39      367     1795 11-04-14 14:00:30 11-03-01 23:04:33
5k7vccwjr5ahd       2653        0       33     1963 11-04-12 09:06:08 11-03-01 23:10:15
44034jty9vnrg         19        2      188     1968 11-03-03 09:17:34 11-03-03 09:17:43
g9n69a23s3wxz         40        6      280     2009 11-04-08 13:47:23 11-03-03 09:37:38
ds8cz0fb8w147        161       13      274     2531 11-04-12 16:10:21 11-03-01 23:11:55
bzyny95313u12        114        0       47     2599 11-03-03 03:06:18 11-03-03 03:06:25
0fvrpk7476b7y         26        0      133     3068 11-03-07 07:57:56 11-03-07 07:58:00
1pjp66rxcj6tg         15       57      768     3106 11-04-09 17:25:21 11-03-07 08:58:26
8r5wuxk1dprhr         39       24      841     3510 11-04-14 14:00:47 11-03-02 09:54:37
0w5uu5kngyyty         21        0      442     3652 11-04-11 08:00:21 11-04-11 09:01:13
0hbv80w9ypy0n        161        0     1184     4089 11-04-12 22:26:09 11-03-02 04:36:15
71fwb4n6a92fv         49       30      677     4481 11-04-10 17:01:17 11-03-01 23:40:45
0bujgc94rg3fj        604        0       25     4929 11-04-08 10:53:34 11-04-08 12:15:43
64dqhdkkw63fd       1083        0        7     7147 11-03-07 04:01:01 11-03-07 06:00:08
990m08w8xav7s        591        0       52     7681 11-04-13 00:39:27 11-04-13 00:39:37
2n5369dsuvn5a         16      303     5727    10472 11-04-14 11:18:11 11-04-14 14:12:43
2spgk3k0f7quz        251        0      546    29607 11-04-12 12:11:47 11-04-12 12:11:48
36pd759xym9tc         12     1391    23862    37934 11-04-13 19:25:49 11-03-01 23:00:12
497wh6n7hu14f         49        0     5498    69438 11-04-12 19:01:17 11-04-13 12:03:54

我们可以添加执行的直方图传播到查询

Col 1持续99999
col 2 for 99999
col 3 for 9999
col 4 for 999
col 5 for 99
col av for 99999.9
col ct for 99999
col mn for 999
col av for 99999.9

with pivot_data as (
select
      sql_id,
      ct,
      mxdelta mx,
      mndelta mn,
      avdelta av,
      -- high_boundary is set to maxdelta + 1 so that
      -- nothing ends up in the overflow bucket
      -- otherwise the max value ends up in the overflow bucket
      width_bucket(delta,mndelta,mxdelta+1,5) as bucket  ,
      substr(times,12) max_run_time
from (
select
   sql_id,
   delta,
   count(*) OVER (PARTITION BY sql_id) ct,
   max(delta) OVER (PARTITION BY sql_id) mxdelta,
   min(delta) OVER (PARTITION BY sql_id) mndelta,
   avg(delta) OVER (PARTITION BY sql_id) avdelta,
   max(times) OVER (PARTITION BY sql_id) times
from (
   select
        sql_id,
        sql_exec_id,
        max(delta) delta ,
        -- lpad sets a fixed width on delta so it can be
        -- stripped off above with substr
        -- delta in "times" is just for sorting not displaying
        lpad(round(max(delta),0),10) || ' ' ||
        to_char(min(start_time),'YY-MM-DD HH24:MI:SS')  || ' ' ||
        to_char(max(end_time),'YY-MM-DD HH24:MI:SS')  times
   from ( select
                                            sql_id,
                                            sql_exec_id,
              cast(sample_time as date)     end_time,
              cast(sql_exec_start as date)  start_time,
              ((cast(sample_time    as date)) -
               (cast(sql_exec_start as date))) * (3600*24) delta
           from
              dba_hist_active_sess_history.
           where sql_exec_id is not null
        )
   group by sql_id,sql_exec_id
)
)
where ct > &min_repeat_executions_filter
)
select * from pivot_data
PIVOT ( count(*) FOR bucket IN (1,2,3,4,5))
order by mx,av;
/
SQL_ID CT MX MN AV MAX_RUN_TIME 1 2 3 4 5
------------- ------ ---------- ---- -------- ----------------------------------- ------ ------ ----- ---- ---
8rua4c9agcqkb 978 820 0 72.7 11-03-01 23:13:50 11-03-01 23:13:56 830 116 21 9 2
fdagtr1sdk8tn    313        841    0    241.8 11-04-08 21:30:31 11-04-08 21:30:38    194     45     0    0  74
7b5w34atn8q1h    124        898    0     24.8 11-03-07 20:53:17 11-03-07 20:53:23    122      0     0    0   2
83ngzw213v0cs    302       1122    1    207.5 11-04-11 16:26:32 11-03-07 16:12:11    200     68    21    6   7
g5u58zpg0tuk8     97       1359    1     62.1 11-04-13 02:49:33 11-04-12 02:23:39     92      3     1    0   1
4d6m2q3ngjcv9    320       1701    3    484.7 11-04-10 18:00:54 11-03-01 23:10:55     92    168    50    9   1
5k7vccwjr5ahd   2653       1963    0     33.4 11-04-12 09:06:08 11-03-01 23:10:15   2623     15     8    4   3
ds8cz0fb8w147    161       2531   13    273.8 11-04-12 16:10:21 11-03-01 23:11:55    136     18     5    1   1
bzyny95313u12    114       2599    0     46.5 11-03-03 03:06:18 11-03-03 03:06:25    113      0     0    0   1
0hbv80w9ypy0n    161       4089    0   1183.9 11-04-12 22:26:09 11-03-02 04:36:15     27    116     9    6   3
71fwb4n6a92fv     49       4481   30    676.9 11-04-10 17:01:17 11-03-01 23:40:45     38      6     2    2   1
0bujgc94rg3fj    604       4929    0     24.7 11-04-08 10:53:34 11-04-08 12:15:43    601      1     1    0   1
64dqhdkkw63fd   1083       7147    0      7.2 11-03-07 04:01:01 11-03-07 06:00:08   1082      0     0    0   1
990m08w8xav7s    591       7681    0     51.8 11-04-13 00:39:27 11-04-13 00:39:37    587      0     0    2   2
2spgk3k0f7quz    251      29607    0    546.1 11-04-12 12:11:47 11-04-12 12:11:48    247      2     0    0   2
497wh6n7hu14f     49      69438    0   5498.2 11-04-12 19:01:17 11-04-13 12:03:54     44      1     0    1   3

最后添加最长运行执行的SQL_EXEC_ID。然后,此SQL_EXEC_ID可以用于查看灰烬中的事件,以便该特定执行

Col 1持续99999
col 2 for 99999
col 3 for 9999
col 4 for 999
col 5 for 99
col av for 99999
col ct for 99999
col mn for 999
col av for 99999.9
col longest_sql_exec_id for A10

WITH pivot_data AS (
SELECT
      sql_id,
      ct,
      mxdelta mx,
      mndelta mn,
      round(avdelta) av,
      widey_bucket(delta_in_seconds,mndelta,mxdelta + .1,5)作为桶,
      substr(times,12)max_run_time,
      substr(longest_sql_exec_id,12)longest_sql_exec_id
FROM (
SELECT
   sql_id,
   delta_in_seconds,
   count(*)over(sql_id分区)ct,
   Max(delta_in_seconds)over(sql_id的分区)mxdelta,
   min(delta_in_seconds)over(sql_id的分区)mndelta,
   avg(delta_in_seconds)over(sql_id的分区)avdelta,
   最多(次)过(由SQL_ID分区)次数,
   max(longest_sql_exec_id)over(sql_id的分区)longest_sql_exec_id
FROM (
   SELECT
        sql_id,
        sql_exec_id,
        max(delta_in_seconds)delta_in_seconds,
        LPAD(圆形(最大(delta_in_seconds),0),10)||' ' ||
        to_char(min(start_time),'YY-MM-DD HH24:MI:SS')  || ' ' ||
        to_char(max(end_time),'YY-MM-DD HH24:MI:SS')  times,
        LPAD(圆形(最大(delta_in_seconds),0),10)||' ' ||
        to_char(max(sql_exec_id))longest_sql_exec_id
   FROM ( SELECT
                                            sql_id,
                                            sql_exec_id,
              演员(Sample_time ray)end_time,
              演员(SQL_EXEC_START为日期)start_time,
              ((演员(Sample_time yate))-
               (演员(SQL_EXEC_START为日期))*(3600 * 24)delta_in_seconds
           FROM
              dba_hist_active_sess_history.
           其中sql_exec_id不是null
        )
   由SQL_ID,SQL_EXEC_ID组组
)
)
where ct > &min_repeat_executions_filter
 and  mxdelta > &min_elapsed_time
)
从pivot_data中选择*
枢轴(1,2,3,4,5)桶(*)计数(*)))
按MX DESC,AV DESC订购
;

SQL_ID            CT         MX   MN       AV MAX_RUN_TIME                        LONGEST_SQ      1      2     3    4   5
------------- ------ ---------- ---- -------- ----------------------------------- ---------- ------ ------ ----- ---- ---
2spgk3k0f7quz    251      29607    0    546.0 11-04-12 12:11:47 11-04-12 20:25:14 16781748      247      2     0    0   2
990m08w8xav7s    591       7681    0     52.0 11-04-13 00:39:27 11-04-13 02:47:28 16786685      587      0     0    2   2
64dqhdkkw63fd   1083       7147    0      7.0 11-03-07 04:01:01 11-03-07 06:00:08 16777218     1082      0     0    0   1
0bujgc94rg3fj    604       4929    0     25.0 11-04-08 10:53:34 11-04-08 12:15:43 16814628      601      1     1    0   1
0hbv80w9ypy0n    161       4089    0   1184.0 11-03-02 04:36:10 11-04-12 23:34:18 16777290       27    116     9    6   3
bzyny95313u12    114       2599    0     47.0 11-03-03 03:06:18 11-03-03 03:49:37 16781191      113      0     0    0   1
ds8cz0fb8w147    161       2531   13    274.0 11-03-01 23:11:48 11-04-12 16:10:37 16777285      136     18     5    1   1
5k7vccwjr5ahd   2653       1963    0     33.0 11-03-01 23:10:12 11-04-12 09:06:12 16778244     2623     15     8    4   3
4d6m2q3ngjcv9    320       1701    3    485.0 11-03-01 23:10:53 11-04-10 18:01:26 16777261       92    168    50    9   1
g5u58zpg0tuk8     97       1359    1     62.0 11-04-12 02:23:37 11-04-13 02:51:09 16777217       92      3     1    0   1
34cgtc9xkgxny     61       1272  978   1163.0 11-03-02 10:06:24 11-03-02 10:27:36 16777250        4      4    14   30   9
09-02-05-623_950x510

21 thoughts on “找到相同查询的最慢的SQL执行

  • 2013年9月12日在晚上8:34
    永久链接

    嗨凯尔,

    以下是我的数据库之一的输出:

    SQL. ......_ID CT MX MN AV MAX_RUN_TIME LONGEST_SQ 1 2 3 4 5
    ————- —— ———- —- ——– ———————————– ———- —— —— —– —- —
    2ahhqkpm9ywfc 3 6010 430 2438.0 13-03-15 02:50:53 13-09-11 18:07:18 16777216 2 0 0 0 1

    查询没有耗尽6个月。 sql_exec_id并不总是唯一的(http://blog.tanelpoder.com/2011/10/24/what-the-heck-is-the-sql-execution-id-sql_exec_id/ 请参阅Coskan和Tanel评论)。在我的情况下,我只有3个不同的SQL_EXEC_ID为180个执行。

    谢谢,
    vishal.

  • 2013年9月12日晚上9:03
    永久链接

    谢谢你的Tanel链接’s的东西。从Tanel说的是SQL_EXEC_ID将在数据库中重复,并在计数器的包装中重复。那里没有出现惊人。
    它看起来像coskan说有虫子,但我没有’看任何确认–也许我太快撇去了这篇文章。
    确实让我想知道它是否’s值得在案例中添加到上面的查询中,并查看它是否有帮助。
    像这样

    Col 1持续99999
    Col 2持续99999
    Col 3持续9999
    Col 4 999
    Col 5为99
    Col AV 99999
    Col CT为99999
    Col Mn为999
    Col AV 99999.9
    A32的COL MAX_RUN_TIME
    Col longest_sql_exec_id for a20

    用pivot_data为(
    选择
    sql_id,
    ct,
    mxdelta mx,
    mndelta mn,
    round(avdelta) av,
    widey_bucket(delta_in_seconds,mndelta,mxdelta + .1,5)作为桶,
    substr(times,12)max_run_time,
    substr(longest_sql_exec_id,12)longest_sql_exec_id
    从 (
    选择
    sql_id,
    delta_in_seconds,
    count(*)over(sql_id分区)ct,
    Max(delta_in_seconds)over(sql_id的分区)mxdelta,
    min(delta_in_seconds)over(sql_id的分区)mndelta,
    avg(delta_in_seconds)over(sql_id的分区)avdelta,
    最多(次)过(由SQL_ID分区)次数,
    max(longest_sql_exec_id)over(sql_id的分区)longest_sql_exec_id
    从 (
    SELECT
    sql_id,
    sql_exec_id,
    max(delta_in_seconds)delta_in_seconds,
    LPAD(圆形(最大(delta_in_seconds),0),10)||‘ ‘ ||
    to_char(min(start_time),’YY-MM-DD HH24:MI:SS’) || ‘ ‘ ||
    to_char(max(end_time),’YY-MM-DD HH24:MI:SS’) times,
    LPAD(圆形(最大(delta_in_seconds),0),10)||‘ ‘ ||
    to_char(max(sql_exec_id))longest_sql_exec_id
    FROM ( SELECT
    sql_id,
    to_char(sql_exec_id)||’_’|| to_char(sql_exec_start,’J’) sql_exec_id,
    演员(Sample_time ray)end_time,
    演员(SQL_EXEC_START为日期)start_time,
    ((演员(Sample_time yate))–
    (演员(SQL_EXEC_START为日期))*(3600 * 24)delta_in_seconds
    FROM
    dba_hist_active_sess_history.
    其中sql_exec_id不是null
    )
    由SQL_ID,SQL_EXEC_ID组组
    )
    )
    where ct > &min_repeat_executions_filter
    and mxdelta > &min_elapsed_time
    )
    从pivot_data中选择*
    枢轴(1,2,3,4,5)桶(*)计数(*)))
    按MX DESC,AV DESC订购
    ;

  • 2013年9月12日晚上9:13
    永久链接

    就是这样。

    SQL. ......_ID CT MX MN AV MAX_RUN_TIME LONGEST_SQL_EXEC_ID 1 2 3 4 5
    ————- —— ———- —- ——– ——————————– ——————– —— —— —– —- —
    2ahhqkpm9ywfc 173 6010 29 532.0 13-08-20 01:02:41 13-08-20 02:42 16777216_2456525 161 9 0 2 1
    :51

    感谢您的快速反应。

  • 2013年9月19日在下午6:51
    永久链接

    嗨Kyle,你如何解释直方图桶?在您的示例中,SQLID 8rua4c9agcqkb具有978个执行,并且该查询的最大经过时间为820秒,直方图
    我们有5个桶,查询运行830次<=秒和978次的2次运行在5A秒内运行。当

    SQL. ......_ID CT MX MN AV MAX_RUN_TIME 1 2 3 4 5
    ————- —— ———- —- ——– ———————————– —— —— —– —- —
    8rua4c9agcqkb 978 820 0 72.7 11-03-01 23:13:50 11-03-01 23:13:56 830 116 21 9 2

    谢谢
    raj.

  • 2013年9月19日晚上9:51
    永久链接

    直方图桶1-5只需将最大时间划分为5个间隔。
    您的最大时间为820,因此您的间隔宽度为820/5 = 164
    铲斗1:0-164带830处执行
    铲斗2:165-328,具有115处执行
    铲斗3:329–492具有21个执行
    铲斗4:493-656,具有9个执行
    铲斗5:657–820具有2个执行(其中一个是820秒)

  • 2013年9月20日在上午1:27
    永久链接

    谢谢凯尔的快速反应

  • 2014年3月15日在凌晨4:36
    永久链接

    嗨凯尔:

    虽然这看起来很好,可以获得查询ID的数量,最大,最小时间。

    知道特定SQL_ID的开始时间和结束时间是否有任何方法:

    例如,您的查询输出/结果:

    SQL. ......_ID COUNT(*) MN AV MX MAX_RUN_TIME
    ————- ———- ——– ——– ——– ———————————–
    155VJQZJQP58F 27 0 115 786 11-04-11 07:39:47 11-04-11 07:41:20

    所以 :
    1)我可以知道这个sql_id的开始和结束时间,它显示为运行27次。
    2)显然是如此,其他信息如I / O,Rows获取,CPU时间以及成本。

  • 2014年3月15日上午7:20
    永久链接

    @sai:在您的示例中,查询已运行27次。您可以为所有27个输出开始和结束,但这将是大量的输出。上面的最后一个查询给出了最长的开始和结束,这是我一般都找到最兴趣的最长。
    您当然可以添加I / O,CPU和每个执行。我没有’看着它,但我想你也可以添加获取的行和成本。似乎可以。

  • 2014年12月12日在下午3:42
    永久链接

    嗨凯尔,
    我得到了count(no.of执行)不匹配。
    SQL. ......>从dba_hist_active_sess_history.中选择sum(count(*)),其中sql_id =’0aj463w5jz8bw’由SQL_ID,SQL_EXEC_ID组组;

    总和(计数(*))
    ————-
    79402

    下面仅显示4868.我使用了CT的地方> &min_repeat_executions_filter(1)
    和mxdelta.> &min_elapsed_time (0)

    SQL. ......_ID CT MX MN AV MAX_RUN_TIME LONEST_SQ 1 2 3 4 5
    ————- —— ——– —- ——– ——————————————————————————————————————————————————————————————————————————————————————– ———- —— —— —– —- —
    0aj463w5jz8bw 4868 2865 0 156.0 14-12-09 09:26:40 14-12-09 10:14:25 16795025 4475 326 62 0 5

  • 2014年12月12日在下午5:07
    永久链接

    @anthony.
    如果您想向我发送DBA_HIST_ACTIVE_SESSES_HISTORY I的导出’请看看它。您的第二个查询略微关闭,但不确定是否可以解释差异。

  • 2014年12月12日在下午6:15
    永久链接

    SQL. ......>在查询中使用v $ active_session_history,它将执行计数显示为正确的7。

    SQL. ......_ID COUNT(*) MN AV MX MAX_RUN_TIME
    ————- ———- ——– ——– ——– ——————————————-
    1gqww8makf6w5.. 7 2 4 6 14-12-12 13:06:39 14-12-12 13:06:45

    —在查询中再次使用dba_hist_active_sess_history.,执行计数显示2

    SQL. ......_ID COUNT(*) MN AV MX MAX_RUN_TIME
    ————- ———- ——– ——– ——– ——————————————-
    1gqww8makf6w5.. 2 5 6 6 14-12-12 13:05:44 14-12-12 13:05:50

    SQL. ......>@SQLSTAT 1GQWW8MAKF6W5来自DBA_HIST_SQLSTAT,显示了7个执行(以两个快照间隔为4和3)

    interval sql_id plan_hash_value执行Elapsed_sec Elapsed_per_exec_sec
    ——————– ————- ————— ———- ———– ——————–
    12-12-2014 12:14 1GQWW8MAKF6W5 3724264953 4 9 2
    12-12-2014 13:00 1GQWW8MAKF6W5 3724264953 3 17 6

    纠正我,如果我错了。您的查询’S执行计数与实际执行次数不匹配。

  • 2014年12月12日在下午6:22
    永久链接

    @khailey.
    请删除内容dbname&来自评论#11的SQL提示符中的主机名,因为它具有敏感信息?带来不便敬请谅解。

  • 2014年12月12日在下午6:28
    永久链接

    @khailey.
    SQL. ......>从dba_hist_active_sess_history.中选择sum(count(*)),其中sql_id =’0aj463w5jz8bw’SQL_ID,SQL_ID,SQL_EXEC_START,SQL_EXEC_ID,SQL_EXEC_ID不是NULL组;

    总和(计数(*))
    ————-
    80144

    SQL. ......_ID CT MX MN AV MAX_RUN_TIME LONEST_SQ 1 2 3 4 5
    ————- —— ———- —- ——– ——————————————————————————————————————————————————————————————————————————————————————– ———- —— —— —– —- —
    0aj463w5jz8bw 4906 2865 0 156.0 14-12-09 09:26:40 14-12-09 10:14:25 16795025 4511 328 62 0 5

    仍然存在差异。

  • 2014年12月12日晚上9:04
    永久链接

    嗨凯尔,
    我猜刷新样本到历史表的一个算法可能是根本原因,就像为什么遇到的差异有差异。一个简单的测试显示,并非所有不同的SQL_EXEC_ID都会刷新到AWR表。

    SQL. ......>从V $ active_session_history中选择不同的SQL_EXEC_ID,其中SQL_ID =’1gqww8makf6w5′按SQL_EXEC_ID订购;–>实际的执行次数

    SQL. ......_EXEC_ID
    ———–
    16777216
    16777217
    16777218
    16777219
    16777220
    16777221
    16777222
    16777223
    16777224

    SQL. ......>从dba_hist_active_sess_history.中选择不同的SQL_EXEC_ID,其中SQL_ID =’1gqww8makf6w5′按SQL_EXEC_ID订购;

    SQL. ......_EXEC_ID
    ———–
    16777220
    16777221
    16777223
    16777224

    我还观察到刷新算法没有向SQL执行所特有的样本数量的重量。在我的测试中,如您所见,如下,如下,SQL_EXEC_IDS 167777222和16777224都有5个样本,每个样品都在ASH.BUT中缺少16777222。

    SQL. ......>从V $ active_session_history中选择sql_exec_id,count(*)其中sql_id =’1gqww8makf6w5′由sql_exec_id组;

    SQL. ......_EXEC_ID COUNT(*)
    ———– ———-
    16777222 5 <<<
    16777221 6
    16777223 6
    16777220 6
    16777217 3
    16777224 5 <<<
    16777219 2
    16777218 3
    16777216 3

    但你的思想过程值得更多的信用。请加快你的好工作're doing.

    谢谢
    安合一

  • 2014年12月12日在晚上9:41
    永久链接

    是的,v $ active_session_history和dba_hist_active_sess_history.是不同的
    但是在你的比较中,你正在使用dba_hist_active_sess_history.,因此结果应该是相同的
    你可以寄给我一个dba_hist_active_sess_history.的导出,我会看看它。
    比较我的系统,它们是相同的

  • 2014年12月13日在上午12:47
    永久链接

    嗨凯尔,
    我发给了你(gmail)我的dba_hist_active_session历史记录一个sql_id.文件将为一个名为dash的表插入陈述。
    再次感谢检查这个。

  • 2014年12月13日在下午6:33
    永久链接

    @antony,

    我想你想要什么

    从DASH中选择COUNT(DISTINT SQL_EXEC_ID || SQL_EXEC_START),其中SQL_ID =’0aj463w5jz8bw’;

    获取特定SQL_ID的不同执行的数量;

    count(distinctsql_exec_id || sql_exec_start)
    ——————————————
    5105

    比较

    SQL. ......_ID CT MX MN AV MAX_RUN_TIME LONGEST_SQL_EXEC_ID 1 2 3 4 5
    ————- —— ———- —- ——– ———————————– ——————– —— —— —– —- —
    0AJ463W5JZ8BW5105 85420 856 31997.0 14-10-24 00.00.00 14-10-24 23.43.40 16780545_2456955 16911312 1094 575 ###

  • 2014年12月15日在上午3:10
    永久链接

    谢谢凯尔!
    大多数SQL执行运行时间的变化是由执行计划的变化引起的,或者由于绑定变量窥视而导致的.LOOKING进一步钻取的可能性,与长期相关联的绑定值。

  • 2014年12月15日在下午4:48
    永久链接

    @anthony..–是添加绑定变量捕获会很好,但我不’T Think认为有一种有效的方法来捕获所有绑定变量。除了跟踪之外,AFAIK只能捕获一些绑定变量。

  • 2014年12月15日在晚上8:45
    永久链接

    我惊讶于您在此SQL中添加桶的思考过程。我今天在使用SQL时遇到的另一个观察是,在执行的N分钟之后,有SQL可能无法完成,或者在执行SQL Developer的SQL查询中有一个,但仍然有助于Max_Run_time。我必须通过过滤executions_delta将sql_id与dba_hist_sqlstat的executions_delta进行比较>0.

  • 2015年1月12日晚上10:54
    永久链接

    我包括我们在下面使用的版本。我们刚刚在我们的Java代码中追踪问题,这是由于dba_hist_active_sess_history..sql_exec_start为null。这似乎非常罕见。 (我们将此查询作为我们的仪器的一部分在每个性能测试结束时进行,并且在我看到博客文章后不久就这样做了。)NULL授权我们对MAX_RUN_TIME的编码字符串的分析。我们添加了一个where子句以过滤掉空值的行。

    杰瑞

    用pivot_data as.
    (选择SQL_ID,Instance_Number,CT,MXDelta MX,MNDelta MN,Avdelta AV,
    widey_bucket(delta_in_seconds,mndelta-.1,mxdelta + .1,5)作为桶,
    substr(times,12)max_run_time,
    substr(longest_sql_exec_id,12)longest_sql_exec_id,
    substr(longest_sql_exec_id_action,12)longest_sql_exec_id_action,
    substr(longest_sql_exec_id_client_id,12)longest_sql_exec_id_client_id
    FROM
    (选择SQL_ID,instance_number,delta_in_seconds,
    count(*)over(sql_id,instance_number)ct,
    max(delta_in_seconds)over(由sql_id,instance_number)mxdelta的分区,
    min(delta_in_seconds)over(由sql_id,instance_number)mndelta的分区,
    avg(delta_in_seconds)over(由sql_id,instance_number)avdelta,
    最大(次)over(sql_id,instance_number分区)次,
    最大(longest_sql_exec_id)over(sql_id,instance_number)longest_sql_exec_id,
    最大(longest_sql_exec_id_atch)over(sql_id,instance_number)longest_sql_exec_id_action,
    max(longest_sql_exec_id_client_id)over(由sql_id,instance_number)longest_sql_exec_id_client_id
    FROM
    (选择sql_id,sql_exec_id,instance_number,max(delta_in_seconds)delta_in_seconds,
    LPAD(圆形(MAX(Delta_in_seconds),0),10)
    || ‘ ‘
    || to_char(min(start_time), ‘’ )
    || ‘$’
    || to_char(max(end_time),‘’ ) times,
    LPAD(圆形(MAX(Delta_in_seconds),0),10)
    || ‘ ‘
    || to_char(max(sql_exec_id))longest_sql_exec_id,
    LPAD(圆形(MAX(Delta_in_seconds),0),10)
    || ‘ ‘
    || to_char(max(动作))longest_sql_exec_id_action,
    LPAD(圆形(MAX(Delta_in_seconds),0),10)
    || ‘ ‘
    || to_char(max(client_id))longest_sql_exec_id_client_id
    FROM
    (选择sql_id,sql_exec_id,instance_number,action,client_id,
    CAST(Sample_time as date)end_time,演员(SQL_EXEC_START为日期)start_time,
    ((演员(Sample_time yate))–(演员(SQL_EXEC_START为日期))*(3600 * 24)delta_in_seconds
    来自dba_hist_active_sess_history..
    其中sql_exec_id不是null
    和模块=‘BillingCenter_MKTG’
    和375到382之间的snap_id
    )
    由SQL_ID,SQL_EXEC_ID,instance_number组组
    )
    )
    )
    选择SQL_ID,Instance_Number,CT,MX,MN,AV,MAX_RUN_TIME,
    longest_sql_exec_id,longest_sql_exec_id_action,longest_sql_exec_id_client_id,“1” , “2” , “3” , “4” , “5”
    来自Pivot_Data枢轴(1,2,3,4,5)的桶(*))
    订购MX DESC,AV DESC;

评论被关闭。