[z]根据awr报告查看最慢的sql语句
http://blog.itpub.net/12679300/viewspace-2125679/
当系统运行了一段时间后,系统基本也趋于稳定了,SQL调优也变了DBA的一个主要的工作内容,很多时候都是通过查看awr报告来检查出有性能瓶颈的SQL语句,通过这个可以很清晰的看到具体运行多少时间、次数、CPU、IO的比例。
但是每次都去查看awr报告是一件很繁琐的事情,如果可以单独的查看哪些有问题的sql,就不用每次都去生成一个awr报告了。dba_hist_sqlstat这个视图记录了每次snap_id里面的sql信息,这里帮大家把整个脚本编写出来了。
点击(此处)折叠或打开
- SELECT v.SQL_TEXT,m.* FROM (select distinct snap_id,
- sql_id,
- EXECUTIONS_DELTA,
- trunc(max(ELAPSED_TIME_DELTA)
- OVER(PARTITION BY snap_id, sql_id) / 1000000,
- 0) max_elapsed,
- trunc((max(ELAPSED_TIME_DELTA)
- OVER(PARTITION BY snap_id, sql_id)) /
- (SUM(ELAPSED_TIME_DELTA) OVER(PARTITION BY snap_id)),
- 2) * 100 per_total
- from dba_hist_sqlstat t WHERE T.snap_id IN (SELECT MAX(snap_id) FROM dba_hist_sqlstat) ) M,v$sql v
- where m.sql_id=v.sql_id and m.max_elapsed>=300
这个脚本是查找m.max_elapsed>=300(这边的单位是秒),也是5分钟的时间,可以根据系统的实际情况进行定义;
可以看出sql_id值为d1ftvurv76hct运行一次,这次运行的时间为1199s,占总体消耗的36%。
【另】可以通过运行定时job执行这条sql语句,然后发送有问题的sql信息到用户的邮箱;
SELECT v.SQL_TEXT,m.* FROM (select distinct snap_id,
sql_id,
EXECUTIONS_DELTA,
trunc(max(ELAPSED_TIME_DELTA)
OVER(PARTITION BY snap_id, sql_id) / 1000000,
0) max_elapsed,
trunc((max(ELAPSED_TIME_DELTA)
OVER(PARTITION BY snap_id, sql_id)) /
(SUM(ELAPSED_TIME_DELTA) OVER(PARTITION BY snap_id)),
2) * 100 per_total
from dba_hist_sqlstat t WHERE T.snap_id IN (SELECT MAX(snap_id) FROM dba_hist_sqlstat) ) M,v$sql v
where m.sql_id=v.sql_id and m.max_elapsed>=300
[z]根据awr报告查看最慢的sql语句的更多相关文章
- 用LinqPad查看Nhibernate生成的sql语句
使用Nhibernate开发一般都要对Nhibernate生成的sql语句进行查看及分析,查看Nhibernate生成的sql语句,可以使用NHProfiler和log4net.但NHProfiler ...
- 【转载】 Sqlserver查看数据库死锁的SQL语句
在Sqlsever数据库中,有时候操作数据库过程中会进行锁表操作,在锁表操作的过程中,有时候会出现死锁的情况出现,这时候可以使用SQL语句来查询数据库死锁情况,主要通过系统数据库Master数据库来查 ...
- mysql查看正在执行的sql语句
有2个方法: 1.使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到.好处是不用设置,不会保存. -- use information_schema; ...
- 两种方式:mysql查看正在执行的sql语句
mysql查看正在执行的sql语句 2015年08月21日 17:32:59 阅读数:15398 有2个方法: 1.使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应 ...
- 查看锁表进程SQL语句
查看锁表进程SQL语句 set pagesize 999 set line180 col ORACLE_USERNAME for a18 col OS_USER_NAME for a18 col ...
- db2数据库创建索引,删除索引,查看表索引,SQL语句执行计划以及优化建议
1.建立表索引 create index 索引名 on 表名(列名,列名); 2.删除表索引 drop index 索引名 on 表名; 3.查看表索引 select * from sysibm.sy ...
- [NHibernate]查看NHibernate生成的SQL语句
最近接触到一个用Spring.Net结合NHIbernate的项目,第一次使用,有很多配置,数据操作一旦出问题,很难找到原因,那么如何查看NHibernate发送给数据库的SQL语句呢? 当然我们可以 ...
- phpmyadmin查看创建表的SQL语句
本人菜鸟 发现创建表的SQL语句还不会 直接phpmyadmin解决的 查看见表的语句除了直接到处SQL格式文件 打开查看外 就是执行语句查询 语句:show create table 表名 貌似大 ...
- MySql使用show processlist查看正在执行的Sql语句
今天上班例行的查看了下服务器的运行状况,发现服务器特卡,是mysqld这个进程占用CPU到了99%导致的. 比较好奇是那个程序在使用mysql导致cpu这么高的,通过show processlist命 ...
随机推荐
- Haskell语言学习笔记(80)req
req req 是一个好用,类型安全,可扩展,上层的HTTP客户端的库. $ cabal install req Installed req-1.1.0 Prelude> :m +Network ...
- [Linux].deb软件包:wine-qq2013-longeneteam安装与卸载
--------------------------------------------------------------------------------------------- 首先切换到r ...
- Docker 指定容量
vim /etc/sysconfig/docker-storage加入以下命令 DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper - ...
- jQuery之dom操作(取赋值方法)
取赋值相关方法: .html() .text() .size() .addClass() .removeClass() .has ...
- rect用法
//如果创建一个Rect对象rect(100, 50, 50, 100),那么rect会有以下几个功能: rect.area(); //返回rect的面积 5000 rect.size(); //返回 ...
- asp.net MVC 异常处理
http://www.cnblogs.com/think8848/archive/2011/03/18/1987849.html http://www.cnblogs.com/snowdream/ar ...
- Python 面向对象基础(类、实例、方法、属性封装)
python是面向对象语言,一切皆对象. 面向过程: 变量和函数. “散落” 在文件的各个位置,甚至是不同文件中.看不出变量与函数的相关性,非常不利于维护,设计模式不清晰. 经常导致程序员,忘记某个变 ...
- 下载安装windows版Redis
链接 https://github.com/MicrosoftArchive/redis/releases 选择版本下载 在redis目录打开cmd命令输入 redis-server.ex ...
- Python基础之初始编码
前言 程序中的编码问题你不搞明白,那么你的程序生涯中它会像幽灵一样伴随着你的职业生涯. 首先要搞清楚一个概念:计算机中认识什么?它认识的是010101这种二进制,却不认识中文不认识英文 那么,这个时候 ...
- oracleXE数据库没有公开wm_concat函数, 需要手动添加
CREATE OR REPLACE TYPE wm_concat_impl AUTHID CURRENT_USER AS OBJECT ( curr_str ), STATIC FUNCTION od ...