技术控

    今日:0| 主题:63445
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] Top SQL – Seeing What Hurts in the v4.2 Instance Viewer

[复制链接]
Chloe25 发表于 2016-10-4 13:57:25
189 7
We introduced the Instance Viewer in v4.1.
  We show you in real time what’s happening in your database.
  To get there, open your DBA panel. Connect. Then go to the Database Status node.
     

Top SQL – Seeing What Hurts in the v4.2 Instance Viewer

Top SQL – Seeing What Hurts in the v4.2 Instance Viewer
   Open the DBA panel. Lots of cool stuff here.
    Storage bits are interesting, but maybe you’re more excited about the specific workload. So in version 4.2, we’ve added a Top SQL panel to the screen.
  It auto-refreshes every few seconds, and you can sort it by several different performance metrics.
  If you find a SQL you want to know more about, you can drill down into a report.
  You can see the query, plan, and bind variables quite easily.
  And if you’re so inclined and licensed, you can ask for a SQL Tuning Advisor report and drill into the run time history of the query to see what’s what (requires Tuning and Diagnostic packs respectively.)
  You don’t need a blow-by-blow screenshot of this feature – it’s very easy to use. But I will throw in an animated GIF.
  If the animation is slow to load, click on the picture.
     

Top SQL – Seeing What Hurts in the v4.2 Instance Viewer

Top SQL – Seeing What Hurts in the v4.2 Instance Viewer
   Pretty colors, plus some interesting bits of data.
    Add a Top SQL Report to SQLcl

  It’s easy. View > Log > Statements. Grab our SQL. Throw it into ALIAS. Use the repeat command. Voila.
   Oracle SQL Developer Tips and Tricks [CON6515] at 1:30 today will ALSO features new tips & tricks for SQLcl! pic.twitter.com/lSs5rKloJx
   — SQLcl (@oraclesqlcl) September 21, 2016
     

Top SQL – Seeing What Hurts in the v4.2 Instance Viewer

Top SQL – Seeing What Hurts in the v4.2 Instance Viewer
   And the code…
    Throw this into an ALIAS…
  1. SELECT
  2.     SQL, SQL_ID, CPU_SECONDS_FORM CPU, ELAPSED_SECONDS_FORM ELAPSED, DISK_READS, BUFFER_GETS, EXECUTIONS_FORM EXECS, MODULE, LAST_ACTIVE_TIME_FORM
  3. FROM
  4.     (
  5.         SELECT
  6.             D.*
  7.             ,ROWNUM ROW#
  8.         FROM
  9.             (
  10.                 SELECT
  11.                     D.*
  12.                 FROM
  13.                     (
  14.                         SELECT
  15.                             substr(SQL_TEXT, 1, 25) AS SQL
  16.                             ,S.CPU_TIME / 1000000 AS CPU_SECONDS
  17.                                 ,CASE WHEN
  18.                                     S.CPU_TIME < 1000
  19.                                 THEN
  20.                                     '< 1 ms'
  21.                                 WHEN
  22.                                     S.CPU_TIME < 1000000
  23.                                 THEN
  24.                                     TO_CHAR(ROUND(S.CPU_TIME / 1000,1) )
  25.                                      ||  ' ms'
  26.                                 WHEN
  27.                                     S.CPU_TIME < 60000000
  28.                                 THEN
  29.                                     TO_CHAR(ROUND(S.CPU_TIME / 1000000,1) )
  30.                                      ||  ' s'
  31.                                 ELSE
  32.                                     TO_CHAR(ROUND(S.CPU_TIME / 60000000,1) )
  33.                                      ||  ' m'
  34.                                 END
  35.                             AS CPU_SECONDS_FORM
  36.                             ,DECODE(L.MAX_CPU_TIME,0,0,S.CPU_TIME / L.MAX_CPU_TIME) AS CPU_SECONDS_PROP
  37.                             ,S.ELAPSED_TIME / 1000000 AS ELAPSED_SECONDS
  38.                                 ,CASE WHEN
  39.                                     S.ELAPSED_TIME < 1000
  40.                                 THEN
  41.                                     '< 1 ms'
  42.                                 WHEN
  43.                                     S.ELAPSED_TIME < 1000000
  44.                                 THEN
  45.                                     TO_CHAR(ROUND(S.ELAPSED_TIME / 1000,1) )
  46.                                      ||  ' ms'
  47.                                 WHEN
  48.                                     S.ELAPSED_TIME < 60000000
  49.                                 THEN
  50.                                     TO_CHAR(ROUND(S.ELAPSED_TIME / 1000000,1) )
  51.                                      ||  ' s'
  52.                                 ELSE
  53.                                     TO_CHAR(ROUND(S.ELAPSED_TIME / 60000000,1) )
  54.                                      ||  ' m'
  55.                                 END
  56.                             AS ELAPSED_SECONDS_FORM
  57.                             ,DECODE(L.MAX_ELAPSED_TIME,0,0,S.ELAPSED_TIME / L.MAX_ELAPSED_TIME) AS ELAPSED_SECONDS_PROP
  58.                             ,S.DISK_READS AS DISK_READS
  59.                                 ,CASE WHEN
  60.                                     S.DISK_READS < 1000
  61.                                 THEN
  62.                                     TO_CHAR(S.DISK_READS)
  63.                                 WHEN
  64.                                     S.DISK_READS < 1000000
  65.                                 THEN
  66.                                     TO_CHAR(ROUND(S.DISK_READS / 1000,1) )
  67.                                      ||  'K'
  68.                                 WHEN
  69.                                     S.DISK_READS < 1000000000
  70.                                 THEN
  71.                                     TO_CHAR(ROUND(S.DISK_READS / 1000000,1) )
  72.                                      ||  'M'
  73.                                 ELSE
  74.                                     TO_CHAR(ROUND(S.DISK_READS / 1000000000,1) )
  75.                                      ||  'G'
  76.                                 END
  77.                             AS DISK_READS_FORM
  78.                             ,DECODE(L.MAX_DISK_READS,0,0,S.DISK_READS / L.MAX_DISK_READS) AS DISK_READS_PROP
  79.                             ,S.BUFFER_GETS AS BUFFER_GETS
  80.                                 ,CASE WHEN
  81.                                     S.BUFFER_GETS < 1000
  82.                                 THEN
  83.                                     TO_CHAR(S.BUFFER_GETS)
  84.                                 WHEN
  85.                                     S.BUFFER_GETS < 1000000
  86.                                 THEN
  87.                                     TO_CHAR(ROUND(S.BUFFER_GETS / 1000,1) )
  88.                                      ||  'K'
  89.                                 WHEN
  90.                                     S.BUFFER_GETS < 1000000000
  91.                                 THEN
  92.                                     TO_CHAR(ROUND(S.BUFFER_GETS / 1000000,1) )
  93.                                      ||  'M'
  94.                                 ELSE
  95.                                     TO_CHAR(ROUND(S.BUFFER_GETS / 1000000000,1) )
  96.                                      ||  'G'
  97.                                 END
  98.                             AS BUFFER_GETS_FORM
  99.                             ,DECODE(L.MAX_BUFFER_GETS,0,0,S.BUFFER_GETS / L.MAX_BUFFER_GETS) AS BUFFER_GETS_PROP
  100.                             ,S.EXECUTIONS AS EXECUTIONS
  101.                                 ,CASE WHEN
  102.                                     S.EXECUTIONS < 1000
  103.                                 THEN
  104.                                     TO_CHAR(S.EXECUTIONS)
  105.                                 WHEN
  106.                                     S.EXECUTIONS < 1000000
  107.                                 THEN
  108.                                     TO_CHAR(ROUND(S.EXECUTIONS / 1000,1) )
  109.                                      ||  'K'
  110.                                 WHEN
  111.                                     S.EXECUTIONS < 1000000000
  112.                                 THEN
  113.                                     TO_CHAR(ROUND(S.EXECUTIONS / 1000000,1) )
  114.                                      ||  'M'
  115.                                 ELSE
  116.                                     TO_CHAR(ROUND(S.EXECUTIONS / 1000000000,1) )
  117.                                      ||  'G'
  118.                                 END
  119.                             AS EXECUTIONS_FORM
  120.                             ,DECODE(L.MAX_EXECUTIONS,0,0,S.EXECUTIONS / L.MAX_EXECUTIONS) AS EXECUTIONS_PROP
  121.                             ,DECODE(S.MODULE,NULL,' ',S.MODULE) AS MODULE
  122.                             ,S.LAST_ACTIVE_TIME AS LAST_ACTIVE_TIME
  123.                             ,DECODE(S.LAST_ACTIVE_TIME,NULL,' ',TO_CHAR(S.LAST_ACTIVE_TIME,'DD-Mon-YYYY HH24:MI:SS') ) AS LAST_ACTIVE_TIME_FORM
  124.                             ,S.SQL_ID AS SQL_ID
  125.                             ,S.CHILD_NUMBER AS CHILD_NUMBER
  126.                             ,S.INST_ID AS INST_ID
  127.                         FROM
  128.                             GV$SQL S
  129.                             ,(
  130.                                 SELECT
  131.                                     MAX(CPU_TIME) AS MAX_CPU_TIME
  132.                                     ,MAX(ELAPSED_TIME) AS MAX_ELAPSED_TIME
  133.                                     ,MAX(DISK_READS) AS MAX_DISK_READS
  134.                                     ,MAX(BUFFER_GETS) AS MAX_BUFFER_GETS
  135.                                     ,MAX(EXECUTIONS) AS MAX_EXECUTIONS
  136.                                 FROM
  137.                                     GV$SQL
  138.                             ) L
  139.                     ) D
  140.                 ORDER BY
  141.                     CPU_SECONDS_PROP DESC
  142.                     ,SQL
  143.                     ,DISK_READS_PROP
  144.                     ,BUFFER_GETS_PROP
  145.                     ,EXECUTIONS_PROP
  146.                     ,ELAPSED_SECONDS_PROP
  147.                     ,MODULE
  148.                     ,LAST_ACTIVE_TIME
  149.             ) D
  150.     ) D
  151. WHERE
  152.     ROW# >= 1
  153. AND
  154.     ROW# <= :high
复制代码
Note I formatted this in SQLcl using the FORMAT command ��
亡雨是深海的疤 发表于 2016-10-4 17:21:58
白领算个屁,养猪才洋气.
回复 支持 反对

使用道具 举报

flowwa 发表于 2016-10-4 23:36:04
据说,回这个帖子会升官发财,我来试一下!
回复 支持 反对

使用道具 举报

蔚蓝的深海 发表于 2016-10-5 20:22:50
边撸边过
回复 支持 反对

使用道具 举报

微暖 发表于 2016-11-7 09:08:23
煮熟的鸭子飞不了,煮熟的楼主在哪里?
回复 支持 反对

使用道具 举报

gjfuv 发表于 2016-11-16 16:27:00
报告!我就是路过来看看的。。。
回复 支持 反对

使用道具 举报

△ 落殇 发表于 2016-11-18 06:14:43
星期五不忍直视
回复 支持 反对

使用道具 举报

南歌子 发表于 2016-11-18 16:36:14
Chloe25在马路边丢了一分钱 !  
回复 支持 反对

使用道具 举报

我要投稿

推荐阅读


回页顶回复上一篇下一篇回列表
手机版/c.CoLaBug.com ( 粤ICP备05003221号 | 粤公网安备 44010402000842号 )

© 2001-2017 Comsenz Inc.

返回顶部 返回列表