从Oracle10g开始,伴随ASH功能的引入,Oracle对V$SESSION视图进行了彻底改造。
关于V$SESSION在几个版本中结构变化可以参考:Oracle数据字典说明
从Oracle10gR1开始,Oracle在V$SESSION中增加关于等待事件的字段,实际上也就是把原来V$SESSION_WAIT视图中的所有字段全部整合到了V$SESSION视图中,开始的时候我还以为ASH是依赖联合查询来获取信息的,仔细一看才发现现在V$SESSION已经发生了变化。(如果进一步研究你会发现,实际上V$SESSION的底层查询语句及X$表已经有了变化)
这一变化使得我们的查询得以简化,但是也使得V$SESSION_WAIT开始变得多余。
此外V$SESSION中还增加了BLOCKING_SESSION等字段,以前我们需要通过dba_waiters等视图才能获得的信息,现在也可以直接从V$SESSION中得到了。
在Oracle10gR2中,Oracle又为V$SESSION增加了额外几个字段:
SERVICE_NAME
SQL_TRACE
SQL_TRACE_WAITS
SQL_TRACE_BINDS
这几个字段又显示当前session连接方式及是否启用sql_trace等
我们看到Oracle在小处动的手脚是非常多的,而无疑这些小手脚会给我们的管理维护带来极大的方便。
以下是Oracle10gR2种v$session和v$session_wait两个view的结构供参考:
SQL desc v$session
Name
Null?
Type
----------------------------------------- -------- ----------------------------
SADDR
RAW(4)
SID
NUMBER
SERIAL#
NUMBER
AUDSID
NUMBER
PADDR
RAW(4)
USER#
NUMBER
USERNAME
VARCHAR2(30)
COMMAND
NUMBER
OWNERID
NUMBER
TADDR
VARCHAR2(8)
LOCKWAIT
VARCHAR2(8)
STATUS
VARCHAR2(8)
SERVER
VARCHAR2(9)
SCHEMA#
NUMBER
SCHEMANAME
VARCHAR2(30)
OSUSER
VARCHAR2(30)
PROCESS
VARCHAR2(12)
MACHINE
VARCHAR2(64)
TERMINAL
VARCHAR2(30)
PROGRAM
VARCHAR2(48)
TYPE
VARCHAR2(10)
SQL_ADDRESS
RAW(4)
SQL_HASH_VALUE
NUMBER
SQL_ID
VARCHAR2(13)
SQL_CHILD_NUMBER
NUMBER
PREV_SQL_ADDR
RAW(4)
PREV_HASH_VALUE
NUMBER
PREV_SQL_ID
VARCHAR2(13)
PREV_CHILD_NUMBER
NUMBER
MODULE
VARCHAR2(48)
MODULE_HASH
NUMBER
ACTION
VARCHAR2(32)
ACTION_HASH
NUMBER
CLIENT_INFO
VARCHAR2(64)
FIXED_TABLE_SEQUENCE
NUMBER
ROW_WAIT_OBJ#
NUMBER
ROW_WAIT_FILE#
NUMBER
ROW_WAIT_BLOCK#
NUMBER
ROW_WAIT_ROW#
NUMBER
LOGON_TIME
DATE
LAST_CALL_ET
NUMBER
PDML_ENABLED
VARCHAR2(3)
FAILOVER_TYPE
VARCHAR2(13)
FAILOVER_METHOD
VARCHAR2(10)
FAILED_OVER
VARCHAR2(3)
RESOURCE_CONSUMER_GROUP
VARCHAR2(32)
PDML_STATUS
VARCHAR2(8)
PDDL_STATUS
VARCHAR2(8)
PQ_STATUS
VARCHAR2(8)
CURRENT_QUEUE_DURATION
NUMBER
CLIENT_IDENTIFIER
VARCHAR2(64)
BLOCKING_SESSION_STATUS
VARCHAR2(11)
BLOCKING_INSTANCE
NUMBER
BLOCKING_SESSION
NUMBER
SEQ#
NUMBER
EVENT#
NUMBER
EVENT
VARCHAR2(64)
P1TEXT
VARCHAR2(64)
P1
NUMBER
P1RAW
RAW(4)
P2TEXT
VARCHAR2(64)
P2
NUMBER
P2RAW
RAW(4)
P3TEXT
VARCHAR2(64)
P3
NUMBER
P3RAW
RAW(4)
WAIT_CLASS_ID
NUMBER
WAIT_CLASS#
NUMBER
WAIT_CLASS
VARCHAR2(64)
WAIT_TIME
NUMBER
SECONDS_IN_WAIT
NUMBER
STATE
VARCHAR2(19)
SERVICE_NAME
VARCHAR2(64)
SQL_TRACE
VARCHAR2(8)
SQL_TRACE_WAITS
VARCHAR2(5)
SQL_TRACE_BINDS
VARCHAR2(5)
SQL desc v$session_wait
Name
Null?
Type
----------------------------------------- -------- ----------------------------
SID
NUMBER
SEQ#
NUMBER
EVENT
VARCHAR2(64)
P1TEXT
VARCHAR2(64)
P1
NUMBER
P1RAW
RAW(4)
P2TEXT
VARCHAR2(64)
P2
NUMBER
P2RAW
RAW(4)
P3TEXT
VARCHAR2(64)
P3
NUMBER
P3RAW
RAW(4)
WAIT_CLASS_ID
NUMBER
WAIT_CLASS#
NUMBER
WAIT_CLASS
VARCHAR2(64)
WAIT_TIME
NUMBER
SECONDS_IN_WAIT
NUMBER
STATE
VARCHAR2(19)
SQL