杀会话
1.杀会话现场操作
使用SQL生成需要执行的SQL语句(该方法一定要掌握)
SQL>select 'alter system kill session '||''''||sid||','||serial#||',@'||inst_id||''''||';' from gv$session where sql_id='6n7661a767kkz' order by inst_id;
2. 杀会话的原理
2.1 先用管理员账号查看当前有哪些会话在线
SQL>select USERNAME,SID,SERIAL# from v$session where username is not null;
可以看到当前在线的用户有自己以管理员登陆的账户,还有SCOTT账户,另外说一点,如果上面的查询语句中不加username is not null的过滤条件的话,会列出包括Oracle自己的系统
进程会话,这些会话的username都为空,并且杀这些会话会报错,故直接过滤掉这些会话。
2.2. 杀死指定会话
alter system kill session \'SID,SERIAL#\';
alter system kill session '26,31';
杀死一个会话,是通过会话的SID和SERIAL#来精确定位的,例如杀死SCOTT的会话
杀掉会话后,如果被杀的会话一直没有任何动作的话,再查看的时候它还会在,但是其实已经杀死了
再用sys账号查看时