ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 学习动态性能表(五)-v$session

学习动态性能表(五)-v$session

原创 Linux操作系统 作者:season0891 时间:2010-07-22 10:17:45 0 删除 编辑

在本视图中,每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR,LGWR,arcchiver等等。

V$SESSION 中的常用列

V$SESSION 是基础信息视图,用于找寻用户SID或SADDR。不过,它也有一些列会动态的变化,可用于检查用户。如例:

SQL_HASH_VALUE ,SQL_ADDRESS:这两列用于鉴别默认被session执行的SQL语句。如果为null或0,那就说明这个session没有执行任何SQL语 句。PREV_HASH_VALUE和PREV_ADDRESS两列用来鉴别被session执行的上一条语句。

    注意:当使用SQL*Plus进行选择时,确认你重定义的列宽不小于11以便看到完整的数值。

STATUS :这列用来判断session状态是:

  • Achtive :正执行SQL语句(waiting for/using a resource)
  • Inactive :等待操作(即等待需要执行的SQL语句)
  • Killed :被标注为删除

下列各列提供session的信息,可被用于当一个或多个combination未知时找到session 。

Session 信息

  • SID :SESSION标识,常用于连接其它列
  • SERIAL# :如果某个SID又被其它的session使用的话则此数值自增加(当一个 SESSION 结束,另一个SESSION开始并使用了同一个SID)。
  • AUDSID :审查session ID唯一性,确认它通常也用于当寻找并行查询模式
  • USERNAME :当前session在oracle中的用户名。

Client 信息

  数据库session被一个运行在数据库服务器上或从 中间服务器甚至 桌面通过SQL*Net连接到数据库的客户端进程启动,下列各列提供这个客户端的信息

  • OSUSER :客户端操作系统用户名
  • MACHINE :客户端执行的机器
  • TERMINAL :客户端运行的终端
  • PROCESS :客户端进程的ID
  • PROGRAM :客户端执行的客户端程序

  要显示用户所连接PC 的 TERMINAL 、 OSUSER ,需在该PC的ORACLE.INI或Windows中设置关键字TERMINAL,USERNAME。

Application 信息

调用DBMS_APPLICATION_INFO包以设置一些信息区分用户。这将显示下列各列。

  • CLIENT_INFO :DBMS_APPLICATION_INFO中设置
  • ACTION :DBMS_APPLICATION_INFO中设置
  • MODULE :DBMS_APPLICATION_INFO中设置

下列V$SESSION列同样可能会被用到:

  • ROW_WAIT_OBJ#
  • ROW_WAIT_FILE#
  • ROW_WAIT_BLOCK#
  • ROW_WAIT_ROW#

V$SESSION 中的连接列

Column  View Joined Column(s) 

SID V$SESSION_WAIT, , V$SESSTAT, , V$LOCK , V$SESSION_EVENT,V$OPEN_CURSOR SID

(SQL_HASH_VALUE, SQL_ADDRESS) V$SQLTEXT, V$SQLAREA, V$SQL (HASH_VALUE, ADDRESS)

(PREV_HASH_VALUE, PREV_SQL_ADDRESS) V$SQLTEXT, V$SQLAREA, V$SQL (HASH_VALUE, ADDRESS)

TADDR V$TRANSACTION ADDR

PADDR V$PROCESS A DDR

示例:

    1. 查找你的session信息

    SELECT  SID, OSUSER, USERNAME, MACHINE, PROCESS

       FROM  V$SESSION  WHERE  audsid = userenv( ¨SESSIONID¨ );

    2. 当machine已知的情况下查找session

    SELECT  SID, OSUSER, USERNAME, MACHINE, TERMINAL

       FROM  V$SESSION

      WHERE  terminal =  ¨pts/tl¨   AND  machine =  ¨rgmdbs1¨ ;

    3. 查找当前被某个指定session正在运行的sql语句。假设sessionID为100

    select  b.sql_text 

       from  v$session a,v$sqlarea b 

       where  a.sql_hash_value=b. hash_value   and  a.sid= 1 00

    寻找指定session执行的SQL语句是一个常见的需求,如果session是瓶颈的主要原因,那根据其当前在执行的语句可以查看session在做些什么


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

上一篇: 创建表空间
请登录后发表评论 登录
全部评论

注册时间:2008-06-10

  • 博文量
    790
  • 访问量
    2098099