Dat*_*ase 2 sql oracle plsql oracle10g oracle11g
我们有这个查询:
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)
我需要杀死所有具有相同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;
Run Code Online (Sandbox Code Playgroud)
有什么建议?
问题类似于如何杀死连接到我的oracle数据库的所有会话?虽然不适用于所有会议.
您需要使用execute immediate以便在PL/SQL块中更改系统:
execute immediate 'Alter System Kill Session '''|| rec.Sid
|| ',' || rec.Serial# || ''' IMMEDIATE';
Run Code Online (Sandbox Code Playgroud)
我查询您需要使用所有其他系统表.如果要杀死的所有内容都是特定的,那么类似下面的查询就足够了SQL_ID:
SELECT se.sid,ss.serial#
FROM v$session
WHERE status = 'ACTIVE'
AND username is not null
AND sql_id ='f7frew3erwe'
Run Code Online (Sandbox Code Playgroud)