Oracle V$SESSION
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;