ITPub博客

首页 > Linux操作系统 > Linux操作系统 > V$SESSION.STATUS='ACTIVE' AND WAIT_EVENT='Idle'

V$SESSION.STATUS='ACTIVE' AND WAIT_EVENT='Idle'

原创 Linux操作系统 作者:尛样儿 时间:2011-11-08 19:05:05 1 删除 编辑

        
        V$SESSION.STATUS='ACTIVE'表示当前会话正在执行SQL语句。
        WAIT_EVENT='Idle'表示服务器进程处于空闲等待状态。
        Idle这类事件属于空闲等待类型,服务器进程没有工作可做,正在等待新的工作。通常情况,如果这类等待事件是瓶颈所在,那么瓶颈不在数据库资源上。当调整的时候,大多数空闲事件可以被忽略,因为这类等待时间不意味着传统的性能瓶颈。一些空闲事件能用于表示没有瓶颈,例如,这类型的事件通常会遇到空闲等待事件'SQL Net message from client',下表列出了空闲等待事件:

Idle Wait Events

Wait Name Background Process Idle Event User Process Idle Event Parallel Query Idle Event Shared Server Idle Event Oracle Real Application Clusters Idle Event

dispatcher timer

.

.

.

X

.

pipe get

.

X

.

.

.

pmon timer

X

.

.

.

.

PX Idle Wait

.

.

X

.

.

PX Deq Credit: need buffer

.

.

X

.

.

rdbms ipc message

X

.

.

.

.

smon timer

X

.

.

.

.

SQL*Net message from client

.

X

.

.

.

virtual circuit status

.

.

.

X

.


        V$SESSION.STATUS='ACTIVE' 和WAIT_EVENT='Idle'这两种情况看似矛盾,但实际的工作中会经常出现这中情况。下面举例说明这种情况:
1.所有的后台进程一直处于V$SESSION.STATUS='ACTIVE'状态,大部分时候这些后台进程都没有执行任何工作,所以V$SESSION.WAIT_EVENT='Idle'。

2.事务执行DML操作,但未提交,它的状态也是这样的,Oracle认为事务没有提交,SQL语句就在执行,但进程并未执行任何的工作。

        由此可以看出,可以简单的认为V$SESSION.STATUS表示的执行SQL的事务状态,而V$SESSION.WAIT_EVENT表示的是会话对应的进程的状态,如果WAIT_EVENT='Idle'的会话成为数据库的瓶颈所在,那么可能是Oracle自身的问题或者是配置的问题,可以排除是数据库资源的问题导致的瓶颈。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23135684/viewspace-710459/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle数据库管理员,Oracle数据库系统构架员;2012年7月出版《构建最高可用Oracle数据库系统:Oracle 11gR2 RAC管理、维护与性能优化》一书;Oracle 10g OCM。

注册时间:2010-01-05

  • 博文量
    483
  • 访问量
    5651661