关闭

plsql下批量KILL进程

468人阅读 评论(0) 收藏 举报
分类:
declare 
  v_minutes NUMBER:=1000;
  v_Str VARCHAR2(100);
  CURSOR C_users(v_minutes number) IS
   SELECT s.username, 
         s.status, s.machine, 'alter system kill session ' 
         ||''''||s.sid||','||s.serial# ||'''' operates
   FROM v$session s, v$process p
   WHERE TYPE = 'USER'
   AND p.addr = s.paddr
   AND status != 'KILLED'
   and exists
       (select 1
        from dba_ddl_locks a,
             v$session b
        where a.session_id=b.SID
        and b.USERNAME NOT IN ('IFSAPP','AUTOS','THK')  --
        and b.sid = s.sid)
   ORDER BY last_call_et desc;
BEGIN
   FOR T_users IN C_users(v_minutes) LOOP
     v_Str := T_USERS.OPERATES;
     BEGIN
     EXECUTE IMMEDIATE v_str;
     EXCEPTION 
      WHEN OTHERS THEN
       NULL;
     END;
   END LOOP;
END;
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:128111次
    • 积分:1858
    • 等级:
    • 排名:千里之外
    • 原创:51篇
    • 转载:14篇
    • 译文:1篇
    • 评论:13条
    文章分类
    最新评论