杀死包含指定SQL片段的Oracle进程

杀死包含指定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
posted @ 2023-10-13 16:47  JaxYoun  阅读(68)  评论(0编辑  收藏  举报