v$session & v$session_wait

时间:2023-03-08 17:44:22

(1)v$session

v$session视图记录了当前连接到数据库的session信息

Column Description
SADDR session address
SID Session identifier
SERIAL# session序列号,当某个session结束,另一个新开始的session使用了前者的sid,则此数值自加1
AUDSID auditing session ID,具有唯一性
PADDR session对应的操作系统进程地址
USER# Oracle user number
USERNAME Oracle user name
COMMAND 当前session正在执行的sql命令类型,具体编号代表什么可以查看v$sqlcommand
lOCKWAIT 正在等待的会话需要的的锁的地址,如果没有锁,则为空。(oracle:address of the lock the session is waiting for;NULL if none)
STATUS session的状态:
    --ACTIVE:当前session正在执行SQL;
    --INACTIVE:等待操作,即等待执行SQL语句;
    --KILLED:session被标注为KILLED、
    --等等…
SERVER server类型有:
    --DECICATED
    --SHARED
    --PSEUDO  
    --POLLED
    --NONE
SCHEMA schema用户id
SCHEMANAME schema用户名
OSUSER 连接到数据库的操作系统用户名
PROCESS 操作系统进程编号
MACHINE 连接到数据库的机器名称
PORT 连接到数据库的客户端端口
TERMINAL 连接到数据库的终端名称
PROGRAM 客户端执行的客户端程序
TYPE session类型
SQL_ADDRESS 与“SQL_HASH_VALUE”一起去确认当前正在被执行的SQL语句
SQL_HASH_VALUE 与“SQL_ADDRESS”一起去确认当前正在被执行的SQL语句
SQL_ID 当前正在被执行的SQL语句的ID
LOGON_TIME 登录时间
LAST_CALL_ET

如果session状态为active,则该值表示session成为active到现在的时间;
如果session状态为inactive,则该值表示session成为inactive到现在的时间

通过该列可以确定会话的非活动时间,对于清理长时间不活动的会话,非常有用

SEQ# 唯一标识session当前或最后等待的数目(每次等待都递增)
EVENT# event number
EVENT session正在等待的事件

注:COMMAND:表明当前session正在执行的sql命令类型。

SQL> select * from v$sqlcommand;

COMMAND_TYPE COMMAND_NAME
------------ ----------------------------------------------------------------
0
1 CREATE TABLE
2 INSERT
3 SELECT
4 CREATE CLUSTER
5 ALTER CLUSTER
6 UPDATE
7 DELETE
           … …

(2)v$session_wait

v$session_wait记录了当前或最近等待的session信息,其列信息与v$session相差不大,不再介绍。