SQL ordered by Reads(源码)

 select *
     from (select sqt.dskr,
                  sqt.exec,
                  decode(sqt.exec, 0, to_number(null), (sqt.dskr / sqt.exec)),
                  (100 * sqt.dskr) /
                  (SELECT sum(e.VALUE) - sum(b.value)
                     FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
                    WHERE B.SNAP_ID = &beg_snap
                      AND E.SNAP_ID = &end_snap
                      AND B.DBID = &DBID
                      AND E.DBID = &DBID
                      AND B.INSTANCE_NUMBER = &INST_NUM
                      AND E.INSTANCE_NUMBER = &INST_NUM
                      and e.STAT_NAME = 'physical reads'
                      and b.stat_name = 'physical reads') norm_val,
                  nvl((sqt.cput / 1000000), to_number(null)),
                  nvl((sqt.elap / 1000000), to_number(null)),
                  sqt.sql_id,
                  decode(sqt.module, null, null, 'Module: ' || sqt.module),
                  nvl(st.sql_text, to_clob('** SQL Text Not Available **'))
             from (select sql_id,
                          max(module) module,
                          sum(disk_reads_delta) dskr,
                          sum(executions_delta) exec,
                          sum(cpu_time_delta) cput,
                          sum(elapsed_time_delta) elap
                     from dba_hist_sqlstat
                    where dbid = &dbid
                      and instance_number = &inst_num
                      and &beg_snap < snap_id
                      and snap_id <= &end_snap
                    group by sql_id) sqt,
                  dba_hist_sqltext st
            where st.sql_id(+) = sqt.sql_id
              and st.dbid(+) = &dbid
              and (SELECT sum(e.VALUE) - sum(b.value)
                     FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
                    WHERE B.SNAP_ID = &beg_snap
                      AND E.SNAP_ID = &end_snap
                      AND B.DBID = &DBID
                      AND E.DBID = &DBID
                      AND B.INSTANCE_NUMBER = &INST_NUM
                      AND E.INSTANCE_NUMBER = &INST_NUM
                      and e.STAT_NAME = 'physical reads'
                      and b.stat_name = 'physical reads') > 0
            order by nvl(sqt.dskr, -1) desc, sqt.sql_id)
    where rownum < 65and(rownum <= 10
                      or norm_val > 1)


---------------------------------------------------实际应用的SQL--------------------------------------------------------

select *
  from (select sqt.dskr "Physical Reads",
               sqt.exec,
               decode(sqt.exec, 0, to_number(null), (sqt.dskr / sqt.exec)) "Reads per Exec",
               (100 * sqt.dskr) /
               (SELECT sum(e.VALUE) - sum(b.value)
                  FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
                 WHERE B.SNAP_ID =
                       (select snap_id
                          from DBA_HIST_SNAPSHOT
                         where to_char(end_interval_time, 'yyyymmdd hh24') =
                               '20111121 08')
                   AND E.SNAP_ID =
                       (select snap_id
                          from DBA_HIST_SNAPSHOT
                         where to_char(end_interval_time, 'yyyymmdd hh24') =
                               '20111121 18')
                   AND B.DBID = 911569205
                   AND E.DBID = 911569205
                   AND B.INSTANCE_NUMBER = 1
                   AND E.INSTANCE_NUMBER = 1
                   and e.STAT_NAME = 'physical reads'
                   and b.stat_name = 'physical reads') "%Total",
               nvl((sqt.cput / 1000000), to_number(null)) "CPU Time (s)",
               nvl((sqt.elap / 1000000), to_number(null)) "Elapsed Time (s)",
               sqt.sql_id,
               decode(sqt.module, null, null, 'Module: ' || sqt.module) "SQL Module",
               nvl(st.sql_text, to_clob('** SQL Text Not Available **')) "SQL Text"
          from (select sql_id,
                       max(module) module,
                       sum(disk_reads_delta) dskr,
                       sum(executions_delta) exec,
                       sum(cpu_time_delta) cput,
                       sum(elapsed_time_delta) elap
                  from dba_hist_sqlstat
                 where dbid = 911569205
                   and instance_number = 1
                   and snap_id >
                       (select snap_id
                          from DBA_HIST_SNAPSHOT
                         where to_char(end_interval_time, 'yyyymmdd hh24') =
                               '20111121 08')
                   and snap_id <=
                       (select snap_id
                          from DBA_HIST_SNAPSHOT
                         where to_char(end_interval_time, 'yyyymmdd hh24') =
                               '20111121 18')
                 group by sql_id) sqt,
               dba_hist_sqltext st
         where st.sql_id(+) = sqt.sql_id
           and st.dbid(+) = 911569205
           and (SELECT sum(e.VALUE) - sum(b.value)
                  FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
                 WHERE B.SNAP_ID =
                       (select snap_id
                          from DBA_HIST_SNAPSHOT
                         where to_char(end_interval_time, 'yyyymmdd hh24') =
                               '20111121 08')
                   AND E.SNAP_ID =
                       (select snap_id
                          from DBA_HIST_SNAPSHOT
                         where to_char(end_interval_time, 'yyyymmdd hh24') =
                               '20111121 18')
                   AND B.DBID = 911569205
                   AND E.DBID = 911569205
                   AND B.INSTANCE_NUMBER = 1
                   AND E.INSTANCE_NUMBER = 1
                   and e.STAT_NAME = 'physical reads'
                   and b.stat_name = 'physical reads') > 0
         order by nvl(sqt.dskr, -1) desc, sqt.sql_id)
 where rownum < 65and(rownum <= 10
                   or "%Total" > 1)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值