先查出会话ID select sid,serial#,username,status 
from v$session 
where username is not null;然后:
alter system kill session 'sid,serial#' ; 

解决方案 »

  1.   

    例如:
    SQL> select sid,serial#,username,status from v$session 
    where username = 'TEST';       SID    SERIAL# PADDR    USERNAME                       STATUS
    ---------- ---------- -------- ------------------------------ --------
            11        314 542B70E8 TEST                           INACTIVESQL> alter system kill session '11,314';System altered.
      

  2.   

    学习中,果然厉害,不知道,这样kill的会话,能不能保证事务的完整性!
      

  3.   

    利用v$session视图查找相关SID
    select sid,serial#,username,status 
    from v$session 
    where username = '***';杀:
    alter system kill session 'sid,serial#' ;
      

  4.   

    各位大哥,我要一个存储过程下,只要我执行这个过程,则可以杀掉某一用户的所有SESSION
      

  5.   

    不用写存储过程吧.
    直接写bat文件就可以了.
      

  6.   

    如果有多个SESSION你怎么去处理呀,不会还要我手工进行查看,再一个一个对应起来吧,那样就管理比较复杂了
      

  7.   

    KILL后是自动rollback还是commit是看你oracle中设置的事物是哪一项
      

  8.   

    直接用客户端:OBJECT BROWSER里面的客户端进程管理KILL掉就OK了啊,还这么麻烦。
      

  9.   

    建议用pl/sql developer,功能强大,使用方便,
    kill session也是小意思。
      

  10.   

    怎么还找不我要的答案呀,我不是DBA,我是developer,我的要在一个ADO里调用一个存储过程,并执行它就可以实现用户的自动删除,保证对客户的易用呀
      

  11.   

    CREATE PROCEDURE KILL_USER(as_username VARCHAR2)
    AS
        s_sid varchar2(8);
        s_serial varchar2(16);
        s_cs varchar2(40);
    BEGIN
       select sid,serial into s_sid ,s_serial  from v$session 
            where username = as_username ;
       s_cs :=  sid || ',' || serial 
       alter system kill session s_cs  ; 
       
        DROP USER as_username ;END;
      

  12.   

    CREATE PROCEDURE KILL_USER(as_username VARCHAR2)
    AS
        s_sid varchar2(8);
        s_serial varchar2(16);
        s_cs varchar2(40);
    BEGIN
       select sid,serial into s_sid ,s_serial  from v$session 
            where username = as_username ;
       s_cs :=  sid || ',' || serial 
       alter system kill session s_cs  ; 
       
        DROP USER as_username ;END;
      

  13.   

    to  wangybyangxr(王永斌) :
        如果在多个客户端连到这个数据库中,你如何一次性全部删除呀,这样也可以吗?
      

  14.   

    select sid,serial# from v$session 
            where username = '用户名';这条语句在多个客户端连到这个数据库中,会返回多条记录的,但sid,serial#的值是不同的,只是找到所有的sid,serial#值,做个循环一个一个的 alter system kill session 'sid,serial#'; 
    最后:
    DROP USER as_username ;
      

  15.   

    对了,
    alter system kill session 'sid,serial#'; 
    DROP USER as_username ;
    这两个命令不能在存储过程中执行,在你的程序中发这个命令吧。
      

  16.   

    select 'alter system kill session'||sid||','||serial# 
    from v$session 
    where username = '***';
    用spool输出为一个sql脚本,然后调用(没这么做过,楼主测试一下)
      

  17.   

    select 'alter system kill session'||sid||','||serial#改为
    select 'alter system kill session '''||sid||','||serial#||''''
      

  18.   

    unix下 killsession.sh (供参考:用oracle创建用户登录后执行)
    usage: killsession.sh 要kill的用户
    --------------------------------------------------------
    #!/usr/bin/ksh
    if [ $# -ne 1 ]; then
     echo "usage:$0 user"
     exit 1
    fiuser=$1
    sql="select '#'||sid || ',' || serial# sid from v\$session where username=upper(
    '${user}');"sessions=`echo $sql | sqlplus -S "/ as sysdba" | grep "^#"`for x in $sessions
    do
      echo "alter system kill session '${x#\#}';" | sqlplus -S "/ as sysdba"
    done
    ----------------------------------------------------------------------------------