oracle dba_hist_sql,从dba_hist_sqlstat视图中查找过去时段最占用资源的会话
超过阀值的sql语句会在awr中保存一段时间(默认是7天),可以通过dba_hist_sqlstat视图查询。
1.查询视图dba_hist_sqlstat
select snap_id, disk_reads_delta reads_delta,
executions_delta exec_delta, disk_reads_delta /decode
(executions_delta, 0, 1,executions_delta) rds_exec_ratio,
sql_id
from dba_hist_sqlstat
where disk_reads_delta > 100000
order by disk_reads_delta desc;
snap_id reads_delta exec_delta rds_exec_ratio sql_id
39 511106 1 511106 8h1qaqha580hh
29 216898 3 72299.33 d5bcqvumxr4y4
2.根据sql_id,在dba_hist_sqltext中查看相关sql语句
select command_type,sql_text
from dba_hist_sqltext
where sql_id='d5bcqvumxr4y4';
command_type sql_text
3 select count(id) from bom
注:command_type=3表示这是select命令,完整的command_type可以select * from audit_actions;
3.查看之前命令的执行计划
select * from table(dbms_xplan.display_awr('8h1qaqha580hh'));
========================================================================
补充几个有用的oracle dba_hist_*查询语句 :
1.耗cpu最多的10条语句
select *
from (select s.sql_id,
sum(s.cpu_time_delta),
sum(s.disk_reads_delta),
count(*)
from dba_hist_sqlstat s
group by s.sql_id
order by sum(s.cpu_time_delta) desc)
where rownum < 11;
2.最近7天,指定时间段(8:00-16:00)最消耗cpu的10条语句
select *
from (select s.sql_id,
sum(s.cpu_time_delta),
sum(s.disk_reads_delta),
count(*)
from dba_hist_sqlstat s, dba_hist_snapshot p
where 1 = 1
and s.snap_id = p.snap_id
and extract(hour from p.end_interval_time) between 8 and 16
and p.end_interval_time between sysdate - 7 and sysdate
group by s.sql_id
order by sum(s.cpu_time_delta) desc)
where rownum < 11;
3.可以进一步关联dba_hist_sqltext视图得到详细的sql语句
select * from
(select
s.sql_id, s.sql_text
sum(s.cpu_time_delta),
sum(s.disk_reads_delta),
count(*)
from dba_hist_sqlstat s, dba_hist_snapshot p, dba_hist_sqltext t
where 1=1
and s.snap_id = p.snap_id
and s.sql_id = t.sql_id
and extract(hour from p.end_interval_time) between 8 and 16
and t.command_type != 47 ╟- exclude pl/sql blocks from output
and p.end_interval_time between sysdate-7 and sysdate
group by s.sql_id
order by sum(s.cpu_time_delta) desc
)
where rownum < 11
4.分析指定sql语句各版本执行计划的资源消耗情况
select st.sql_id,
st.plan_hash_value,
sum(st.executions_delta) executions,
sum(st.rows_processed_delta) crows,
trunc(sum(st.cpu_time_delta) / 1000000 / 60) cpu_mins,
trunc(sum(st.elapsed_time_delta) / 1000000 / 60) ela_mins
from dba_hist_sqlstat st
where st.sql_id in (‘ &1′)
group by st.sql_id, st.plan_hash_value
order by st.sql_id, cpu_mins;
5.分析对比sql语句在不同执行计划中的执行情况
select st2.sql_id,
st2.plan_hash_value,
st_long.plan_hash_value l_plan_hash_value,
st2.cpu_mins,
st_long.cpu_mins l_cpu_mins,
st2.ela_mins,
st_long.ela_mins l_ela_mins,
st2.executions,
st_long.executions l_executions,
st2.crows,
st_long.crows l_crows,
st2.cpu_mins_per_row,
st_long.cpu_mins_per_row l_cpu_mins_per_row
from (select st.sql_id,
st.plan_hash_value,
sum(st.executions_delta) executions,
sum(st.rows_processed_delta) crows,
trunc(sum(st.cpu_time_delta) / 1000000 / 60) cpu_mins,
decode(sum(st.rows_processed_delta),
0,
0,
(sum(st.cpu_time_delta) / 1000000 / 60) /
sum(st.rows_processed_delta)) cpu_mins_per_row,
trunc(sum(st.elapsed_time_delta) / 1000000 / 60) ela_mins
from dba_hist_sqlstat st
where 1 = 1
and (st.cpu_time_delta != 0 or st.rows_processed_delta != 0)
group by st.sql_id, st.plan_hash_value) st2,
(select st.sql_id,
st.plan_hash_value,
sum(st.executions_delta) executions,
sum(st.rows_processed_delta) crows,
trunc(sum(st.cpu_time_delta) / 1000000 / 60) cpu_mins,
decode(sum(st.rows_processed_delta),
0,
0,
(sum(st.cpu_time_delta) / 1000000 / 60) /
sum(st.rows_processed_delta)) cpu_mins_per_row,
trunc(sum(st.elapsed_time_delta) / 1000000 / 60) ela_mins
from dba_hist_sqlstat st
where 1 = 1
and (st.cpu_time_delta != 0 or st.rows_processed_delta != 0)
having trunc(sum(st.cpu_time_delta) / 1000000 / 60) > 10
group by st.sql_id, st.plan_hash_value) st_long
where 1 = 1
and st2.sql_id = st_long.sql_id
and st_long.cpu_mins_per_row /
decode(st2.cpu_mins_per_row, 0, 1, st2.cpu_mins_per_row) > 2
order by l_cpu_mins desc,
st2.sql_id,
st_long.cpu_mins desc,
st2.plan_hash_value;
oracle dba_hist_sql,从dba_hist_sqlstat视图中查找过去时段最占用资源的会话相关推荐
- oracle查看物化视图的索引,oracle – 物化视图中的域索引返回零行
我有Oracle DB的问题 – 在物化视图上通过CONTAINS()搜索后,域索引返回零行.我看到物化视图充满了数据,我还使用过程ctx_ddl.sync_index()进行域索引同步. 什么有用: ...
- oracle停止job任务视图,【学习笔记】Oracle dba_datapump_jobs中not running作业的清除方法...
天萃荷净 Oracle研究中心学习笔记:分享一篇关于Oracle数据库JOBS作业控制的文章.关于dba_datapump_jobs中的not running的作业的清除的方法. not runnin ...
- fileviewfinder.php,Laravel在FileViewFinder.php中查找视图的错误处理程序
试图为Laravel实现自定义错误处理程序,以便当它被推送时,404的等比正常的红色和黑色屏幕更好.Laravel在FileViewFinder.php中查找视图的错误处理程序 我发现这其中的意义的作 ...
- oracle视图无法使用rowid,请问:无法从没有键值保存表的连接视图中选择 ROWID 这个是什么原因啊?...
rowid 在join 视图的情况 select column_name, insertable, updatable, deletable from user_updatable_columns w ...
- 01219 oracle,ORA-01219: 数据库或可插入数据库未打开: 仅允许在固定表或视图中查询 oracle...
一周没用过oracle,打开数据库的时候报错: 执行请求的操作时遇到错误: ORA-01219: 数据库或可插入数据库未打开: 仅允许在固定表或视图中查询 01219. 00000 - "d ...
- oracle 视图能建索引吗,Oracle视图中建立索引注意事项.doc
Oracle视图中建立索引的注意事项 在视图上创建索引需要三个条件:一.视图必须绑定到架构.要做到这点,在?CREATE?VIEW?语句中,必须加上?WITH?SCHEMABINDING,如果是使用企 ...
- oracle 视图 其他用户,oracle创建视图中涉及到另外一个用户的表权限不足问题
oracle创建视图中涉及到另外一个用户的表权限不足问题 在oracle中存储过程或者视图等对象创建时,如果涉及到另外一个用户的表,即使你已经grant dba了,也不行,必须显式地赋予查询权限.否则 ...
- oracle查视图字段类型,oracle,如何查看视图结构,获得视图中的字段名称、字段类型、字段长度等。...
需要获得一个视图中的字段名称.字段类型.字段长度等信息,该如何编写sql语句. 通过select * from user_views可以获得给定用户下所有的视图名称了,但是没找到如何获取视图结构的解决 ...
- ORACLE动态sql在存储过程中出现表或视图不存在的解决方法
ORACLE动态sql在存储过程中出现表或视图不存在的解决方法 CREATE OR REPLACE PROCEDURE P_test is strsql varchar2(2000); BEGIN ...
- oracle中查找指定字符串位置
oracle中查找指定字符串的位置,instr函数笔记: 1,instr(x,y); x:源字符串 y:目标字符串 select instr('abcdefgxyzaa','a') position ...
最新文章
- Scratch青少年编程能力等级测试模拟题(四级)
- d3设置line长度_使用d3画一些基本的图形
- python中变量的作用域有几种_Python中变量的作用域(variable scope)
- 【转】Java finally语句到底是在return之前还是之后执行?
- 轻量级Web渗透测试工具jSQL
- Qt中TCP服务端编程
- Java基础篇:static关键字
- [转载]基于TFS实践敏捷-修复Bug和执行代码评审
- ElasticSearch通配符 * 查询(英文检索)
- 25. 文件系统——源程序的编译安装(make,make install,ldd,ldconfig -v)
- jQuery 查找元素节点
- Lync 2013持久聊天迁移至Skype for Business
- 使用docker实现半自动化代码自动部署与回滚
- laravel 效率与java_让你的Laravel 应用运行速度飞起来!(利用PHP OPcache)
- mysql服务器版本手册_MySQL中文参考手册——与MySQL服务器连接
- 链路聚合的配置(思科)
- win10 教育版 激活方法
- 无标号有根树计数与无标号无根树计数
- Python+AI智能编辑人脸
- Emm_V4.2步进闭环驱动器说明书Rev1.1