[20230419]关于sqlhh.sql执行脚本的一些说明.txt

来源:这里教程网 时间:2026-03-03 18:44:53 作者:

[20230419]关于sqlhh.sql执行脚本的一些说明.txt --//有朋友反映类似的问题,我写的blog引用许多脚本,我并没有提供源代码。 --//主要有几个原因: 1.有一些脚本我不提供,你看文章自己也很容易写出对应脚本,而且有一些脚本写的很烂,我自己都不好意思贴出来。 我开始学习oracle时非常不喜欢在sqlplus下工作,太麻烦了。大部分操作都是在toad下运行,慢慢我发现有时候还只能在sqlplus下工作。 我以前将全部脚本写在一个文件里面,使用时就拷贝和粘贴到sqlplus下,这样很容易出错,而且有一些带有参数,操作也不方便。 慢慢我将这些脚本写入文件,平时也注意收集别人写的一些脚本,然后逐步完善改进这些脚本。很长一段时间我工作解决问题都是使用自 己写的脚本。 2.后来我发现一些blog,经常出现和使用tanelpoder tpt脚本,我开始也就是集中在ashtop之类的脚本使用上。而且毕竟不是自己写的, 选择tpt的脚本,你给知道执行做什么的内容,总不能顺便拿来就执行。 2020年末,主要疫情的原因,我开始系统学习与使用tpt脚本,也根据自己的需要改动一些脚本,这样更加顺手一些,也能很大的提高工 作效率。 以后我会尽可能使用tanelpoder tpt脚本,减少自己编写脚本的使用量。自己写的脚本尽可能贴出源代码。 最后顺便解答sqlhh.sql脚本的问题,实际上调用的就是tpt脚本awr/awr_sqlstats_per_exec.sql. 名字有点长,我自己又ln建立一个sqlh.sql副本表示sql history的意思(注后来我发现tpt目录下也有一个sqlh.sql脚本)。 然后我在tpt目录建立sqlhh.sql脚本: $ cd awr $ ln awr_sqlstats_per_exec.sql sqlh.sql $ cd .. --//建立sqlhh.sql,内容如下: $ vi sqlhh.sql $ cat sqlhh.sql prompt prompt time unit : millisecond prompt @awr/sqlh &1 % sysdate-&&2 sysdate --//顺便附上awr/awr_sqlstats_per_exec.sql的内容: $ cat awr/awr_sqlstats_per_exec.sql -- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions. -- awr_sqlstats_per_exec v1.01 SET TERMOUT OFF pagesize 5000 tab off verify off linesize 999 trimspool on trimout on null "" SET TERMOUT ON COL executions       FOR 99999990 COL ela_ms_per_exec  FOR 99999990 COL rows_per_exec    FOR 99999990.0 COL lios_per_exec    FOR 99999990 COL blkrd_per_exec   FOR 99999990 COL cpu_ms_per_exec  FOR 99999990 COL iow_ms_per_exec  FOR 99999990 COL avg_iow_ms       FOR 99999990.0 COL clw_ms_per_exec  FOR 99999990 COL apw_ms_per_exec  FOR 99999990 COL ccw_ms_per_exec  FOR 99999990 -- You can configure output column precision here -- COL executions       FOR 99999990.0 -- COL ela_ms_per_exec  FOR 99999990.0 -- COL rows_per_exec    FOR 99999990.0 -- COL lios_per_exec    FOR 99999990.0 -- COL blkrd_per_exec   FOR 99999990.0 -- COL cpu_ms_per_exec  FOR 99999990.0 -- COL iow_ms_per_exec  FOR 99999990.0 -- COL avg_iow_ms      FOR 99999990.0 -- COL clw_ms_per_exec  FOR 99999990.0 -- COL apw_ms_per_exec  FOR 99999990.0 -- COL ccw_ms_per_exec  FOR 99999990.0 SELECT     CAST(begin_interval_time AS DATE) begin_interval_time   , st.instance_number inst_id   , sql_id   , plan_hash_value   , SUM(executions_delta)     executions   , ROUND(SUM(elapsed_time_delta  ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000)                         ela_ms_per_exec   , ROUND(SUM(cpu_time_delta      ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000)                         cpu_ms_per_exec   , ROUND(SUM(rows_processed_delta) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta)),1)                            rows_per_exec   , ROUND(SUM(buffer_gets_delta   ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta)),1)                            lios_per_exec   , ROUND(SUM(disk_reads_delta    ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta)),1)                            blkrd_per_exec   , ROUND(SUM(iowait_delta        ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000)                         iow_ms_per_exec   , ROUND(SUM(iowait_delta        ) / DECODE(SUM(physical_read_requests_delta)+SUM(physical_write_requests_delta),0,1                                             ,SUM(physical_read_requests_delta)+SUM(physical_write_requests_delta))/1000,1)  avg_iow_ms   , ROUND(SUM(clwait_delta        ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000)                         clw_ms_per_exec   , ROUND(SUM(apwait_delta        ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000)                         apw_ms_per_exec   , ROUND(SUM(ccwait_delta        ) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta))/1000)                         ccw_ms_per_exec --  , ROUND(SUM(elapsed_time_delta - cpu_time_delta - iowait_delta - clwait_delta - apwait_delta - ccwait_delta) / DECODE(SUM(executions_delta),0,1,SUM(executions_delta)) / 1000, 1) oth_ms_per_exec FROM     dba_hist_snapshot sn   , dba_hist_sqlstat st WHERE     sn.snap_id = st.snap_id AND sn.dbid    = st.dbid AND sn.instance_number = st.instance_number AND sql_id = '&1' AND plan_hash_value LIKE '&2' AND begin_interval_time >= &3 AND end_interval_time   <= &4 AND (elapsed_time_delta != 0 AND cpu_time_delta != 0) GROUP BY     CAST(begin_interval_time AS DATE)   , sql_id   , plan_hash_value   , st.instance_number ORDER BY     begin_interval_time   , sql_id   , plan_hash_value /

相关推荐