오라클에는 현재 수행 중인 세션을 정리하는 방법이 두가지가 있습니다.
하나는 익히 알고 있는 ALTER SYSTEM KILL SESSION 명령이고 다른 하나는 ALTER SYSTEM DISCONNECT SESSION 명령입니다. 이 두개의 명령은 "ALTER SYSTEM" 명령의 "end_session_clauses"에 속하는 명령입니다.
일반적으로 비정상적인 세션을 정리할 때 alter system kill session 명령을 수행하곤 하는데, kill session 명령은 현재 수행중인 transaction을 바로 정리해 버리죠. 그런데, disconnect session 명령은 현재까지 수행된 transaction은 처리하고 session을 정리할 수 있는 방법입니다.
ALTER SYSTEM KILL SESSION '13, 8' IMMEDIATE;
ALTER SYSTEM DISCONNECT SESSION '13, 8' POST_TRANSACTION;
ALTER SYSTEM DISCONNECT SESSION '13, 8' POST_TRANSACTION;
DISCONNECT SESSION은 dedicated server를 강제로 정리해 현 세션을 disconnect 하게 된다. 세션의 지정은 KILL SESSION 과 마찬가지로 'sid, serial#' 으로 지정한다.
DISCONNECT SESSION 문에는 "POST_TRANSACTION" 과 "IMMEDIATE" option을 지정할 수 있다.
POST_TRANSACTION은 현재 transaction이 수행 중이라면 이 transaction이 끝난 후에 세션을 정리하게 되며, 만약 현재 수행 중인 transaction이 없다면 "KILL SESSION"과 동일한 효과를 갖는다. (근데, "KILL SESSION"절에 IMMEDIATE option은 언제 생긴거람.. ?)
'Oracle Database' 카테고리의 다른 글
Oracle Global Temporary Table (0) | 2010.03.09 |
---|---|
Oracle Monitoring Tool : OraScope.Net (0) | 2010.03.08 |
oracle fixed view의 definition 찾아보기. (0) | 2010.02.12 |
sql script를 무한루프로 돌려주는 shell script <rpt> (0) | 2010.02.12 |
Oracle 11g R2 External Table에서 pre-processor program을 사용할 수 있습니다. (2) | 2010.02.11 |