杀死包含指定SQL片段的Oracle进程
一、Linux窗口A
# 切换登录用户
su - oracle
# 以sa身份登录DB
!sql
-- 查询当前的DB sessionID
select userenv('sid') from dual;
输出:
4054
-- 查询当前DB session的processID
SELECT spid FROM v$session s, v$process p WHERE s.sid=4054 AND s.paddr = p.addr order by 1;
输出:
32583
-- 查询整个本机DB实例中,包含某特殊sql片段的查询的processID,并拼接为kill语句
set pagesize 0
SELECT 'kill -9 '||spid FROM v$session s, v$process p WHERE s.sql_id in (select distinct(sql_id) from v$sql where sql_text like '%select t.mzzdid as id,to_char%') AND s.paddr = p.addr order by 1;
输出:
kill -9 32583 # 由于这个进程是当前访问db的进程,不能杀,所以因该排出
kill -9 15180
kill -9 15704
kill -9 18461
kill -9 18766
二、Linux窗口B
# 另开一个Linux连接,杀掉进程
kill -9 15180
kill -9 15704
kill -9 18461
kill -9 18766
标签:片段,SQL,DB,进程,kill,sql,Oracle
From: https://www.cnblogs.com/JaxYoun/p/17762540.html