Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. WITH cputime AS (
  2. SELECT
  3. trunc(times, 'dd') timesd,
  4. instance_number,
  5. 'CPU' wait_class,
  6. 'CPU' event_name,
  7. 0 total_wait,
  8. round((SUM(value - prev_value)) / 1000000, 2) time_waited_sec,
  9. 0 avg_time_wait
  10. FROM
  11. (
  12. SELECT
  13. trunc(begin_interval_time, 'mi') times,
  14. sn.instance_number,
  15. 'CPU',
  16. 'CPU',
  17. 0,
  18. 0,
  19. value,
  20. LAG(value) OVER(
  21. PARTITION BY sn.instance_number
  22. ORDER BY
  23. sn.snap_id
  24. ) prev_value
  25. FROM
  26. dba_hist_sys_time_model se
  27. INNER JOIN dba_hist_snapshot sn ON ( sn.snap_id = se.snap_id
  28. AND sn.instance_number = se.instance_number )
  29. WHERE
  30. begin_interval_time > trunc(SYSDATE) - 7
  31. AND stat_name = 'DB CPU'
  32. )
  33. GROUP BY
  34. trunc(times, 'dd'),
  35. instance_number
  36. ), dbtime AS (
  37. SELECT
  38. trunc(times, 'dd') timesd,
  39. instance_number,
  40. 'DBTIME' wait_class,
  41. 'DBTIME' event_name,
  42. 0 total_wait,
  43. round((SUM(value - prev_value)) / 1000000, 2) time_waited_sec,
  44. 0 avg_time_wait
  45. FROM
  46. (
  47. SELECT
  48. trunc(begin_interval_time, 'mi') times,
  49. sn.instance_number,
  50. 'DBTIME',
  51. 'DBTIME',
  52. 0,
  53. 0,
  54. value,
  55. LAG(value) OVER(
  56. PARTITION BY sn.instance_number
  57. ORDER BY
  58. sn.snap_id
  59. ) prev_value
  60. FROM
  61. dba_hist_sys_time_model se
  62. INNER JOIN dba_hist_snapshot sn ON ( sn.snap_id = se.snap_id
  63. AND sn.instance_number = se.instance_number )
  64. WHERE
  65. begin_interval_time > trunc(SYSDATE) - 7
  66. AND stat_name = 'DB time'
  67. )
  68. GROUP BY
  69. trunc(times, 'dd'),
  70. instance_number
  71. ), eventtime AS (
  72. SELECT
  73. trunc(times, 'dd') timesd,
  74. instance_number,
  75. wait_class,
  76. event_name,
  77. SUM(total_waits - prev_total_wait) total_wait,
  78. round((SUM(time_waited_micro - prev_time_waited_micro)) / 1000000, 2) time_waited_sec,
  79. round((SUM(time_waited_micro - prev_time_waited_micro) / SUM(total_waits - prev_total_wait)) / 1000, 2) avg_time_wait
  80. FROM
  81. (
  82. SELECT
  83. trunc(begin_interval_time, 'mi') times,
  84. sn.instance_number,
  85. wait_class,
  86. event_name,
  87. total_waits,
  88. LAG(total_waits) OVER(
  89. PARTITION BY sn.instance_number, wait_class, event_name
  90. ORDER BY
  91. sn.snap_id
  92. ) prev_total_wait,
  93. time_waited_micro,
  94. LAG(time_waited_micro) OVER(
  95. PARTITION BY sn.instance_number, wait_class, event_name
  96. ORDER BY
  97. sn.snap_id
  98. ) prev_time_waited_micro
  99. FROM
  100. dba_hist_system_event se
  101. INNER JOIN dba_hist_snapshot sn ON ( sn.snap_id = se.snap_id
  102. AND sn.instance_number = se.instance_number )
  103. WHERE
  104. begin_interval_time > trunc(SYSDATE) - 7
  105. )
  106. WHERE
  107. ( total_waits - prev_total_wait ) > 0
  108. GROUP BY
  109. trunc(times, 'dd'),
  110. instance_number,
  111. wait_class,
  112. event_name
  113. )
  114. SELECT
  115. e.timesd,
  116. e.instance_number,
  117. e.wait_class,
  118. e.event_name,
  119. e.total_wait,
  120. e.time_waited_sec,
  121. e.avg_time_wait,
  122. round(e.time_waited_sec / d.time_waited_sec, 2) perc
  123. FROM
  124. eventtime e
  125. INNER JOIN dbtime d ON e.instance_number = d.instance_number
  126. AND e.timesd = d.timesd
  127. UNION ALL
  128. SELECT
  129. c.timesd,
  130. c.instance_number,
  131. c.wait_class,
  132. c.event_name,
  133. c.total_wait,
  134. c.time_waited_sec,
  135. c.avg_time_wait,
  136. round(c.time_waited_sec / d.time_waited_sec, 2) perc
  137. FROM
  138. cputime c
  139. INNER JOIN dbtime d ON c.instance_number = d.instance_number
  140. AND c.timesd = d.timesd;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement