Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Oracle OWI 等待事件历史视图及相关视图

Oracle OWI 等待事件历史视图及相关视图

作者头像
Leshami
发布于 2018-08-14 02:07:30
发布于 2018-08-14 02:07:30
56900
代码可运行
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界
运行总次数:0
代码可运行

    Oracle提供的等待事件视图使得我们可以获取指定session以及实例级别等待事件的详细信息,这些视图分别是v$session_wait,v$session_event,以及v$system_event。然而这几个视图对于历史等待事件无能为力。对此,Oracle也提供了历史等待事件视图v$session_wait_history,同时视图v$session_wait_class,v$system_wait_class也提供了基于等待类别的性能分析,下面是基于Oracle 10g对此展开的描述。

1、视图v$session_wait_history

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--望文生义可知,v$session_wait_history视图提供了历史等待事件的信息。
--v$session_wait_history与v$session_wait基本相同,仅仅多出了SEQ#,EVENT#,WAIT_COUNT这三列。
--SEQ#列表示SESSION按顺序遇到的等待事件,最近的等待事件为1,最远的为10--通过该视图可以快速了解指定sid最近曾经经历了哪些等待(美中不足的是只提供最近的10个等待事件)--当开始一个新的等待事件时,该视图中的信息将被刷新,记录最远时间的事件将会移出,同时最新的等待事件为1,其他向后移一个顺序号。
--WAIT_TIME 列表示这个等待事件在会话中的等待时间。=0:表示正在等待事件完成;>0最后的等待时间。
--WAIT_CONT列表示等待的次数。

--查询历史sid
goex_admin@SYBO2SZ> SELECT DISTINCT sid
  2    FROM v$session_wait_history h
  3   WHERE NOT EXISTS
  4            (SELECT 1
  5               FROM v$session_event
  6              WHERE sid = h.sid);

       SID
----------
      1062
      1065
      1060

--下面查询sid为1062的历史等待事件信息
--下面的查询可以看出该sid经历了一系列的等待事件
--seq#为10的表明是sql被解析到library cache时的等待
--seq#为9的则是表明加载数据字典到缓冲区碰到的等待
--seq#为7,8则表明在返回结果时经历了db file sequential read等待
--seq#为6表明当前sid所需的数据块在被读入buffer时,此时其他的session正在将该块读入buffer
--seq#为1,2表明处于空闲等待,从WAIT_TIME0也可知为空闲等待,之后该sid被关闭
goex_admin@SYBO2SZ> select sid,seq#,event#,event,wait_time,wait_count from v$session_wait_history where sid=1062;

       SID       SEQ#     EVENT# EVENT                            WAIT_TIME WAIT_COUNT
---------- ---------- ---------- ------------------------------- ---------- ----------
      1062          1        257 SQL*Net message from client              0          1
      1062          2        253 SQL*Net message to client                0          1
      1062          3        116 db file sequential read                  9          1
      1062          4        257 SQL*Net message from client              0          1
      1062          5        253 SQL*Net message to client                0          1
      1062          6         67 read by other session                    6          1
      1062          7        116 db file sequential read                 11          1
      1062          8        116 db file sequential read                  1          1
      1062          9        205 latch: row cache objects                 9          1
      1062         10        212 latch: library cache                     5          1      

2、视图v$session_wait_class

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--该视图提供了当前连接到数据库实例的所有会话级的信息。
--查看所有session等待类别
goex_admin@SYBO2SZ>   SELECT wait_class#,
  2           wait_class,
  3           SUM (total_waits),
  4           SUM (time_waited)
  5      FROM v$session_wait_class
  6  GROUP BY wait_class#, wait_class
  7  ORDER BY 3, 4;
  
WAIT_CLASS# WAIT_CLASS            SUM(TOTAL_WAITS) SUM(TIME_WAITED)
----------- --------------------- ---------------- ----------------
          1 Application                         42                0
          2 Configuration                     1219           110012
          5 Commit                            1332              154
          0 Other                            14387            19744
          4 Concurrency                      34092            74180
          8 User I/O                       1945820            42429
          9 System I/O                     3899256           731677
          7 Network                        4580071             9068
          6 Idle                          10577566       3175310702

--从上面的查询来看,系统等待以Idle的情形居多,系统总体运行良好。
--为便于演示,我们可以查看是哪些sid导致了过多的User I/O
goex_admin@SYBO2SZ>   SELECT sid,
  2           time_waited,
  3           total_waits,
  4           ROUND (time_waited / total_waits, 2) AS percnt
  5      FROM v$session_wait_class
  6     WHERE wait_class# = 8 AND ROWNUM < 2
  7  ORDER BY percnt;   
  
   SID TIME_WAITED TOTAL_WAITS     PERCNT
------ ----------- ----------- ----------
  1014       12088      186162        .06

--一旦找到上述导致某类等待事件过多的sid,进一步可以找出对应的sql语句。其次也可以找出该sid经历的所有等待事件。       

--查看单个会话级的等待类别
-- Author : Robinson
-- Blog   : http://blog.csdn.net/robinson_0612
--下面的查询可以看出sid为1083的session经历等待最多的是网络等待
goex_admin@SYBO2SZ> select * from  v$session_wait_class where sid=1083 order by 6 desc;

   SID    SERIAL# WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS         TOTAL_WAITS TIME_WAITED
------ ---------- ------------- ----------- ------------------ ----------- -----------
  1083         72    2000153315           7 Network                     11           0
  1083         72    2723168908           6 Idle                        10          15
  1083         72    4217450380           1 Application                  2           0
  1083         72    1740759767           8 User I/O                     2           3

3、视图v$system_wait_class

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--该视图包含了v$session_wait_class视图的信息,显示的是自实例启动后等待类在实例级的总等待和等待时间。
--该视图基于数据库整体等待事件类进行评估数据库性能,而非单个等待事件。

--下面的查询中可以看出基于用户类的等待事件最多,应该集中focus 在User I/O这一块。
SQL> select * from v$system_wait_class order by 4 desc;

WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS            TOTAL_WAITS TIME_WAITED
------------- ----------- --------------------- ----------- -----------
   1740759767           8 User I/O                276741470     5086685
   2000153315           7 Network                 131198524      177709
   2723168908           6 Idle                     33734334  6334346903
   4108307767           9 System I/O               11799468     2288863
   3386400367           5 Commit                    1204500       91997
   3875070507           4 Concurrency                 51928       81428
   1893977003           0 Other                       38786       43836
   4217450380           1 Application                 28600       20398
   3290255840           2 Configuration               15309      296458
   4166625743           3 Administrative               1298       30917

10 rows selected.

4、视图v$event_histogram 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--v$event_histogram视图是等待事件直方图。有点类似于列上使用的直方图,用于描述等待事件在特定等待时间段内的频度。
--根据对某些特定等待事件的频度进行分析可以得出该等待事件是否处于异常状况,进而采取进一步的措施。
--对下面的查询结果进行分析

goex_admin@SYBO2SZ> select * from v$event_histogram where event#=115;

    EVENT# EVENT                 WAIT_TIME_MILLI WAIT_COUNT
---------- --------------------- --------------- ----------
       115 log file sync                       1       1739
       115 log file sync                       2       1151
       115 log file sync                       4        374
       115 log file sync                       8       1637
       115 log file sync                      16       3281
       115 log file sync                      32       4070
       115 log file sync                      64       4308
       115 log file sync                     128       3698
       115 log file sync                     256       3491
       115 log file sync                     512       3556
       115 log file sync                    1024       6083
--上面的查询中展示的是log file sync等待事件自本实例启动以来基于事件频度发生的次数。
--在大于512ms至1024ms区间,该事件发生的次数竟然达到了6083次。即时是小于2ms的情形也出现了1739次。明显存在异常。
--上述情形表明该数据库正在经历严重的log file sync 事件。对于上述情形,我们在awr报告的top event中应该也会看到该等待事件。
--log file sync等待事件和事务的提交回滚相关,表明存在过多的提交或短事务。应考虑批量提交以及日志文件大小,缓冲大小是否合理。

5、小结   a、Oracle体供的等待事件可以快速定位指定sid正在经历哪些等待。参考:Oracle OWI 等待事件视图   b、可以通过v$session_wait_history视图查询历史等待事件最近的10个等待信息。   c、视图v$session_wait_class提供了所有会话级的按等待事件类别来度量等待事件的详细信息。   d、视图v$system_wait_class提供了整个实例级别(自实例启动后)的按等待事件类别来度量等待事件的详细信息。   e、视图v$session_wait_class与视图v$system_wait_class是从整体(等待事件类)来考量当前系统的等待事件瓶颈,非单个等待事件。   f、视图v$event_histogram为等待事件提供直方图信息,严重的等待事件,如出现在top event中的可以在该视图得以展现。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013年04月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​[AWR报告]db file sequential read等待事件
顺序读是物理读的一种方式,这里的顺序指的是读取数据块到一个连续的内存区域,而且总是读取单个数据块(single-block read)
bsbforever
2020/08/19
7430
一个Oracle小白的AWR报告分析(二)
背景:某个类似准实时的数据分析系统,每15分钟从其他6个数据库中抽取五百张增量数据表,并进行15分钟粒度统计,同时有个前端门户进行查询。
python与大数据分析
2022/03/11
1.4K0
一个Oracle小白的AWR报告分析(二)
Oracle OWI 等待事件视图(v$session_wait/v$session_event/v$system_event)
    通常情况下,用户提交一条SQL语句,总会存在这样或那样的等待事件。也就是说由于所需资源被占用导致进程不得不处于等待状态。Oracle为我们提供了获取这些等待事件的可用视图。根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整。本文基于Oracle 10g描述了如何通过视图v$session_wait,v$session_event,以及v$system_event去获取等待事件的相关信息。
Leshami
2018/08/14
1.5K0
ORACLE常用性能监控SQL【一】
kill session: 执行 alter system kill session ‘761,876’(sid 为 761);
小小工匠
2021/08/16
2.9K0
全面解析Oracle等待事件的分类、发现及优化
大家可能有些奇怪,为什么说等待事件,先谈到了指标体系。其实,正是因为指标体系的发展,才导致等待事件的引入。总结一下,Oracle的指标体系,大致经历了下面三个阶段:
宜信技术学院
2019/11/14
3.7K0
[AWR报告]log file sync等待事件
当用户提交(commit)语句时,一个进程会建立一个redo 记录并把它拷贝至SGA中的log buffer中,然后这个进程会通知LGWR进程再将log buffer中的内容写入日志文件(redo file)中,同时清空log buffer的内容,最后返回完成消息,这就完成了一次commit操作
bsbforever
2020/08/19
1.1K0
Oracle10gR2 New Feature:V$SESSION change tracking
作者:eygle 出处:http://www.eygle.com/blog 日期:September 15, 2005 本文链接:http://www.eygle.com/archives/2005/09/10gr2_vsession_change.html
数据和云01
2018/09/05
3310
db file sequential read等待事件
最近某个应用的AWR中总显示“db file sequential read“等待事件位于top 5之首,下面检索下MOS关于这个等待事件的说明。
bisal
2019/01/29
1.4K0
[AWR报告]db file sequential read
顺序读是物理读的一种方式,这里的顺序指的是读取数据块到一个连续的内存区域,而且总是读取单个数据块(single-block read)
bsbforever
2020/08/19
1.6K0
Oracle Time Model Statistics(时间模型统计)
下图为 DB Time in Overall User Response Time
Leshami
2018/08/13
9800
Oracle Time Model Statistics(时间模型统计)
[AWR报告]db file scattered read等待事件
离散读是物理读的一种方式,这里的离散指的是读取数据块到一块离散(不连续)的内存区域,而且一般读取多个数据块( multi-block read),可能为单个数据库
bsbforever
2020/08/19
9170
等待事件统计视图 | 全方位认识 sys 系统库
在上一篇《内存分配统计视图 | 全方位认识 sys 系统库》中,我们介绍了sys 系统库如何查询内存事件统计信息和buffer pool统计信息,本期的内容先给大家介绍按照等待事件统计相关的视图(注意不要和《按 file 分组统计视图|全方位认识 sys 系统库》介绍的内容搞混了,这篇中介绍的等待事件仅针对文件IO等待事件,而本篇介绍的是所有的等待事件)。下面请跟随我们一起开始 sys 系统库的系统学习之旅吧~
沃趣科技
2018/09/04
8970
等待事件统计视图 | 全方位认识 sys 系统库
[AWR报告]SQL*Net message to client等待事件
注意这里的信息是从实例起来的汇总,同时由于SID是可以复用的,所以查看出来的SID并不代表上次的语句是这个等待
bsbforever
2020/08/19
1.8K0
[AWR报告]log file parallel write等待事件
上节我们介绍了log file sync 等待事件,知道其发生在LGWR 进程将log buffer 内容写入redo log时产生
bsbforever
2020/08/19
1.4K0
性能监控之Telegraf+InfluxDB+Grafana+Python实现Oracle实时监控
通过查询 V$FIXED_TABLE ,可以列出所有可用的动态性能视图和动态性能表。
高楼Zee
2019/10/17
2.7K0
性能监控之Telegraf+InfluxDB+Grafana+Python实现Oracle实时监控
与IO相关的等待事件troubleshooting-系列2
数据库性能调优方面一项关键的方法就是响应时间分析。找出时间都花费在数据库的哪些环节。
bisal
2022/12/01
4810
Oracle 等待事件(Wait Event):Sync ASM rebalance 解析
墨天轮原文链接:https://www.modb.pro/db/22964?ywm 在 Oracle 数据库中,经常可以见到一个特殊的等待事件:Sync ASM rebalance 。这个等待事件的基
数据和云01
2020/03/31
1.4K0
记一次library cache lock/library cache pin导致的函数编译hang住分析及处理过程
墨墨导读:业务在进行alter function my_function_name compile时,有两个函数编译无法通过,现象就是会hang住,这里分享处理的整个过程。
数据和云
2021/02/08
1.3K0
如何通过 Shell 监控异常等待事件和活跃会话
前几天有网友在墨天轮平台上问到“如何写一个定时任务监控用户会话连接数”的问题,由于当时比较忙,回答的比较简单也比较匆忙。最近也因为公司新项目老是加班,运维保障,安装 RAC、搭建 DG 、故障处理等等,占据了很大个人时间,休息充电的时间难免减少了很多,今日利用闲暇时间,来继续说一说监控会话相关的这个话题。
JiekeXu之路
2020/10/10
1.6K0
如何通过 Shell 监控异常等待事件和活跃会话
How to Tell if the I/O of the Database is Slow - 2
        单块IO,指一次只读一个块。例如,当一个session等待一个单块IO时,典型的等待事件就是“db file sequential read”,表明正在等待需要的块。
bisal
2022/12/01
4780
How to Tell if the I/O of the Database is Slow - 2
相关推荐
​[AWR报告]db file sequential read等待事件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验