SESSION의 STATUS
- CONNECTED (정상 커넥션 상태)
- SIGNALED
- SNIPED (kill 후 정리 중. 언젠간 정리 끝남)
- DEAD (kill 후 정리실패. DB 재구동 필요함)
select만 발생시킨 세션도 kill -9하면 DEAD 세션으로 빠질 수 있기때문에
TCP로 붙은 세션만 kill -9 날려야됨..
SNIPED SESSION에 대한 해결은
ALTER SYSTEM [KILL | DISCONNECT] SESSION 구문으로 보통 하는듯…?
(앱 단에서 무슨 문제 생기면, 이 자체에도 hang 걸릴 수 있음)
테스트
TCP 커넥션 후 트랜잭션 발생
15:16:49 gSQL> insert into t1 values (1);
1 row created.
15:16:59 gSQL> select SESSION_ID, SERIAL_NO, SESSION_STATUS from v$session where connection_type = 'TCP';
SESSION_ID SERIAL_NO SESSION_STATUS
---------- --------- --------------
4 91 CONNECTED
1 row selected.
ALTER ~ KILL SESSION은
KILL SESSION은 해당 세션의 프로세스는 존재하지 않지만 시스템에 남아있는 비정상 세션을 종료한다.
15:17:05 gSQL> alter system kill session 4, 91;
ERR-HY000(13046): session cannot be killed now : process still alive
ALTER ~ DISCONNECT SESSION
15:17:23 gSQL> alter system disconnect session 4, 91;
System altered.
질의 시 communiation link failure
15:17:46 gSQL> commit;
ERR-08S01(11141): Communication link failure
15:18:10 gSQL> select SESSION_ID, SERIAL_NO, SESSION_STATUS from v$session where connection_type = 'TCP';
no rows selected.
session을 sniped, dead 상태로 만들어볼 방법은 없남…재현해보고싶은데.
세션이 sniped 상태로 빠지면, alter system disconnect~ 로 정리하면 된다 (by son)
(참고용) sniped 상태에 대한 문의가 왔는데, 어플리케이션 단에서 뭔가 처리가 안이루어져서(시그널) 우리한테 응답이 안떨어졌기 때문에
계속 정리하지 못하고 sniped 상태로 빠졌던 것… 어플리케이션 자체를 종료하는것으로 해결
'IT Engineer > etc' 카테고리의 다른 글
macOS에서 docker 살짝 띄워보기 (0) | 2019.02.14 |
---|---|
[github] 깃허브 HTTP request failed ERROR (1) | 2018.06.05 |
[etc] 무료 DBMS 관리 툴, DBANY 기술력 좋다 ㅋ.ㅋ (0) | 2018.02.12 |
[etc] CSV, CSV 포맷 정의, CRLF? (0) | 2018.01.18 |