SQL_查询ORACLE活动会话,并杀掉oracle会话

-- 查所有活跃会话(按CPU/执行时间排序)
SELECT 
    s.sid,
    s.serial#,
    p.spid,
    s.username,
    s.machine,
    s.program,
    s.event AS 等待事件,
    sql.sql_text
FROM 
    v$session s
JOIN 
    v$process p ON s.paddr = p.addr
LEFT JOIN 
    v$sql sql ON s.sql_id = sql.sql_id
WHERE 
    s.status = 'ACTIVE'
    AND s.username IS NOT NULL -- 排除后台进程
ORDER BY 
    s.last_call_et DESC
找到目标会话的SIDSERIAL#后,执行以下命令终止会话(替换<sid>和 <serial#> 为实际值):
 
-- 终止会话(普通模式,允许事务回滚)
ALTER SYSTEM KILL SESSION '<sid>, <serial#>';

-- 强制终止(若普通模式卡住,加IMMEDIATE,立即断开)
ALTER SYSTEM KILL SESSION '<sid>, <serial#>' IMMEDIATE;

说明:

  • ALTER SYSTEM KILL SESSION 只是标记会话为终止状态,Oracle 会等待会话完成事务回滚后释放资源;
  • IMMEDIATE会立即断开会话,不等待,适用于会话无响应的场景
posted @ 2025-12-04 17:56  凉了记忆  阅读(21)  评论(0)    收藏  举报