在Oracle数据库的日常管理和故障排查工作中,v$session和v$process是两个高频使用的动态性能视图,前者记录当前数据库的所有会话信息,后者记录对应操作系统进程的相关信息,两者结合可以覆盖大部分会话、进程相关的排查需求。

v$session视图基础说明
v$session是Oracle数据库中用于展示当前所有活跃和非活跃会话信息的动态性能视图,每个连接到数据库的会话都会在该视图中对应一条记录。它包含了会话的用户信息、状态、执行的SQL、等待事件等核心内容。
常用字段说明
- sid:会话的唯一标识符,是会话的核心ID
- serial#:会话的序列号,和sid组合可以唯一确定一个会话
- username:建立会话的数据库用户名
- status:会话状态,常见值有ACTIVE(活跃)、INACTIVE(非活跃)、KILLED(已标记杀死)
- sql_id:当前会话正在执行的SQL的ID
- event:会话当前的等待事件,为空表示没有等待
- paddr:对应v$process视图中addr字段的值,用于关联进程信息
基础查询示例
查询当前所有活跃会话的基本信息:
SELECT sid, serial#, username, status, sql_id, event FROM v$session WHERE status = 'ACTIVE' AND username IS NOT NULL;
v$process视图基础说明
v$process视图用于存储Oracle数据库后台进程以及用户会话对应的操作系统进程的相关信息,每个进程对应一条记录,包含进程的启动时间、内存占用、操作系统进程ID等内容。
常用字段说明
- addr:进程的地址,和v$session的paddr字段关联
- pid:Oracle进程的内部标识符
- spid:操作系统层面的进程ID
- username:启动该进程的操作系统用户名
- program:进程对应的程序名称
基础查询示例
查询所有进程的操作系统ID和程序信息:
SELECT addr, pid, spid, username, program FROM v$process;
v$session与v$process的关联使用
两个视图通过v$session的paddr字段和v$process的addr字段进行关联,关联后可以同时获取会话的数据库层面信息和对应的操作系统进程信息。
关联查询示例
查询活跃会话对应的操作系统进程ID:
SELECT s.sid, s.serial#, s.username AS db_user,
p.spid AS os_pid, p.program AS os_program
FROM v$session s
JOIN v$process p ON s.paddr = p.addr
WHERE s.status = 'ACTIVE'
AND s.username IS NOT NULL;常见使用场景
排查会话阻塞问题
通过v$session的blocking_session字段可以找到阻塞当前会话的会话ID,再关联v$process找到对应的操作系统进程:
SELECT s.sid, s.serial#, s.username, s.blocking_session,
p.spid AS blocking_os_pid
FROM v$session s
JOIN v$process p ON s.paddr = p.addr
WHERE s.blocking_session IS NOT NULL;查询会话对应的完整SQL信息
结合v$sql视图可以查询会话正在执行的SQL完整内容:
SELECT s.sid, s.serial#, s.username,
q.sql_text
FROM v$session s
JOIN v$process p ON s.paddr = p.addr
JOIN v$sql q ON s.sql_id = q.sql_id
WHERE s.status = 'ACTIVE'
AND s.username IS NOT NULL;清理异常会话
当发现异常会话需要清理时,先通过关联查询确认会话和进程信息,再使用alter system kill session命令清理:
-- 先查询异常会话信息 SELECT s.sid, s.serial#, s.username, p.spid FROM v$session s JOIN v$process p ON s.paddr = p.addr WHERE s.status = 'INACTIVE' AND s.username = 'TEST_USER'; -- 清理会话,语法为alter system kill session 'sid,serial#' ALTER SYSTEM KILL SESSION '123,456';