(1)-V$SESSION_WAIT

这是一个寻找性能瓶颈的关键视图。它提供了任何情况下session在数据库中当前正在等待什么(如果session当前什么也没在做,则显示它最后的等待事件)。当系统存在性能问题时,本视图可以做为一个起点指明探寻问题的方向。

V$SESSION_WAIT中,每一个连接到实例的session都对应一条记录。

V$SESSION_WAIT中的常用列

lSID: session标识

lEVENT: session当前等待的事件,或者最后一次等待事件。

lWAIT_TIME: session等待事件的时间(单位,百分之一秒)如果本列为0,说明session当前session还未有任何等待。

lSEQ#: session等待事件将触发其值自增长

lP1, P2, P3: 等待事件中等待的详细资料

lP1TEXT, P2TEXT, P3TEXT: 解释说明p1,p2,p3事件

附注:

1.State字段有四种含义﹕

(1)Waiting:SESSION正等待这个事件。

(2)Waited unknown time:由于设置了timed_statistics值为false,导致不能得到时间信息。表示发生了等待,但时间很短。

(3)Wait short time:表示发生了等待,但由于时间非常短不超过一个时间单位,所以没有记录。

(4)Waited knnow time:如果session等待然后得到了所需资源,那么将从waiting进入本状态。

2.Wait_time值也有四种含义:

(1)值>0:最后一次等待时间(单位:10ms),当前未在等待状态。

(2)值=0:session正在等待当前的事件。

(3)值=-1:最后一次等待时间小于1个统计单位,当前未在等待状态。

(4)值=-2:时间统计状态未置为可用,当前未在等待状态。

3.Wait_time和Second_in_wait字段值与state相关:

(1)如果state值为Waiting,那么wait_time值无用。Second_in_wait值是实际的等待时间(单位:秒)。

(2)如果state值为Wait unknow time,那么wait_time值和Second_in_wait值都无用。

(3)如果state值为Wait short time,那么wait_time值和Second_in_wait值都无用。

(4)如果state值为Waiting known time,那么wait_time值就是实际等待时间(单位:秒),Second_in_wait值无用。

V$SESSION_WAIT中的连接列

Column        View                     Joined Column(s)

SID              V$SESSION          SID

示例:

1.列出当前系统的等待事件

SELECTevent,

sum(decode(wait_time,0,1,0)) "Curr",

sum(decode(wait_time,0,0,1)) "Prev",

count(*)"Total"

FROMv$session_waitGROUPBYeventORDERBYcount(*);

EVENT                                             Prev       Curr       Tot

---------------------------------------------       ----        -----       -----

PL/SQL lock timer                             0            1            1

SQL*Net more data from client           0            1            1

smon timer                                        0            1            1

pmon timer                                        0            1            1

SQL*Net message to client                  2            0            2

db file scattered read                           2            0            2

rdbms ipc message                            0            7            7

Enqueue                                           0            12           12

pipe get                                             0            12           12

db file sequential read                          3            10           13

latch free                                          9            6            15

SQL*Net message from client             835        1380       2215

这个按事件和wait_time的分组查询列出下列的信息:

l多数的session都是空闲事件如:SQL*Net message from client, pipe get, PMON timer等。

lsession的cpu占用可以通过上次session的非等待事件大致算出,除此问题外:看起来多数session没有在等待什么事情(难道他们都在干活?)但其最后等待事件都是SQL*Net message from client。

2.列出指定ID的等待事件

select*fromv$session_waitwheresid=100;

3.应用p1,p2,p3进行等待事件的分析

v$session_wait视图的列代表的缓冲区忙等待事件如下:

P1—与等待相关的数据文件的全部文件数量。

P2—P1中的数据文件的块数量。

P3—描述等待产生原因的代码。

例:selectp1 "File #", p2 "Block #", p3 "Reason Code"

fromv$session_wait

whereevent ='buffer busy waits';

如果以上查询的结果显示一个块在忙等待,以下的查询将显示这一块的名称和类型:

selectowner, segment_name, segment_type

fromdba_extents

wherefile_id = &P1and&P2betweenblock_idandblock_id + blocks -1;

我们也可以查询dba_data_files以确定等待的文件的file_name,方法是使用v$session_wait中的P1。

从v$session_wait中查询P3(原因编码)的值可以知道session等待的原因。原因编码的范围从0到300,下列为部分编码所代表的事项:

0 块被读入缓冲区。

100 我们想要NEW(创建)一个块,但这一块当前被另一session读入。

110 我们想将当前块设为共享,但这一块被另一session读入,所以我们必须等待read()结束。

120 我们想获得当前的块,但其他人已经将这一块读入缓冲区,所以我们只能等待他人的读入结束。

130 块被另一session读入,而且没有找到其它协调的块,所以我们必须等待读的结束。缓冲区死锁后这种情况也有可能产生。所以必须读入块的CR。

200 我们想新创建一个block,但其他人在使用,所以我们只好等待他人使用结束。

210 Session想读入SCUR或XCUR中的块,如果块交换或者session处于非连续的TX模式,所以等待可能需要很长的时间。

220 在缓冲区查询一个块的当前版本,但有人以不合法的模式使用这一块,所以我们只能等待。

230 以CR/CRX方式获得一个块,但块中的更改开始并且没有结束。

231 CR/CRX扫描找到当前块,但块中的更改开始并且没有结束。

(2)-V$SESSION_EVENT

本视图记录了每个session的每一项等待事件。由上文所知V$SESSION_WAIT显示了session的当前等待事件,而V$SESSION_EVENT则记录了session自启动起所有的事件。

V$SESSION_EVENT中的常用列

lSID:session标识

lEVENT:session等待的事件

lTOTAL_WAITS:此session当前事件的总等待数

lTIME_WAITED:此session总等待时间(单位,百分之一秒)

lAVERAGE_WAIT:此session当前事件平均等待时间(单位,百分之一秒)

lTOTAL_TIMEOUTS:等待超时次数

其它用法与V$SESSION_WAIT相似,不详述了

附注:

Oracle的等待事件是衡量Oracle运行状况的重要依据及指标。等待事件的概念是在Oracle7.0.1.2中引入的,大致有100个等待事件。在Oracle 8.0中这个数目增加到了大约150个,在Oracle8i中大约有200个事件,在Oracle9i中大约有360个等待事件。主要有两种类别的等待事件,即空闲(idle)等待事件和非空闲(non-idle)等待事件。

关于空闲事件和非空闲事件目前通过google可以搜索到非常多详尽的相关信息,同时

Oracle Database Performance Tuning Guide and Reference中关于Wait Events也有非常详尽的描述,在此就不多费口舌了。不过我在itpub论坛看到有热心人整理的chm格式非空闲事件说明,有兴趣的朋友可以下载,链接如下:

非空闲事件说明

详见:http://www.itpub.net/728733.html

oracle session_wait,转载:学习Oracle动态性能表-(8)-V$SESSION_WAIT,V$SESSION_EVENT相关推荐

  1. oracle表是动态表怎么算排名,Oracle学习动态性能表

    按照OracleDocument中的描述,v$sysstat存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的资源使用情况. 类似于v$s Oracle 学习动态性能表 v$l ...

  2. DBA必知的170张Oracle常用动态性能表介绍

     DBA必知的170张Oracle常用动态性能表介绍 常用动态性能表.pdf 附录C 动态性能(V$)视图 本附录介绍动态性能视图.这些视图一般作为V$视图引用.本附录包括下列内容: ???? 动态性 ...

  3. 学习动态性能表(3)--v$sqlv$sql_plan

    学习动态性能表 第三篇-(1)-v$sq 2007.5.25 V$SQL中存储具体的SQL语句. 一条语句可以映射多个cursor,因为对象所指的cursor可以有不同用户(如例1).如果有多个cur ...

  4. 学习动态性能表 第五篇--V$SESSION

    学习动态性能表 第五篇--V$SESSION  在本视图中,每一个连接到数据库实例中的session都拥有一条记录.包括用户session及后台进程如DBWR,LGWR,arcchiver等等. V$ ...

  5. 学习动态性能表(10)--v$session_longops

    学习动态性能表 第十篇--V$SESSION_LONGOPS  2007.6.7 本视图显示运行超过6秒的操作的状态.包括备份,恢复,统计信息收集,查询等等. 要监控查询执行进展状况,你必须使用cos ...

  6. 学习动态性能表 第二篇--v$sesstat

    学习动态性能表 第二篇--v$sesstat  按照OracleOnlineBook中的描述,v$sesstat存储session从login到logout的详细资源使用统计. 类似于v$syssta ...

  7. 学习动态性能表(20)--v$waitstat

    学习动态性能表 第20篇--V$WAITSTAT  2007.6.15 本视图保持自实例启动所有的等待事件统计信息.常用于当你发现系统存在大量的"buffer busy waits" ...

  8. 学习动态性能表(19)--v$undostat

    学习动态性能表 第19篇--V$UNDOSTAT  2007.6.14 本视图监控当前实例中undo空间以及事务如何运行.并统计undo空间开销,事务开销以及实例可用的查询长度. V$UNDOSTAT ...

  9. 分享-动态性能表详解

    从IT-PUB上down下来的一些关于oracle的动态性能表的总结,在大家对oracle进行性能调整和瓶颈检查会有很大的帮助的,不是我写的,在此拿出来跟博客园的朋友分享,共同进步!       一个 ...

最新文章

  1. Flink最锋利的武器:Flink SQL入门和实战 | 附完整实现代码
  2. Reids报错解决:Job for redis-server.service failed because the control process exited with error code.
  3. php 反序列化漏洞简介
  4. 有条件截取字符串_Python小课堂之木辛老师特别讲解:再次深入浅出字符串的格式化...
  5. 关于socket和 jsp的几个问题
  6. ABAP 如何实现屏幕字段不可输入
  7. Xcode7 beta 网络请求报错:The resource could not be loade
  8. C++虚继承(七) --- 虚继承对基类构造函数调用顺序的影响
  9. SAP Spartacus home页面的layout,template,section和slots
  10. SDUT 3377 数据结构实验之查找五:平方之哈希表
  11. 背景图片适应屏幕百分百
  12. 5 个 IDEA 必备插件,让效率成为习惯
  13. 学习日志——2019/08/18
  14. 对百度百科SSL证书的解读
  15. 数字图像处理第五章——图像复原与重建
  16. cocos2d音效设置
  17. gcc/g++编译错误Assembler Error
  18. 洛谷 P4578 [FJOI2018] Upc6605 福建OI2018 所罗门王的宝藏
  19. 怎样用 Excel 快速做数据分析?
  20. 在houdini里,怎么手动设置输出物体的红绿蓝通道,便于nuke调节使用(基础篇)

热门文章

  1. 跨设备链路聚合_路由与交换技术(华为设备)第五讲---链路聚合
  2. i12蓝牙耳机使用说明书图片_配置强悍、适用于开车、运动的蓝牙耳机Xisem西圣 Ares使用体验...
  3. python3.7.1使用_在不影响使用python3.7.1的功能的情况下,是否可以从python代码中删除所有的ufuture_uu语句?...
  4. java的注释、关键字、标识符、变量常量、数据类型、运算符、流程控制等
  5. mysql new map_使用构造器模式动态构建Map作为mybatis的查询条件
  6. 人物志 | KDD Cup 2017双料冠军燕鹏
  7. 系统性能衡量维度、指标
  8. 【HTML/CSS】定位方式及区别
  9. 9 操作系统第二章 进程管理 管程
  10. 为什么百度查到的ip地址和ipconfig查到的不同;详解公网Ip和私网ip; 网络分类ABC类;