先强行杀掉连接的会话.DECLARE
  TYPE V_CURSOR IS REF CURSOR;
  MYCUR V_CURSOR;
  V_DDL VARCHAR2(2000);
BEGIN
  OPEN MYCUR FOR
    SELECT 'alter system kill session ''' || SID || ',' || SERIAL# || ''';'
      FROM V$SESSION
     WHERE USERNAME IS NOT NULL
       AND STATUS = 'INACTIVE'
       AND LAST_CALL_ET / 60 / 60 >= 6;
  LOOP
    FETCH MYCUR
      INTO V_DDL;
    EXIT WHEN MYCUR%NOTFOUND;
    EXECUTE IMMEDIATE V_DDL;
  END LOOP;
  CLOSE MYCUR;
END;

解决方案 »

  1.   

    而且杀掉之后马上又有新的session了.该用什么办法呢?
      

  2.   

    必须想要中止用户的会话
    select sid,serial# from v$session where username='user_name'
    alter system kill session 'sid,serial#'
    drop user user_name
      

  3.   

    如果用Toad什么的话,可以跟踪session,将你要杀的session直接杀了就可以.
    否则只有想楼上那样了.
      

  4.   

    大家都忽略了一个问题,资料库用户的session杀完了又有新的生成,所以这不行的.
    不过,我已找到解决的方法了,先不说,看大家能否想到一块去.
      

  5.   

    先锁定该用户,不让他有再连接的机会,再kill掉已存在的会话,最后想
    怎么着,就随意啦,哈哈!
    操作如下:
    SQL>alter user username account lock;
    SQL>alter system kill 'sid,serial#'