获得消耗cpu较高的topsql



一、
SELECT a.snap_id,
       a.dbid,
       a.instance_number,
       DB_TIME,
       to_char(TRUNC((DB_TIME - lag(DB_TIME, 1, DB_TIME)
                      over(PARTITION BY stat_name,
                           instance_number ORDER BY snap_id)) / 1000000 / 60,
                     2)) DB_TIME_
  FROM (SELECT a.snap_id,
               a.dbid,
               a.instance_number,
               a.stat_name,
               SUM(a.value) DB_TIME
          FROM DBA_HIST_SYS_TIME_MODEL a
         WHERE a.stat_name = 'DB time'
         --AND a.instance_number = 2
         GROUP BY a.snap_id, a.dbid, a.instance_number, a.stat_name) a;

SELECT a.snap_id,
       a.dbid,
       a.instance_number,
       DB_TIME,
/*    to_char(TRUNC((DB_TIME - lag(DB_TIME, 1, DB_TIME)
                      over(PARTITION BY stat_name,
                           instance_number ORDER BY snap_id)) / 1000000 / 60,
                     2)) DB_TIME_,   */
       b.END_INTERVAL_TIME
  FROM (SELECT a.snap_id,
               a.dbid,
               a.instance_number,
               a.stat_name,
               SUM(a.value) DB_TIME
          FROM DBA_HIST_SYS_TIME_MODEL a
         WHERE a.stat_name = 'DB time'
         GROUP BY a.snap_id, a.dbid, a.instance_number, a.stat_name) a,dba_hist_snapshot b where a.snap_id=b.snap_id;
执行上面两个语句得到数据之后按照snap_id对应起来,可以得到snap_id、DB_TIME_、END_INTERVAL_TIME这仨个字段,就可以确定某个时间点的db_time值与snap_id所对应的具体的时间。
 

然后把相应时间段的snap_id代入下面的语句即可得到top10的语句

select  to_char(t.INSTANCE_NUMBER) i_n,t.sql_id,to_char(t.username) username,
to_char(t.disk_reads) d_r,to_char(t.buffer_gets_nvl) buffer_nvl,t.bget buffer_gets,t.elap_time,t.cpu_time,
t.exec,t.elap_nvl,t.sql_text
from
(select  sqt.bget,
         sqt.exec,
 username,
 INSTANCE_NUMBER,
 disk_reads,
     decode(sqt.exec, 0, to_number(null) , (sqt.bget / sqt.exec)) buffer_gets_nvl,
     nvl((sqt.cput / 1000000), to_number(null)) cpu_time ,
 nvl((sqt.elap / 1000000), to_number(null)) elap_time,
 (sqt.elap / 1000000) /  sqt.exec  elap_nvl,
 sqt.sql_id,
 st.sql_text
from
(select sql_id,parsing_schema_name username,INSTANCE_NUMBER,
       sum(buffer_gets_delta) bget,
       sum(executions_delta) exec,
       sum(cpu_time_delta) cput,
       sum(elapsed_time_delta) elap,
   sum(DISK_READS_DELTA) disk_reads
from dba_hist_sqlstat
where snap_id>=30281 and snap_id<=30307   ---------------把相关时间点的snap_id写到这里即可
group by sql_id,parsing_schema_name,INSTANCE_NUMBER) sqt,
dba_hist_sqltext st
where st.sql_id(+) = sqt.sql_id
and sqt.exec != 0
and st.sql_text not like '%DUAL%%'
order by nvl((sqt.cput / 1000000), to_number(null)) desc, sqt.sql_id ,username,INSTANCE_NUMBER,disk_reads)  t
 where rownum < 65
   and (rownum <= 10);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#!/bin/sh #安装插件 cd /root/mysql if test -e ./sharutils-4.6.1-2.x86_64.rpm then echo 'sharutils开始安装...' rpm -ivh sharutils-4.6.1-2.x86_64.rpm echo 'sharutils安装完成...' else echo 'sharutils文件不存在!' exit fi #安装msql8 if test -e ./mysql8.0.19_64-636.sh then if test -e ./mysql8.0.19_64-636.sh.sha256 then echo '准备安装mysql8' sh ./mysql8.0.19_64-636.sh else echo 'mysql8.sha256文件不存在!' exit fi else echo 'mysql8.sh文件不存在!' exit fi if [ $? -eq 0 ]; then echo 'mysql安装完成...' else echo 'mysql安装失败!' exit fi #执行重启不需验证 /topwalk/baseapp/bin/mysqld restart --skip_grant_tables #安装tcl sh ./tcl-install.sh if [ $? -eq 0 ]; then echo 'tcl安装完成...' else echo 'tcl安装失败!' exit fi #安装expect sh ./expect-install.sh if [ $? -eq 0 ]; then echo 'expect安装完成...' else echo 'expect安装失败!' exit fi #创建mysql用户,授权 sh ./initdb.sh if [ $? -eq 0 ]; then echo 'mysql用户创建,授权完成...' else echo 'mysql用户创建,授权失败!' exit fi ln -s /topwalk/baseapp/bin/mysqld /etc/init.d/ sed -i '/MYSQL_HOME/d' /etc/profile echo "export MYSQL_HOME=/topwalk/baseapp/mysql" >>/etc/profile echo 'export PATH=$PATH:$MYSQL_HOME/bin' >>/etc/profile systemctl enable mysqld source /etc/profile service mysqld restart #初始化库 /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPBASIC.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPDMS.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPUIS.sql #初始化表 /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPBASIC < topsql/TOPBASIC.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPDMS < topsql/TOPDMS.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPUIS < topsql/TOPUIS.sql #安装nginx cp -dpRf ./nginx /usr/local/ useradd nginx -m -d /usr/local/nginx/ -s /bin/bash chown -R nginx.nginx /usr/local/ngi
最新发布
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值