Oracle10gR2 新视图:V$SESSION变化跟踪

2/9/2008来源:Oracle教程人气:9354


  从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>