`

v$session_event与v$session_wait学习

阅读更多

(1)-V$SESSION_WAIT

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

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

V$SESSION_WAIT中的常用列

l         SID: session标识

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

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

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

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

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

附注:

1.State字段有四种含义﹕

(1)WaitingSESSION正等待这个事件。

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

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

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

2.Wait_time值也有四种含义:

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

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

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

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

3.Wait_timeSecond_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.列出当前系统的等待事件

SELECT event,

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

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

      count(*)"Total"

FROM v$session_wait GROUPBY event ORDERBYcount(*);

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等。

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

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

select * from v$session_wait where sid=100;

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

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

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

P2P1中的数据文件的块数量。

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

例:select p1 "File #", p2 "Block #", p3 "Reason Code"

  from v$session_wait

  where event = 'buffer busy waits';

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

select owner, segment_name, segment_type

 from dba_extents

 where file_id = &P1 and &P2 between block_id and block_id + blocks -1;

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

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

0 块被读入缓冲区。

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

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

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

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

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

210 Session想读入SCURXCUR中的块,如果块交换或者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中的常用列

l         SIDsession标识

l         EVENTsession等待的事件

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

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

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

l         TOTAL_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

分享到:
评论

相关推荐

    oraclev$sessionv$session_wait用途详解

    在Oracle数据库管理与优化的过程中,`v$session`与`v$session_wait`视图扮演着至关重要的角色,它们提供了关于当前活动会话及其等待事件的详细信息,这对于诊断性能问题、理解数据库行为以及进行有效的资源管理至关...

    oracle_v$session_v$session_wait用途详解

    ### Oracle V$SESSION 和 V$SESSION_WAIT 的详细解析 #### 概述 Oracle 数据库提供了大量的动态性能视图(Dynamic Performance Views),其中 `V$SESSION` 和 `V$SESSION_WAIT` 是两个非常重要的视图,它们能够帮助...

    学些动态性能表-word版

    学习动态性能表(六)--v$session_wait&v$session_event 学习动态性能表(七)--v$process 学习动态性能表(八)--v$lock&v$locked_object 学习动态性能表(九)--v$filestat 学习动态性能表(十)--v$session_longops ...

    oracle等待事件

    与v$session_wait不同的是,它提供的是每个session等待事件的历史汇总信息。 5. **v$system_event**:提供系统级别的等待事件统计信息。与v$session_event相比,它可以提供整个数据库层面的等待事件统计情况。 6. ...

    Oracle10g数据库最佳新特性:等待界面 (1)

    V$SESSION_WAIT视图的增强不仅限于增加新的列,还体现在它现在能够与其他视图如V$SESSION结合使用,以获取更全面的会话信息,包括用户ID、终端信息等。这种整合使得在分析性能问题时,DBA无需在多个视图之间来回切换...

    oracle 动态性能(V$)视图

    2. **资源使用情况**:V$SESSION、V$SESSION_WAIT和V$SESSION_LONGOPS显示了会话级别的资源消耗和等待事件,有助于识别性能瓶颈。V$PGA_TARGET_ADVICE提供了PGA内存使用的建议。 3. **系统活动**:V$INSTANCE、V$...

    常用Oracle监控数据库性能的SQL

    SELECT sid, event, seconds_in_wait FROM v$session_wait; ``` 3. `V$SYSTEM_EVENT`: 提供了系统级的等待事件统计,有助于分析哪些类型的等待事件最为频繁。 ```sql SELECT event, COUNT(*) waits, SUM(time_...

    oracle获得跟踪文件的sql查询语句

    通常,这些脚本会利用动态性能视图来收集信息,如V$SESSION_LONGOPS、V$SESSION_EVENT和V$diag_info等。下面我们将详细讨论这些视图以及如何利用它们获取跟踪文件信息。 1. **V$SESSION_LONGOPS**:这个视图显示...

    Oracle 动态性能表

    3. **V$SESSION_WAIT**: 显示每个会话正在等待的事件,有助于识别性能问题的源头,如I/O延迟、锁争用等。 4. **V$SESSION_LONGOPS**: 跟踪执行时间长的操作,如大表扫描或大量数据的插入,便于监控并优化长时间运行...

    oracle动态性能表分析说明

    首先,Oracle动态性能表主要由一系列以“V$”开头的视图组成,如V$SESSION、V$SYSTEM_EVENT、V$BUFFER_CACHE等。每个V$视图代表一个特定的性能指标或数据库活动,例如V$SESSION记录当前会话的信息,V$SYSTEM_EVENT则...

    oracle九大性能视图

    SELECT EVENT, COUNT(*) FROM V$SESSION_WAIT GROUP BY EVENT ORDER BY COUNT(*) DESC; ``` 此查询返回了按等待次数降序排列的事件列表,可以帮助快速识别出最频繁的等待事件。 #### 4. V$SESSION_EVENT - 会话事件...

    oracle性能监控常用语句集合

    例如,`V$SESSION`用于查看当前会话状态,`V$INSTANCE`显示实例信息,`V$SESSION_WAIT`揭示会话等待事件,而`V$SQL`和`V$SQLAREA`则用于分析SQL性能。 2. **系统资源监控**: - `SELECT * FROM V$PGA_MEMORY_...

    《Oracle RAC最佳实践》精华总结

    - 可以通过`V$CR_BLOCK_SERVER`、`V$SESSION_WAIT`和`V$SESSION_WAIT_HISTORY`等视图来识别导致问题的回滚段。 2. **Library Cache Locks**: - 这种锁在PL/SQL和高级队列中较为常见。可以通过查询`V$ENQUEUE_...

    9i + 10G view视图

    4. V$SESSION_WAIT:记录每个会话当前正在等待的事件,用于定位性能问题。 5. V$PGA_MEMORY_ALLOCATIONS:监控程序全局区(PGA)的内存分配情况,有助于优化内存使用。 6. V$LATCH:显示闩锁争用信息,帮助识别潜在...

    oracle标准语法速查表

    v$event_name, v$system_event, v$session_event - **定义**:事件名称、系统事件和会话事件信息。 - **用途**:追踪系统和会话级别的事件。 ##### 29. v$session_wait - **定义**:会话等待信息。 - **用途**:...

    oracle动态链接表

    9. V$SESSION_EVENT 表:记录每个 session 的每一项等待事件。 * V$SESSION_EVENT 表提供了每个会话的等待事件信息,包括等待事件类型、等待时间等。 * 该表可以帮助 DBA 了解每个会话的等待事件和性能瓶颈。 10...

    Oracle数据库性能监控语句汇总.docx

    查询`V$SESSION_WAIT`和`DBA_OBJECTS`视图: ```sql SELECT w.osuser, w.sid, w.blocking_session, o.object_name, w.event FROM V$SESSION_WAIT w, DBA_OBJECTS o WHERE w.object_id = o.object_id ORDER BY w....

    Oracle9i常用动态性能表(视图)说明

    4. V$SESSION_WAIT:显示当前会话正在等待的事件,是诊断性能问题的关键视图,通过分析等待事件,可以定位出导致性能下降的原因。 5. V$PROCESS:包含所有后台进程的信息,包括进程ID、用户进程、服务器进程等,这...

    oracle性能调优

    - **V$SESSION_WAIT**: 显示会话等待信息,包括等待时间、等待状态等。 #### 六、故障排除(Troubleshooting) - **V$SYSSTAT**: 可以用于故障排查的系统级统计信息。 - **V$SGASTAT**: SGA区域的统计信息对于故障...

    Oracle动态性能视图

    - **V$SESSION_EVENT**:帮助识别锁定问题并关闭相应的会话。 - **V$DATAFILE**、**V$FILESTAT** 和 **DBA_DATA_FILES**:用于平衡I/O操作。 6. **资源管理** - **V$DATAFILE**、**V$FILESTAT** 和 **DBA_DATA_...

Global site tag (gtag.js) - Google Analytics