等待事件分类

等待事件主要可以分两类,即空闲(idle)等待事件

非空闲(non-idle)等待事件.

  1. 空闲等待意味着Oracle正在等待某种动作的发生,实际上并不是因为繁忙而等待,而是因为没有事情做所以等待,如:smon timer,SMON进程的一些操作每隔一段时间循环执行的,即使系统不忙,此事件也不立即发生,而是等待计时器达到一定的时间才执行,此时出现的smon timer 等待事件,而系统并没有出现性能上的问题。多数的空闲等待对数据库性能的影响不大,可以不必过多的关注。
  2. 空闲等待事件专门针对oracle的活动,指数据库任务或运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注和研究的。

查看v$event_name视图的字段结构。

Oracle等待事件_Oracle

查看等待事件总数。

Oracle等待事件_Oracle_02

 

查看等待事件分类情况:

select wait_class#,wait_class_id,wait_class,count(*) as "count"
from v$event_name group by wait_class#,wait_class_id,wait_class
order by wait_class#;

 

和等待事件相关的几个视图:

v$session: 代表数据库活动的开始,视为源起。

v$session_wait: 视图用以实时记录活动session的等待情况,是当前信息。

v$session_wait_history: 是对v$session_wait的简单增强,记录活动session的最近10次等待。

V$SQLTEXT: 当数据库出现瓶颈时,通常可以从V$SESSION_WAIT找到那些正在等待资源的SESSION,通过SESSION的SID,联合V$SESSION和V$SQLTEXT视图就可以捕获这些SESSION正在执行的SQL语句。

V$ACTIVE_SESSION_HISTORY: 是ASH的核心,用以记录活动SESSION的历史等待信息,每秒采样一次,这部分内容记录在内存中,期望值是记录一个小时的内容。

WRH#_ACTIVE_SESSION_HISTORY : 是V$ACTIVE_SESSION_HISTORY在AWR的存储地。

V$ACTIVE_SESSION_HISTORY: 中的信息会被定期(每小时一次)的刷新到负载库中,并缺省保留一个星期用于分析。

DBA_HIST_ACTIVE_SESS_HISTORY: 视图是WRH#_ACTIVE_SESSION_HISTORY视图和其他几个视图的联合展现,通常通过这个视图进行历史数据的访问。

V$SYSTEM_EVENT 由于V$SESSION记录的是动态信息,和SESSION的生命周期相关,而并不记录历史信息,所以ORACLE提供视图V$SYSTEM_EVENT来记录数据库自启动以来所有等待事件的汇总信息。通过这个视图,用户可以迅速获得数据库运行的总体概况。