session

2017-06-27  本文已影响0人  是阿离

oracle中v$session说明

现象

想要查询当前oracle数据库有多少连接数,以及这些连接都在干啥

讲知识

v$session中记录了当前与数据库建立连接的session信息,包括建立者信息、SQL语句、运行状态等

SELECT * FROM v$session;
各字段含义
V$session各字段 含义
SADDR session address
SID session identifier,SID会存在重用
SERIAL# 当SID重用时,该列会增加,SID+SERIAL#能保证不重复
AUDSID audit session id。可以通过audsid查询当前运行session的sid。<code>SELECT SID FROM v$session WHERE audsid = USERENV('sessionid')</code>
PADDR process address,关联v$process的addr字段,可以通过这个字段查处当前session对应操作系统的那个进程的id
USER# session's user id;oracle内部进程USER#w为0,其他可关联all_users的user_id可以查出username。<code>SELECT * FROM all_users WHERE user_id = 'USER#的值';</code>
USERNAME session's username;oracle内部进程USERNAME为空
COMMAND SQL语句的类型,1为create,2为insert,3为select,6为update,0……还不知道
OWNERID NULL
TADDR transaction address,可用来关联v$transaction的addr字段
LOCKWAIT 当前正在等待的锁的相关信息,可与v$lock关联
STATUS 当前session状态,ACTIVE:正在执行SQL语句;INACTIVE:等待操作;KILLED:被标注为杀死
SERVER DEDICATED:专用
SCHEMA# Oracle内部进程的schema#为0
SCHEMANAME Oracle内部进程的schemaname为sys
OSUSER 客户端操作系统用户名,用PL/SQL登录的,则显示登录用户名
PROCESS 客户端process id
MACHINE 客户端主机名,例如WORKGROUP\FRANCIS-PC
PORT 端口
TERMINAL 客户端控制台名称,例如FRANCIS-PC
PROGRAM 客户端执行的应用程序,用PL/SQL则为plsqldev.exe,如果是主机上一个调度程序调起的,则显示调度程序名称,如:Getbilltag@machineName
TYPE session type (background or user)
SQL_ADDRESS、SQL_HASH_VALUE、SQL_ID、SQL_CHILD_NUMBER 正在执行的SQL状态,与v$sql中的address, hash_value, sql_id, child_number相对应
PREV_SQL_ADDR、PREV_HASH_VALUE、PREV_SQL_ID、PREV_CHILD_NUMBER 上次执行的SQL状态
PLSQL_ENTRY_OBJECT_ID NULL
PLSQL_ENTRY_SUBPROGRAM_ID NULL
PLSQL_OBJECT_ID NULL
PLSQL_SUBPROGRAM_ID NULL
MODULE、MODULE_HASH、ACTION、ACTION_HASH、CLIENT_INFO 应用通过DBMS_APPLICATION_INFO设置的一些信息,其中ACTION会显示当前语句执行窗口信息
FIXED_TABLE_SEQUENCE 当session完成一个user call后就会增加的一个数值,也就是说,如果session inactive,它就不会增加。因此可以根据此字段的值变化来监控某个时间点以来的session的性能情况。例如,一个小时以前,某个session的FIXED_TABLE_SEQUENCE是10000,而现在是20000,则表明一个小时内其user call比较频繁,可以重点关注此session的performance statistics
ROW_WAIT_OBJ# 被锁定行所在表的object_id,通过与dba_objects关联可以得到表名OBJECT_NAME,<code>SELECT * FROM dba_objects t WHERE t.object_id = ${ROW_WAIT_OBJ#};</code>(可以用来查看当前用户正在对哪些表进行操作)
ROW_WAIT_FILE# 被锁定行所在的datafile id。和v$datafile中的file#关联可以得到datafile name
ROW_WAIT_BLOCK# 被锁定行所在的block
ROW_WAIT_ROW# session当前正在等待的被锁定的行
LOGON_TIME session logon time(logon有登录、注册的意思)
…… ……
上一篇下一篇

猜你喜欢

热点阅读