oracle等待事件-1
oracle等待事件-1
一、等待事件的相关知识
1、等待事件的源起
等待事件的概念大概是从ORACLE 7.0.12中引入的,大致有100个等待事件。在ORACLE 8.0中这个数目增大到了大约150个,在ORACLE 8I中大约有220个事件,在ORACLE 9IR2中大约有400个等待事件,而在最近ORACLE 10GR2中,大约有874个等待事件
虽然不同版本和组件安装可能会有不同数目的等待事件,但是这些等待事件都可以通过查询V$EVENT_NAME视图获得
2、等待事件分类:
等待事件可以分成两类,即空闲等待事件(IDLE)和非空闲等待事件(NON-IDLE)
1)、空闲等待事件:是指oracle正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分等待事件。
2)、非空闲等待事件:指专门针对oracle数据库活动的事件,数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注和研究的。
3、查看$event_name视图的字段结构
SQL> desc v$event_name;
Name Null? Type
----------------------------------------- -------- ----------------------------
EVENT# NUMBER
EVENT_ID NUMBER
NAME VARCHAR2(64)
PARAMETER1 VARCHAR2(64)
PARAMETER2 VARCHAR2(64)
PARAMETER3 VARCHAR2(64)
WAIT_CLASS_ID NUMBER
WAIT_CLASS# NUMBER
WAIT_CLASS VARCHAR2(64)
4、查看等待事件的总数
SQL> select count(*) from v$event_name;
COUNT(*)
----------
874
5、查看等待事件情况分类
SQL> select
WAIT_CLASS#,WAIT_CLASS,WAIT_CLASS_ID ,count(*) as "count"
from v$event_name
group by WAIT_CLASS#,WAIT_CLASS,WAIT_CLASS_ID
order by WAIT_CLASS#; 2 3 4 5
WAIT_CLASS# WAIT_CLASS
WAIT_CLASS_ID count
-------------------------------- ------------------- ------------- ----------
0 Other 1893977003 590
1 Application
4217450380 12
2 Configuration
3290255840 23
3 Administrative
4166625743 46
4 Concurrency
3875070507 24
5 Commit 3386400367 1
6 Idle 2723168908 62
7 Network 2000153315 26
8 User I/O 1740759767 17
9 System I/O 4108307767 24
10 Scheduler 2396326234 2
WAIT_CLASS# WAIT_CLASS WAIT_CLASS_ID
count
----------- -------------------------------------------------------------------------------------------------------------------------------- ------------- ----------
11 Cluster 3871361733 47
12 rows selected.
6、相关查询视图:
V$SESSION:代表数据库活动的开始,视为源起
V$SESSION_WAIT:视图用以实时记录活动session的情况,是当前信息。
V$SESSION_WAIT_HISTORY:是对session_wait 的增强记忆,记录活动session的近10次
V$SQLTEXT:当数据库出现瓶颈时,可以从session_wait中找到那些正在等待资源的session,通过session的SID,联合V$SESSION和V$SQLSTEXT视图可以捕获那些session正在执行的SQL语句。
V$ACTION_SESSION_HISTORY:是ASE的核心,用以记录活动session的历史等待信息,没标采样一次,这部分内容记录在内存中,期望值是记录一个小时的session。
V$SYSTEM_EVENT:由于session记录的是动态信息,和session的生命周期相关,而并不记录历史信息,所以oracle提供视图V$SYSTEM_EVENT来记录数据库自启动以来所有等待事件的汇总信息,通过这个视图用户可以迅速的获得数据库运行的总体概况。