ITPub博客

首页 > 数据库 > Oracle > 【AWR】Oracle awr相关视图及体系介绍

【AWR】Oracle awr相关视图及体系介绍

原创 Oracle 作者:xysoul_云龙 时间:2021-11-10 17:20:49 0 删除 编辑

Oracle 数据库中的awr及ash 为 dba提供了非常便利的条件,来分析数据库相关性能问题,下面主要介绍awr相关信息。


  1. awr主要结构


2.awr相关视图

相关视图还有一个 dba_hist_snapshot ,来辅助查询。相关视图主要列介绍:


3.ASH


4.AWR 相关脚本


5.相关sql语句举例

--Wait events 5min
set lines 200 pages 999
col event for a32
select * from (
select sql_id,inst_id,
    sum(decode(vash.session_state,'ON CPU',1,0)) as "ON CPU",
	sum(decode(vash.session_state,'WAITING',1,0)) as "WAITING ON CPU",
	event,count(distinct(session_id||session_serial#)) as "SESSION COUNT"
	from gv$active_session_history vash
	where sample_time > sysdate -10/(60*24)
	group by event,inst_id,sql_id
	order by 4 desc
) where rownum<=20;
--query sql_id dbtime ,last 10 minutes
select * from (
select nvl(sql_id,'null') as sql_id,sum(1) as "DBtime in Seconds"
    from v$active_session_history
	where sample_time > sysdate-10/(24*60)
	group by sql_id order by 2 desc
) where rownum<=11;
-- cpu usage info ,last 10 minutes
select * from (
select sql_id,inst_id,
    sum(decode(vash.session_state,'ON CPU',1,0)) as "Number on CPU",
	sum(decode(vash.session_state,'WAITING',1,0)) as "Number WAITING ON CPU"
	from gv$active_session_history vash
	where sample_time > sysdate -10/(60*24)
	group by sql_id,inst_id
	order by 3 desc
) where rownum<=20;
--每天9点 dbtime对比
set linesize 200
set pagesize 20000
col DATE_TIME  for a20
col STAT_NAME  for a10
col dbtime_value1 for a10
col dbtime_value2 for a10
col dbtime_value3 for a10
 WITH sysstat AS (
  SELECT
    sn.begin_interval_time begin_interval_time,
    sn.end_interval_time end_interval_time,
    ss.VALUE e_value,
  ss.instance_number instance_number,
    lag(ss.VALUE, 1) over (ORDER BY ss.snap_id) b_value
  FROM
    DBA_HIST_SYS_TIME_MODEL ss,
    dba_hist_snapshot sn
  WHERE
  to_char(sn.end_interval_time,'hh24')='09' --每天9-10点 dbtime
  AND ss.snap_id = sn.snap_id
  AND ss.dbid = sn.dbid
  AND ss.instance_number = sn.instance_number
  AND ss.dbid = (SELECT dbid FROM v$database)
  AND ss.stat_name = 'DB time'
  )
select date_time,listagg(dbtime_value1) within group (order by date_time) dbtime_1,
listagg(dbtime_value2) within group (order by date_time) dbtime_2,
listagg(dbtime_value3)  within group (order by date_time) dbtime_3 from 
(
select to_char(end_interval_time,'yyyy-mm-dd hh24:mi') date_time,
  CASE WHEN instance_number=1 then 
  round((e_value - nvl(b_value, 0))/60/1000/1000 ,2) end as dbtime_value1,
  CASE WHEN instance_number=2 then 
  round((e_value - nvl(b_value, 0))/60/1000/1000 ,2) end as dbtime_value2,
  CASE WHEN instance_number=3 then 
  round((e_value - nvl(b_value, 0))/60/1000/1000 ,2) end as dbtime_value3
  FROM
  sysstat
WHERE
  (e_value - nvl(b_value, 0)) > 0 AND
  nvl (b_value, 0) > 0 order by 1
  ) group by date_time;



参考:

Using Automatic Workload Repository for Database Tuning: Tips for Expert DBAs







来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29487349/viewspace-2841583/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
主要从事Oracle数据库 DBA相关工作,其他操作系统、中间件等也有涉及,热衷分享。岁月老将至,如有幸在江湖中留点踪迹,也是欣慰。 【文盲筱烨】好读书爱运动的IT技术爱好者 微博:文盲筱烨 微信公众号:筱烨视点

注册时间:2014-02-15

  • 博文量
    370
  • 访问量
    909553