在PL/SQL或SQL中使用循环终止oracle会话
我们有这样的疑问:在PL/SQL或SQL中使用循环终止oracle会话,sql,oracle,plsql,oracle10g,oracle11g,Sql,Oracle,Plsql,Oracle10g,Oracle11g,我们有这样的疑问: ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE; 我需要终止所有具有相同SQL ID的会话 我不确定如何将事物连接在一起,但到目前为止,我有以下几点: for rec in (SELECT se.sid,ss.serial# FROM v$session ss, v$sesstat se, v$statname sn WHERE se.statistic# = sn
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
我需要终止所有具有相同SQL ID的会话
我不确定如何将事物连接在一起,但到目前为止,我有以下几点:
for rec in (SELECT se.sid,ss.serial#
FROM v$session ss, v$sesstat se, v$statname sn
WHERE se.statistic# = sn.statistic#
AND name like '%CPU used by this session%'
AND se.sid = ss.sid
AND ss.status = 'ACTIVE'
AND ss.username is not null
AND ss.sql_id ='f7frew3erwe'
ORDER BY value ASC) loop
ALTER SYSTEM KILL SESSION 'rec.sid,rec.serial#' IMMEDIATE; //this is the tricky part!
end loop;
有什么建议吗?问题类似于,但不是针对所有课程 要更改PL/SQL块中的系统,需要使用:
execute immediate 'Alter System Kill Session '''|| rec.Sid
|| ',' || rec.Serial# || ''' IMMEDIATE';
我询问您是否需要使用所有其他系统表。如果您只想杀死一个特定的SQL\u ID
,那么下面的查询就足够了:
SELECT se.sid,ss.serial#
FROM v$session
WHERE status = 'ACTIVE'
AND username is not null
AND sql_id ='f7frew3erwe'
可能的复制品,但不完全相同。最上面的答案应该给你所有你需要完成的信息。从您的代码中,您只需要查询
v$session
以及…似乎很完美:-)谢谢,我将如何处理这个问题?如何回答?让@Ben将他的评论作为答案发布。。。