oracle v$system_event,Oracle OWI 等待事件视图(v$session_wait/v$session_event/v$system_ev

本文指导用户通过Oracle的v$session_wait、v$session_event和v$system_event视图了解SQL等待事件,提升SQL性能。涵盖了等待事件参数、视图获取方法、关键视图功能及示例查询,适合数据库调优者参考。
摘要由CSDN通过智能技术生成

Oracle为我们提供了获取这些等待事件的可用视图。根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整。本

通常情况下,用户提交一条SQL语句,总会存在这样或那样的等待事件。也就是说由于所需资源被占用导致进程不得不处于等待状态。Oracle为我们提供了获取这些等待事件的可用视图。根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整。本文基于Oracle 10g描述了如何通过视图v$session_wait,v$session_event,以及v$system_event去获取等待事件的相关信息。

1、等待事件相关参数

timed_statistics

指定了在搜集数据库统计信息时,与时间相关的统计信息是否会被收集。该参数影响等待事件中时间相关的值,且受制于statistics_level。

statistics_level

指定了收集数据库以及操作系统统计信息的级别。

该参数值的范围STATISTICS_LEVEL = { ALL | TYPICAL | BASIC },可修改级别ALTER SESSION, ALTER SYSTEM

缺省情况下为TYPICAL

2、等待事件的相关视图

可以从dict数据库字典中获得当前数据库的与等待事件相关的视图,如使用如下SQL来获得:

SELECT *

FROM dict

WHERE table_name LIKE '%V$EVENT%' OR table_name LIKE '%V$%WAIT%';

几个重要的等待事件视图

下面这三个视图提供了不同粒度级的等待事件统计和计时信息。

v$SESSION_WAIT(最低粒度的等待事件)

v$SESSION_EVENT(该视图提供上一视图等待事件的汇总)

v$SYSTEM_EVENT(该视图提供自实例启动以来所有等待事件的汇总)

几个视图的粒度关系

V$SESSION_WAIT ⊂ v$SESSION_EVENT ⊂ v$SYSTEM_EVENT

下面将逐一描述这些视图

3、视图v$event_name

该视图列出了当前Oracle版本中所有等待事件的描述信息。如等待事件的ID,,名字,参数,类别等等

SELECT COUNT (*) FROM v$event_name;

SELECT wait_class, COUNT (*)

FROM v$event_name

GROUP BY wait_class

ORDER BY 2;

4、视图v$session_wait

该视图显示的基于会话级的等待信息,为每个会话当前正在等待的事件或资源提供详细信息。

也就是说在视图v$session_wait中,每一个连接到的实例的session都对应一行活动的或不活动的信息。

视图的p1,p2,p3标识了对应的session正在等待的具体资源,p1text,p2text,p3text则是对p1,p2,p3的文字描述。

从Oracle 10g R1启,该视图的所有信息可以直接从v$session获得。

1)、state字段有四种含义﹕

a、Waiting:当前SESSION正等待这个事件。SECONDS_IN_WAIT表示已经等待的时间。

b、Waited unknown time:参数timed_statistics值为false时,无法确定等待时间。

c、Wait short time:表示发生了等待,且低于1厘秒,此情形下wait_time列显示为-1。

d、Waited known time:如果session等待然后得到了所需资源,那么将从waiting进入本状态,并且时间发送给wait_time列

2)、wait_time值也有四种含义:

a、值>0:最后一次等待时间(单位:厘秒),当前未在等待状态。

b、值=0:session正在等待当前的事件。

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

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

3)、wait_time和seconds_in_wait字段值与state相关:

a、如果state值为Waiting,则wait_time值无效。seconds_in_wait值为实际的等待时间(单位:秒)。

b、如果state值为Wait unknow time或者Wait short time,那么wait_time值和Seconds_in_wait值都无效。

c、如果state值为Waiting known time,则wait_time值就是实际等待时间(单位:秒),seconds_in_wait值无效。

4)、指定session当前的等待事件

SELECT *

FROM v$session_wait

WHERE sid = &input_sid;

logo.gif

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值