--***************************

-- Oracle kill session

--***************************

 

 

  kill session DBA到的事情之一。如果kill 掉了不kill session具有破坏性,因此可能的避免这样错误发生。同应当注意,

如果kill sessionOracle 后台程,容易库实例宕机。

  通常情下,不需要操作系统级别杀Oracle会话进程,但是如此,下面的描述中出了Oracle级别杀会话以及操作系统级别杀程。

 

 

一、得需要kill session的信息(使用V$SESSION GV$SESSION视图)

 

  SET LINESIZE 180

  COLUMN spid FORMAT A10

  COLUMN username FORMAT A10

  COLUMN program FORMAT A40

 

  SELECT s.inst_id,

         s.sid,

         s.serial#,

         p.spid,

         s.username,

         s.program,

         s.paddr,

         s.STATUS

  FROM   gv$session s

         JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id

  WHERE  s.type != 'BACKGROUND';

 

     INST_ID        SID    SERIAL# SPID       USERNAME   PROGRAM                                       PADDR    STATUS

  ---------- ---------- ---------- ---------- ---------- --------------------------------------------- -------- --------

           1        146         23 27573      TEST       sqlplus@oracle10g (TNS V1-V3)                 4C621950 INACTIVE

           1        160         17 27610      SYS        sqlplus@oracle10g (TNS V1-V3)                 4C624174 ACTIVE

           1        144         42 27641      SCOTT      sqlplus@oracle10g (TNS V1-V3)                 4C624730 INACTIVE

        

二、使用ALTER SYSTEM KILL SESSION 命令实现

  法:

      SQL> ALTER SYSTEM KILL SESSION 'sid,serial#';

      SQL> ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

    

    RAC境下的kill session ,需要搞清楚需要kill session 位于哪个节点,可以查询GV$SESSION视图获得。

    kill session 仅仅将会话杀掉。在有些候,由于大的事或需要较长SQL将导致需要killsession不能立即掉。这种

    况将收到 "marked for kill"提示(如下),一旦会话当前事或操作完成,该会话被立即掉。

   

    alter system kill session '4730,39171'

    *

    ERROR at line 1:

    ORA-00031: session marked for kill

 

 

  在下面的操作中将杀会话146144

    sys@AUSTIN> alter system kill session '146,23';

   

    System altered.

   

    sys@AUSTIN> alter system kill session '144,42';

   

    System altered.

   

    sys@AUSTIN> select inst_id,saddr,sid,serial#,paddr,username,status,program from gv$session where username is not null;

   

       INST_ID SADDR           SID    SERIAL# PADDR    USERNAME   STATUS   PROGRAM

    ---------- -------- ---------- ---------- -------- ---------- -------- ---------------------------------------------

             1 4C70BF04        144         42 4C6545A0 SCOTT      KILLED   sqlplus@oracle10g (TNS V1-V3)

             1 4C70E6B4        146         23 4C6545A0 TEST       KILLED   sqlplus@oracle10g (TNS V1-V3)

             1 4C71FC84        160         17 4C624174 SYS        ACTIVE   sqlplus@oracle10g (TNS V1-V3)

                 

     注意:在查询中可以看到被掉的会话PADDR地址生了化,查询结果中的色字体。如果多sessionkill 掉,sessionPADDR

     被改相同的程地址

 

  下面的找回被kill 掉的ADDR先前的地址

    SELECT s.username,s.status,

    x.ADDR,x.KSLLAPSC,x.KSLLAPSN,x.KSLLASPO,x.KSLLID1R,x.KSLLRTYP,

    decode(bitand (x.ksuprflg,2),0,null,1)

    FROM x$ksupr x,v$session s

    WHERE s.paddr(+)=x.addr

    and bitand(ksspaflg,1)!=0;      

   

    USERNAME   STATUS   ADDR       KSLLAPSC   KSLLAPSN KSLLASPO       KSLLID1R KS D

    ---------- -------- -------- ---------- ---------- ------------ ---------- -- -

               ACTIVE   4C623BB8         99          4 27468               275 EV 1

               ACTIVE   4C623040          9         24 27444                 0    1

               ACTIVE   4C622A84        101          4 27480               274 EV 1

               ACTIVE   4C6224C8          1         48 27450                 0    1

               ACTIVE   4C621F0C          1         48 27450                 0    1

               ACTIVE   4C6235FC          2          4 27468                 0    1

    SYS        ACTIVE   4C624174          2         15 27442                 0

               ACTIVE   4C62081C          1         48 27440                 0    1

               ACTIVE   4C621394          1         48 27440                 0    1

               ACTIVE   4C620DD8    &n

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-15
  • 2021-05-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-03
  • 2022-12-23
  • 2021-12-18
相关资源
相似解决方案