欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

session

程序员文章站 2024-03-20 18:12:22
...

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,如果是主机上一个调度程序调起的,则显示调度程序名称,如:[email protected]
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有登录、注册的意思)
…… ……