Obtain the TOP statement of each Metric in the database for 30 days

Source: Internet
Author: User

You can query from v $ SQL or v $ sqlarea in a short period of time. If you want to query within a week or a month, you may not be able to find it in V $ SQLAREA! The following is obtained through history DBA_HIST_SQLSTAT, Which is retained through snapshot.


-- With bastable as (SELECT DBMS_LOB.SUBSTR (SQL _TEXT, 4000, 1) AS SQL _FULL_TEXT, DHST. SQL _ID, ROUND (X. ELAPSED_TIME/1000000/X. EXECUTIONS_DELTA, 3) AVG_ELAPSED_TIME_SEC, ROUND (X. CPU_TIME/1000000/X. EXECUTIONS_DELTA, 3) AVG_CPU_TIME_SEC, ROUND (X. BUFFER_GETS_DELTA/X. EXECUTIONS_DELTA, 3) AVG_BUFFER_GETS, ROUND (X. PARSE_CALLS_DELTA/X. EXECUTIONS_DELTA * 100, 3) EXEC_PARSE_RATE, ROUND (X. PHYSICAL_READ_BYTES_DELTA/1024/X. EXECUTIONS_DELTA, 3) AVG_PHYSICAL_READ_KB, ROUND (X. DISK_READS_DELTA/X. EXECUTIONS_DELTA, 3) AVG_DISK_READS, EXECUTIONS_DELTA AS EXEC_TOTAL_NUM, DHST. COMMAND_TYPE, N. COMMAND_NAME FROM DBA_HIST_SQLTEXT DHST, DBA_HIST_SQLCOMMAND_NAME N, (select dhss. SQL _ID, SUM (DHSS. CPU_TIME_DELTA) CPU_TIME, SUM (DHSS. ELAPSED_TIME_DELTA) ELAPSED_TIME, case sum (DHSS. EXECUTIONS_DELTA) WHEN 0 THEN 1 else sum (DHSS. EXECUTIONS_DELTA) end as EXECUTIONS_DELTA, case sum (DHSS. SORTS_DELTA) WHEN 0 THEN 1 else sum (DHSS. SORTS_DELTA) end as SORTS_DELTA, case sum (DHSS. FETCHES_DELTA) WHEN 0 THEN 1 else sum (DHSS. FETCHES_DELTA) end as FETCHES_DELTA, case sum (DHSS. PARSE_CALLS_DELTA) WHEN 0 THEN 1 else sum (DHSS. PARSE_CALLS_DELTA) end as PARSE_CALLS_DELTA, case sum (DHSS. DISK_READS_DELTA) WHEN 0 THEN 1 else sum (DHSS. DISK_READS_DELTA) end as DISK_READS_DELTA, case sum (DHSS. BUFFER_GETS_DELTA) WHEN 0 THEN 1 else sum (DHSS. BUFFER_GETS_DELTA) end as BUFFER_GETS_DELTA, case sum (DHSS. IOWAIT_DELTA) WHEN 0 THEN 1 else sum (DHSS. IOWAIT_DELTA) end as IOWAIT_DELTA, case sum (DHSS. PHYSICAL_READ_BYTES_DELTA) WHEN 0 THEN 1 else sum (DHSS. PHYSICAL_READ_BYTES_DELTA) end as PHYSICAL_READ_BYTES_DELTA FROM DBA_HIST_SQLSTAT dhss where dhss. SNAP_ID IN (SELECT SNAP_ID FROM DBA_HIST_SNAPSHOT WHERE BEGIN_INTERVAL_TIME> = TRUNC (SYSDATE)-30 AND END_INTERVAL_TIME <TRUNC (SYSDATE)-0) and dhss. PARSING_SCHEMA_NAME = UPPER ('shark') group by dhss. SQL _ID) X WHERE X. SQL _ID = DHST. SQL _ID AND DHST. COMMAND_TYPE = N. COMMAND_TYPE) SELECT * FROM (SELECT SQL _FULL_TEXT, SQL _ID, EXEC_TOTAL_NUM, AVG_DISK_READS AS VALUE_S, 'avg _ disk_reads' AS VALUES_TYPE from bastable where COMMAND_TYPE <> 47 AND SQL _FULL_TEXT not like '/* SQL A %' ORDER BY AVG_DISK_READS DESC) where rownum <= 5 union all select * FROM (SELECT SQL _FULL_TEXT, SQL _ID, EXEC_TOTAL_NUM, AVG_ELAPSED_TIME_SEC AS VALUE_S, 'avg _ ELAPSED_TIME_SEC 'AS VALUES_TYPE from bastable where COMMAND_TYPE <> 47 AND SQL _FULL_TEXT not like'/* SQL A % 'order BY AVG_ELAPSED_TIME_SEC DESC) where rownum <= 5 union all select * FROM (SELECT SQL _FULL_TEXT, SQL _ID, EXEC_TOTAL_NUM, AVG_CPU_TIME_SEC AS VALUE_S, 'avg _ CPU_TIME_SEC 'AS VALUES_TYPE from bastable where COMMAND_TYPE <> 47 AND SQL _FULL_TEXT not like'/* SQL A % 'ORDER BY AVG_CPU_TIME_SEC DESC) where rownum <= 5 union all select * FROM (SELECT SQL _FULL_TEXT, SQL _ID, EXEC_TOTAL_NUM, AVG_BUFFER_GETS AS VALUE_S, 'avg _ buffer_gets' AS VALUES_TYPE from bastable where COMMAND_TYPE <> 47 AND SQL _FULL_TEXT not like '/* SQL A %' ORDER BY AVG_BUFFER_GETS DESC) where rownum <= 5 union all select * FROM (SELECT SQL _FULL_TEXT, SQL _ID, EXEC_TOTAL_NUM, EXEC_PARSE_RATE AS VALUE_S, 'exec _ PARSE_RATE 'AS VALUES_TYPE from bastable where COMMAND_TYPE <> 47 AND SQL _FULL_TEXT not like'/* SQL A % 'ORDER BY EXEC_PARSE_RATE DESC) where rownum <= 5 union all select * FROM (SELECT SQL _FULL_TEXT, SQL _ID, EXEC_TOTAL_NUM, AVG_PHYSICAL_READ_KB AS VALUE_S, 'avg _ PHYSICAL_READ_KB 'AS VALUES_TYPE from bastable where COMMAND_TYPE <> 47 order by limit DESC) where rownum <= 5 union all select * FROM (SELECT SQL _FULL_TEXT, SQL _ID, EXEC_TOTAL_NUM, EXEC_TOTAL_NUM AS VALUE_S, 'exec _ TOTAL_NUM 'AS VALUES_TYPE from bastable where COMMAND_TYPE <> 47 AND SQL _FULL_TEXT not like'/* SQL A % 'order BY EXEC_TOTAL_NUM DESC) where rownum <= 5 union all select * FROM (SELECT SQL _FULL_TEXT, SQL _ID, EXEC_TOTAL_NUM, AVG_ELAPSED_TIME_SEC AS VALUE_S, 'Procedures _ EXEC_TIME 'AS VALUES_TYPE from bastable where COMMAND_TYPE = 47 AND SQL _FULL_TEXT not like'/* SQL A % 'order BY AVG_ELAPSED_TIME_SEC DESC) WHERE ROWNUM <= 5;


Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.