杀会话

 

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账号查看时

 

posted @ 2020-11-24 23:50  Miracle2019  阅读(121)  评论(0编辑  收藏  举报