1、V$SESSION表结构


SQL> desc v$session;


名称                                      是否为空? 类型


----------------------------------------- -------- ----------------------------


SADDR                                              RAW(8)


SID                                                NUMBER


SERIAL#                                            NUMBER


AUDSID                                             NUMBER


PADDR                                              RAW(8)


USER#                                              NUMBER


USERNAME                                           VARCHAR2(30)


COMMAND                                            NUMBER


OWNERID                                            NUMBER


TADDR                                              VARCHAR2(16)


LOCKWAIT                                           VARCHAR2(16)


STATUS                                             VARCHAR2(8)


SERVER                                             VARCHAR2(9)


SCHEMA#                                            NUMBER


SCHEMANAME                                         VARCHAR2(30)


OSUSER                                             VARCHAR2(30)


PROCESS                                            VARCHAR2(12)


MACHINE                                            VARCHAR2(64)


TERMINAL                                           VARCHAR2(16)


PROGRAM                                            VARCHAR2(64)


TYPE                                               VARCHAR2(10)


SQL_ADDRESS                                        RAW(8)


SQL_HASH_VALUE                                     NUMBER


SQL_ID                                             VARCHAR2(13)


SQL_CHILD_NUMBER                                   NUMBER


PREV_SQL_ADDR                                      RAW(8)


PREV_HASH_VALUE                                    NUMBER


PREV_SQL_ID                                        VARCHAR2(13)


PREV_CHILD_NUMBER                                  NUMBER


PLSQL_ENTRY_OBJECT_ID                              NUMBER


PLSQL_ENTRY_SUBPROGRAM_ID                          NUMBER


PLSQL_OBJECT_ID                                    NUMBER


PLSQL_SUBPROGRAM_ID                                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(8)


P2TEXT                                             VARCHAR2(64)


P2                                                 NUMBER


P2RAW                                              RAW(8)


P3TEXT                                             VARCHAR2(64)


P3                                                 NUMBER


P3RAW                                              RAW(8)


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)


2、相关SQL




根据lockwait字段可以查询当前正在等待的锁的相关信息:


select * from v$lock where kaddr in (select lockwait from v$session where sid=&sid);


(sql_address,sql_hash_value),(prev_sql_addr,prev_hash_value) 根据这两组字段, 可以查询到当前session正在执行的或最近一次执行的sql语句的详细信息:


select * from v$sqltext where address = &sql_address and hash_value = &sql_hash_value;


根据PID查SQL相关信息


select id,serial# ,username,osuser,machine,program,process,to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') logon from v$session where paddr in ( select addr from v$process where spid in('&pid'));


根据PID查SQL语句


SELECT a.username,a.machine,a.program,a.sid,a.serial#,a.status,c.piece,c.sql_text FROM v$session a,v$process b,v$sqltext c WHERE b.spid='&spid' AND b.addr=a.paddr AND a.sql_address=c.address(+) ORDER BY c.piece;


得到进程的sid号:


select id,serial# ,username,osuser,machine,program,process,to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') logon from v$session where paddr in ( select addr from v$process where spid in('&pid'));


得到session的sqltext语句:


select sql_text from v$sqltext_with_newlines where hash_value in (select SQL_HASH_VALUE from v$session where paddr in (select addr from v$process where spid= '&pid')) order by piece;


根据SID查得SQL


select sql_text


  from v$sqltext a


  where a.hash_value=(select sql_hash_value


                       from v$session b


                      where b.SID='&sid')


order by piece ASC


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html