下面我将会对orac盟敢势袂le用户会话的相关查询方法做下总结,希望可以对读者有所帮助~~
1.查询用户会话:通过v$session视图查询所有用户的会话信息。
select sid,logon_time,username,machine from v$session;
2.通过用户名和操作系统主机的分组查询用户会话信息
select username,machine,count(*) from v$session group by username,machine
3.通过会话序列号和会话标识符删除用户会话
ALTER SYSTEM KILL SESSION 'v_sid,v_serial#' immediate;
4.通过表gv$locked_object,dba_objects和gv$session查询哪些表被锁死,因为没有别锁定的,所以查询无结果。
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;
5.通过表v$locked_object,v$session查询被锁住会话信息,根据login_time排序
select b.username,b.sid,b.serial#,logon_time
from v$locked_object a,v$session b
where a.session_id =b.sid order by b.logon_time;
6.通过表v$locked_object,dba_objects查询被锁住会话信息
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id;
第4,5,6因为没有锁住的会话,所以查询暂无结果。
附录:视图v$session字段含义,便于理解查询的目的和结果。
SID 会话标识符
SADDR 会话地址
SERIAL# 会话序列号
USER# 数据库用户标识符
USERNAME 数据库用户名称
COMMAND 正在处理的命令
STATUS 会话当前状态
SCHEMA# 方案用户的标识符
SCHEMANAME方案用户的名称
OSUSER 操作系统名称
PROCESS 操作系统客户机进程
MACHINE 操作系统主机
TERMINAL 操作系统终端
PROGRAM 操作系统程序名称
TYPE 会话类型
ACTION 正在执行的操作名称
ACTION_HASH对应于ACTION的HASH值
LOGON_TIME 登录时间