[Oracle - killed 세션]

oracle에 붙어있던 session을 kill했을때 상태가 killed로 남는 경우가 있습니다.
-- session 종료 시, immedaite 옵션을 주지 않아 transaction 종료되었지만, session은 client에서 추가적인 action이 수행되지 않음 으로 STATUS가 KILLED로 남습니다. 

 

 

■ session 확인

SQL> select username, sid, serial#, status from v$session where username='KIM';

USERNAME                  SID    SERIAL#   STATUS
------------------------------ ---------- ---------- --------
KIM                          1531     63390     INACTIVE

 

 

 

 

정상적인 경우

 

session kill

 

sid와 seiral# 번호 이용하여 붙어있는 세션 kill

SQL> alter system kill session '1531,63390' immediate;

System altered.



SQL> select username, sid, serial#, status from v$session where username='KIM';

no rows selected



## 붙어있던 세션 상태
SQL> show con_name
ERROR:
ORA-03114: not connected to ORACLE

SP2-1545: This feature requires Database availability.
 
 
 

 

 

비정상 경우

 

session을 kill했음에도 불구하고 killed인 상태로 빠지면 session의 PID를 확인하여 OS단에서 kill해주어야합니다.

SQL> select username,sid,serial#,status from v$session where username='KIM';

USERNAME                  SID    SERIAL#             STATUS
------------------------------ ---------- ---------- --------
KIM                     2144      19720                  KILLED



SQL> select s.username,s.sid,s.serial#,p.spid from v$process p, v$session s where  p.ADDR=s.paddr and s.username='KIM';

USERNAME                  SID    SERIAL#     SPID
------------------------------ ---------- ---------- ------------------------
KIM                         2144      19720      85518



[oracle@jhtest1 ~]$ ps -ef | grep 85518
oracle   97873 57242  0 05:08 pts/0    00:00:00 grep --color=auto 85518



[oracle@jhtest1 ~]$ kill -9 85518



SQL> select s.username,s.sid,s.serial#,p.spid from v$process p, v$session s where  p.ADDR=s.paddr and s.username='KIM';

no rows selected