V$SESSION 和 V$SESSION_WAIT

由于 V$SESSION 记录当前连接数据库的 Session 信息,而 V$SESSION_WAIT 视图记录这些 Session 的等待,很多时候我们要联合这两个视图进行查询以获取更多的诊断信息。从Oracle 10g 开始,为了方便用户, Oracle 开始将这两个视图进行整合。
在 Oracle 10gR1 中, Oracle 在 V$SESSION 中增加关于等待事件的字段,实际上也就是把原来 V$SESSION_WAIT 视图中的所有字段全部整合到了 V$SESSION 视图中( 如果进一步研究你会发现,实际上 V$SESSION 的底层查询语句及 X$表已经有了变化)。这一变化使得查询得以简化,但是也使得 V$SESSION_WAIT 开始变得多余。

此外 V$SESSION 中还增加了 BLOCKING_SESSION 等字段,以前需要通过 dba_waiters等视图才能获得的信息,现在也可以直接从 V$SESSION 中得到了。

在 Oracle 10gR2 中, Oracle 又为 V$SESSION 增加了额外几个字段: SERVICE_NAME、SQL_TRACE、 SQL_TRACE_WAITS、 SQL_TRACE_BINDS。 这几个字段显示当前 Session 连接方式及是否启用了 SQL_TRACE 跟踪等。
在 Oracle 11gR1 中, V$SESSION 的内容进一步增强,增加了很多新的字段,比如
SQL_EXEC_START、 SQL_EXEC_ID 用于记录 SQL 执行的开始时间及执行 ID(相应的还有PREV_EXEC_START、 PREV_EXEC_ID 等字段)。

Oracle V$SESSION 和 V$SESSION_WAIT_字段

在新的数据库版本中, Oracle 在小处动的手脚也是非常多的,而无疑这些小手脚会给用户的管理维护带来极大的方便。 以下是 Oracle 9iR2 中 V$SESSION_WAIT 视图的结构:

Oracle V$SESSION 和 V$SESSION_WAIT_字段_02

其中, event 代表等待事件的名称, p<n>text 用以描述具体的参数, p<n>分别代表以十进制定义的参数( parameter)参数值, p<n>Raw 是以十六进制表示的参数值。对于不同 event,具体参数表示的含义也不相同,可以通过 v$event_name 视图来查看这些参数的定义。