1.批量kill 掉session
SELECT CONCAT('ALTER SYSTEM KILL SESSION ''',CONCAT(CONCAT(CONCAT(SID,','),SERIAL#),''';')) FROM V$SESSION WHERE USERNAME='SCOTT'
结果会生成ALTER SYSTEM KILL SESSION 'SID,SERIAL';这样的语句
2.批量将kill掉的session对应的process查找出来,并在Solaris系统级别上杀掉对应进程
SELECT CONCAT('kill -9 ',SPID) FROM V$PROCESS WHERE V$PROCESS.ADDR IN(
select p.addr from v$process p where pid <> 1
minus
select s.paddr from v$session s)
至于为什么这么做,其实我是参考了这篇文章:http://www.eygle.com/faq/Kill_Session.htm
由于windows是多线程的,因此在windows中,每个session对应的并非操作系统上的进程,怎么办呢?有orakill,呵呵.我后面会提到.