2010-09-09 131 views
3

我要編寫一個查詢,應做到以下任務編寫查詢殺死用戶會話

select SID from v$session where username = 'some user' 

,如果有通過特定的用戶名中的SID然後殺死SID使用下面的命令:

alter system kill session 'sid'; 

我所目前wrtten如下:

alter system kill session 
    where sid = select sid from v$session where username = 'some user' 

查詢失敗時,有我S按該用戶名

查詢必須是這樣的,沒有花括號的使用沒有特別的SID「{」或「}」

和查詢應該只是一個單一的線路查詢,沒有多重線查詢。

DB是ORACLE10g

有什麼建議?

+0

爲什麼單線和無花括號? – Rup 2010-09-09 16:19:23

+0

聽起來像來自任意限制的作業。 ALTER SESSION無論如何都沒有WHERE子句,所以你目前編寫的東西不會有用。 – 2010-09-09 16:46:25

回答

6

我最常做的是:

select 'alter system kill session '''||sid||','||serial#||''';' 
from v$session 
where username = 'someuser'; 

這將返回類似的結果:

alter system kill session '11,222'; 
alter system kill session '22,444'; 

我然後只複製,我想執行的結果粘貼。

沒有花括號(怎麼可能有?),但我不確定它是否符合你的單行規則。

+0

也許這可以與EXECUTE IMMEDIATE以某種方式結合? – 2010-09-10 05:49:21

+0

很好的回答! – geoand 2014-10-21 14:10:45