Oracle V$SESSION
SADDR | session address |
SID | session identifier 常用于链接其他列 |
SERIAL# | SID有可能会重复,当两个session的SID重复时,SERIAL#用来区别session(说白了某个session是由sid和serial#这两个值确定的) |
AUDSID | audit session id.可以通过audsid查询当前session的sid.select sid from v$session where audsid=userenv('sessionid'); |
PADDR | process address,关联v$process的addr字段,通过这个可以查询到进程对应的session |
USER# | 同于dba_users中的user_id,Oracle内部进程user#为0. |
USERNAME | session's username.等于dba_users中的username.Oracle内部进程的username为空. |
COMMAND | session正在执行的sql id,1代表create table,3代表select. |
TADDR | 当前的transaction address.可以用来关联v$transaction中的addr字段. |
LOCKWAIT | 可以通过这个字段查询出当前正在等待的锁的相关信息.sid + lockwait与v$loc中的sid + kaddr相对应. |
STATUS | 用来判断session状态.Active:正执行SQL语句.inactive:等待操作.killed:被标注为杀死. |
SERVER | 服务类型. |
SCHEMA# | schema user id.Oracle内部进程的schema#为0. |
SCHEMANAME | schema username.Oracle内部进程的为sys. |
OSUSER | 客户端操作系统用户名. |
PROCESS | 客户端process id. |
MACHINE | 客户端machine name. |
TERMINAL | 客户端执行的terminal name. |
PROGRAM | 客户端应用程序.比如ORACLE.EXE或sqlplus.exe |
TYPE | session类型. |
SQL_ADDRESS, SQL_HASH_VALUE, SQL_ID,SQL_CHILD_NUMBER |
session正在执行的sql状态,和v$sql中的address,hash_value,sql_id,child_number对应. |
PREV_SQL_ADDR, PREV_HASH_VALUE, PREV_SQL_ID, PREV_CHILD_NUMBER |
上一次执行的sql状态. |
MODULE, MODULE_HASH, ACTION, ACTION_HASH, CLIENT_INFO |
应用通过DBMS_APPLICATION_INFO设置的一些信息. |
FIXED_TABLE_SEQUENCE | 当session完成一个user call后就会增加的一个数值,也就是说,如果session挂起,它就不会增加.因此可以根据这个字段来监控某个时间点以来的session性能情况.例如,一个小时前某个session的此字段数值为10000,而现在是20000,则表明一个小时内其user call较频繁,可以重点关注此session的performance statistics. |
ROW_WAIT_OBJ# | 被锁定行所在table的object_id.和dba_object中的object_id关联可以得到被锁定的table name. |
ROW_WAIT_FILE# | 被锁定行所在的datafile id.和v$datafile中的file#关联可以得到datafile name. |
ROW_WAIT_BLOCK# | 同上,对应块. |
ROW_WAIT_ROW# | session当前正在等待的被锁定的行. |
LOGON_TIME | session logon time. |
查询锁住对象的会话信息:
SELECT OBJECT_NAME, MACHINE, S.SID, S.SERIAL# FROM GV$LOCKED_OBJECT L, DBA_OBJECTS O, GV$SESSION S WHERE L.OBJECT_ID = O.OBJECT_ID AND L.SESSION_ID = S.SID;
销毁会话:
ALTER SYSTEM KILL SESSION 'SID, #SERIAL';
查看当前会话所执行的语句以及会话相关信息:
SELECT A.SID, A.SERIAL#, A.USERNAME, A.TERMINAL, A.PROGRAM, S.SQL_TEXT FROM V$SESSION A, V$SQLAREA S WHERE A.SQL_ADDRESS = S.ADDRESS(+) AND A.SQL_HASH_VALUE = S.HASH_VALUE(+) ORDER BY A.USERNAME, A.SID;