从Oracleg开始伴随ASH功能的引入Oracle对V$SESSION视图进行了彻底改造
关于V$SESSION在几个版本中结构变化可以参考:Oracle数据字典说明
从OraclegR开始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中得到了
在OraclegR中Oracle又为V$SESSION增加了额外几个字段
SERVICE_NAME
SQL_TRACE
SQL_TRACE_WAITS
SQL_TRACE_BINDS
这几个字段又显示当前session连接方式及是否启用sql_trace等
我们看到Oracle在小处动的手脚是非常多的而无疑这些小手脚会给我们的管理维护带来极大的方便
以下是OraclegR种v$session和v$session_wait两个view的结构供参考:
SQL> desc v$session
NameNull?Type
SADDRRAW()
SIDNUMBER
SERIAL#NUMBER
AUDSID NUMBER
PADDRRAW()
USER#NUMBER
USERNAME VARCHAR()
COMMANDNUMBER
OWNERIDNUMBER
TADDRVARCHAR()
LOCKWAIT VARCHAR()
STATUS VARCHAR()
SERVER VARCHAR()
SCHEMA#NUMBER
SCHEMANAME VARCHAR()
OSUSER VARCHAR()
PROCESSVARCHAR()
MACHINEVARCHAR()
TERMINAL VARCHAR()
PROGRAMVARCHAR()
TYPE VARCHAR()
SQL_ADDRESSRAW()
SQL_HASH_VALUE NUMBER
SQL_ID VARCHAR()
SQL_CHILD_NUMBER NUMBER
PREV_SQL_ADDRRAW()
PREV_HASH_VALUENUMBER
PREV_SQL_IDVARCHAR()
PREV_CHILD_NUMBERNUMBER
MODULE VARCHAR()
MODULE_HASHNUMBER
ACTION VARCHAR()
ACTION_HASHNUMBER
CLIENT_INFOVARCHAR()
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 VARCHAR()
FAILOVER_TYPEVARCHAR()
FAILOVER_METHODVARCHAR()
FAILED_OVERVARCHAR()
RESOURCE_CONSUMER_GROUPVARCHAR()
PDML_STATUSVARCHAR()
PDDL_STATUSVARCHAR()
PQ_STATUSVARCHAR()
CURRENT_QUEUE_DURATION NUMBER
CLIENT_IDENTIFIERVARCHAR()
BLOCKING_SESSION_STATUSVARCHAR()
BLOCKING_INSTANCENUMBER
BLOCKING_SESSION NUMBER
SEQ# NUMBER
EVENT# NUMBER
EVENTVARCHAR()
PTEXT VARCHAR()
P NUMBER
PRAWRAW()
PTEXT VARCHAR()
P NUMBER
PRAWRAW()
PTEXT VARCHAR()
P NUMBER
PRAWRAW()
WAIT_CLASS_IDNUMBER
WAIT_CLASS#NUMBER
WAIT_CLASS VARCHAR()
WAIT_TIMENUMBER
SECONDS_IN_WAITNUMBER
STATEVARCHAR()
SERVICE_NAME VARCHAR()
SQL_TRACEVARCHAR()
SQL_TRACE_WAITSVARCHAR()
SQL_TRACE_BINDSVARCHAR()
SQL> desc v$session_wait
NameNull?Type
SIDNUMBER
SEQ# NUMBER
EVENTVARCHAR()
PTEXT VARCHAR()
P NUMBER
PRAWRAW()
PTEXT VARCHAR()
P NUMBER
PRAWRAW()
PTEXT VARCHAR()
P NUMBER
PRAWRAW()
WAIT_CLASS_IDNUMBER
WAIT_CLASS#NUMBER
WAIT_CLASS VARCHAR()
WAIT_TIMENUMBER
SECONDS_IN_WAITNUMBER
STATEVARCHAR()
SQL>