最常用的性能视图——v$session(2)!

来源:互联网 发布:开源客服系统源码 编辑:程序博客网 时间:2024/05/16 00:44

v$session 记录数据库当前会话信息,每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR,LGWR,arcchiver等等。


知道了sid就可以看见客户端的一些信息:

SQL> select SID,USERNAME,MACHINE,MODULE,PROGRAM,OSUSER from v$session where sid = 159;       SID USERNAME   MACHINE    MODULE                    PROGRAM                   OSUSER---------- ---------- ---------- ------------------------- ------------------------- ------------------------------       159 SYS        linux      sqlplus@linux (TNS V1-V3) sqlplus@linux (TNS V1-V3) oracle


从10G开始v$session视图已经包含了v$session_wait视图的内容,v$session_wait冗余了。

SQL> select SID,EVENT#,EVENT from v$session where sid = 159;       SID     EVENT# EVENT---------- ---------- ----------------------------------------------------------------       159        255 SQL*Net message to client


v$session 还可以看见会话阻塞情况:

   1. SQL> select sid,username,machine,module,program,event,status,last_call_et,blocking_session from v$session where sid in(143,145);     2.      3.        SID USERNAME   MACHINE    MODULE     PROGRAM                   EVENT                          STATUS   LAST_CALL_ET BLOCKING_SESSION     4. ---------- ---------- ---------- ---------- ------------------------- ------------------------------ -------- ------------ ----------------     5.        143 U1         linux      SQL*Plus   sqlplus@linux (TNS V1-V3) enq: TX - row lock contention  ACTIVE            298              145     6.        145 U1         linux      SQL*Plus   sqlplus@linux (TNS V1-V3) SQL*Net message from client    INACTIVE          301  
BLOCKING_SESSION     是阻塞会话的会话标识符。可以看见143会话被145会话阻塞了。

145会话 在等待客户端的响应。(客户端提交或者回滚)
143会话 在等待需要获得一个TX锁。(行级锁)
145会话的status为inactive,last_call_et表示此会话空闲了301秒了。

143会话的status为active,last_call_et表示此会话的sql执行了298秒了。(因为没有提交或者回滚)


知道了sid,就可以知道当前正在执行的sql语句:

SQL> select t.piece,t.sql_text from v$session s,v$sqltext t where s.sql_id = t.sql_id and s.sid = 159 order by t.piece;     PIECE SQL_TEXT---------- ----------------------------------------------------------------         0 select t.piece,t.sql_text from v$session s,v$sqltext t where s.s         1 ql_id = t.sql_id and s.sid = 159 order by t.pieceSQL> select t.piece,t.sql_text from v$session s,v$sqltext t where s.SQL_ADDRESS = t.ADDRESS and s.sid = 159 order by t.piece;     PIECE SQL_TEXT---------- ----------------------------------------------------------------         0 select t.piece,t.sql_text from v$session s,v$sqltext t where s.S         1 QL_ADDRESS = t.ADDRESS and s.sid = 159 order by t.pieceSQL> select t.piece,t.sql_text from v$session s,v$sqltext t where s.SQL_HASH_VALUE = t.HASH_VALUE and s.sid = 159 order by t.piece;     PIECE SQL_TEXT---------- ----------------------------------------------------------------         0 select t.piece,t.sql_text from v$session s,v$sqltext t where s.S         1 QL_HASH_VALUE = t.HASH_VALUE and s.sid = 159 order by t.piece
可以看见有三种方式都可以关联过去!

原创粉丝点击