折雨的天空

博客介绍:本博客当前共有文章【963】篇,总阅读量【5,103,903】次,第一篇博客发表于【2011年04月06日 10时34分】,距今已【4944】天,感谢您的使用!

您的位置:折雨的天空 >其他技术> Oracle查询慢SQL的语句

Oracle查询慢SQL的语句

SELECT v.SQL_TEXT,m.* FROM (select distinct snap_id,
                sql_id,
                EXECUTIONS_DELTA,
                trunc(max(ELAPSED_TIME_DELTA)
                      OVER(PARTITION BY snap_id, sql_id) / 1000000,
                      0) max_elapsed,
                trunc((max(ELAPSED_TIME_DELTA)
                       OVER(PARTITION BY snap_id, sql_id)) /
                      (SUM(ELAPSED_TIME_DELTA) OVER(PARTITION BY snap_id)),
                      2) * 100 per_total
  from dba_hist_sqlstat t WHERE T.snap_id IN (SELECT MAX(snap_id) FROM dba_hist_sqlstat) ) M,v$sql v
  where m.sql_id=v.sql_id and m.max_elapsed>=30


直接上代码


上面代码还是有个问题,SQL过长的时候,SQL展示不全。用下面可以。执行时间超过30秒的,都会被查询出来,你可以改时间。


SELECT v.SQL_FULLTEXT,m.* FROM (select distinct snap_id,
                sql_id,
                EXECUTIONS_DELTA,
                trunc(max(ELAPSED_TIME_DELTA)
                      OVER(PARTITION BY snap_id, sql_id) / 1000000,
                      0) max_elapsed,
                trunc((max(ELAPSED_TIME_DELTA)
                       OVER(PARTITION BY snap_id, sql_id)) /
                      (SUM(ELAPSED_TIME_DELTA) OVER(PARTITION BY snap_id)),
                      2) * 100 per_total
  from dba_hist_sqlstat t WHERE T.snap_id IN (SELECT MAX(snap_id) FROM dba_hist_sqlstat) ) M,v$sqlarea v
  where m.sql_id=v.sql_id and m.max_elapsed>=30

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《Oracle查询慢SQL的语句

奖励一下

取消

分享不易,烦请有多多打赏,如您也困难,点击右边关闭即可!

扫码支持
扫码打赏,5元,10元,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

-秒后自动关闭,如已打赏,或者不愿打赏,请点击右上角关闭图标。

发表评论

路人甲 表情
看不清楚?点图切换