Tibero Session Kill
Tibero Session Kill
테스트 환경
OS : OEL release 7.2
Tibero : 4SP1 r71701
Tibero : 5SP1 FS05
Tibero : 6 FS04
Special Port 접속설정
- Tibero에 접속할 수 있는 최대 세션 수는
MAX_SESSION_COUNT
파라미터로 결정된다. MAX_SESSION_COUNT
로 제한 되는 세션은 Tibero의 서비스 포트(또는 리스너 포트(LISTENER_PORT) Default: 8629)로 접속한 세션만 해당된다.- 따라서, TIbero 서비스 포트로
MAX_SESSION_COUNT
를 넘겨서 접속할 방법은 없다(세션 풀(Session Full) 상태를 의미한다). - 이러한 경우, 기존 세션이 종료되기를 기다리거나 DBMS를 재기동 시키는 방법 이외에는 방법이 없을 수 있다.
(운 좋게DBA
권한을 가진 계정으로 접속하여 작업 중인 경우 해당 세션을 통해 다른 세션을 끊을 수 있다. (방법은 다음 단계에 있다) - 이를 위해 TIbero에서는
Special Port
를 제공(?)한다. Special Port
는 서비스 포트 이외의 자동으로 추가 설정되는 숨겨진(?) 포트다.Special Port
는_LSNR_SPECIAL_PORT
의 값으로 정해지며 설정하지 않는 경우 LISTENER_PORT + 1이 Default 값으로 설정된다.Special Port
는MAX_SESSION_COUNT
와 상관 없이(MAX_SESSION_COUNT
에 의해 제약받지 않는다.) 접속이 가능하다.(세션 풀 상태에서도 접속이 가능하다.)- 단,
Special Port
로 접속하는 세션도 제한은 있으며_WTHR_PER_PROC
파리미터에 설정된 수 만큼 접속이 가능하다. _WTHR_PER_PROC
의 Default 값은 10이다.- 즉
Special Port
로 최대_WTHR_PER_PROC
의 설정값만큼의 접속이 가능하며DBA
권한으로 접속하여 세션 풀을 유발한 세션들을 정리할 수 있다.
Tibero 4SP1까지는
MAX_SESSION_COUNT
파라미터가 존재하지 않는다.
대신,WTHR_PROC_CNT
및_WTHR_PER_PROC
파라미터가 존재하며 해당 파라미터 설정값의 곱으로 최대 세션 수가 결정된다.
즉,WTHR_PROC_CNT * _WTHR_PER_PROC = MAX_SESSION_COUNT
가 된다.
WTHR_PROC_CNT
는 Tibero WTHR(워킹 프로세스)의 개수를 의미한다.
_WTHR_PER_PROC
는 Tibero WTHR당 워킹 스레드의 개수를 의미한다.
각 세션은 워킹 스레드와 1:1 매칭이 되므로_WTHR_PER_PROC
는 각 WTHR별로 처리할 수 있는 세션의 수이다. - 접속 방법은
$TB_HOME/client/config/tbdsn.tbr
파일에 접속 정보를 설정하여 사용한다.
(전략)
tb5FS05=(
(INSTANCE=(HOST=localhost)
(PORT=8629)
(DB_NAME=tb5FS05)
)
)
tb5FS05_SP=(
(INSTANCE=(HOST=localhost)
(PORT=8630) # 8629(LISTENER_PORT) + 1 = 8630
(DB_NAME=tb5FS05)
)
)
- 세션 풀 상태에서 서비스 포트로 접속하면 다음과 같이 에러가 발생한다.
$ tbsql sys/tibero
tbSQL 5 SP1
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
TBR-12003: Unable to open a session.
SQL>
- 위에서 설정한
tb5FS05_SP
를 이용하여 접속하면 정상 접속이 가능하다.
$ tbsql sys/tibero@tb5FS05_SP
tbSQL 5 SP1
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to Tibero using tb5FS05_SP.
SQL>
세션 정리
ALATER 문
- Special Port로 Tibero에 접속하여 진행한다. (세션 풀 상태가 아닌 경우에는 상관없다)
DBA
권한 또는ALTER SYSTEM
권한이 있는 DB 계정을 통해 사용할 수 있다.
$ tbsql sys/tibero@tb5FS05_SP
tbSQL 5 SP1
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to Tibero using tb5FS05_SP.
SQL>
- Session Kill의 기본 구문은 다음과 같다.
- 추가적은 옵션이 존재하나 Tibero 공식문서에서도 제공되지 않은 만큼 언급하지 않겠다.
ALTER SYSTEM KILL SESSION (SID, SERIAL#) ;
- 해당 구문에서
SID
와SERIAL#
은V$SESSION
뷰를 통해서 조회 가능하다. USERNAME
및IPADDR
,PROG_NAME
등의 컬럼을 통해 KILL 할 세션의SID
와SERIAL#
을 찾는다.
SQ> SELECT SID, SERIAL#
FROM V$SESSION
WHERE USERNAME = 'TEST'
AND IPADDR = '127.0.0.1'
AND PROG_NAME = 'tbsql' ;
SID SERIAL#
---------- ----------
23 1466
1 row selected.
- 해당 세션의
SID
와SERIAL#
의 값을 통해 Session Kill을 수행한다.
SQL> ALTER SYSTEM KILL SESSION (23, 1466) ;
System altered.
- 해당 세션이 정리되었음을 알 수 있다.
SQ> SELECT SID, SERIAL#
FROM V$SESSION
WHERE USERNAME = 'TEST'
AND IPADDR = '127.0.0.1'
AND PROG_NAME = 'tbsql' ;
0 row selected.
tbsvr kill
tbsvr kill
명령을 통해 Session Kill을 수행할 수 있다.- 내부적인 동작은 위의 ALATER 문과 크게 다르지 않다.
- 다만, 별도의 Special Port 설정 없이 Special Port를 통해 Session Kill을 수행할 수 있다.
- 즉, 세션 풀 상태에서 별도의 설정 없이 Session Kill이 가능하다.
tbsvr kill
명령을 수행하면 다음과 같다.
(Tibero를 설치한 OS 계정으로 접속하여 수행한다.)
$ tbsvr kill
sess: 49 user: TIBERO
sess: 50 user: TEST
sess: 51 user: TIBERO
sess: 52 user: TIBERO
sess: 53 user: TIBERO
sess: 54 user: TIBERO
sess: 55 user: TIBERO
sess: 56 user: TIBERO
sess: 57 user: TIBERO
sess: 58 user: TIBERO
sess: 59 user: TIBERO
sess: 60 user: TIBERO
sess: 61 user: TIBERO
sess: 62 user: TIBERO
sess: 63 user: TIBERO
sess: 64 user: TIBERO
sess: 65 user: TIBERO
sess: 66 user: TIBERO
sess: 67 user: TIBERO
sess: 68 user: TIBERO
select kill session (0: QUIT):
TEST
로 접속한 세션에 대해 Session Kill을 수행한다.- 정리된 게 바로 확인된다.
$ tbsvr kill
sess: 49 user: TIBERO
sess: 50 user: TEST
sess: 51 user: TIBERO
sess: 52 user: TIBERO
sess: 53 user: TIBERO
sess: 54 user: TIBERO
sess: 55 user: TIBERO
sess: 56 user: TIBERO
sess: 57 user: TIBERO
sess: 58 user: TIBERO
sess: 59 user: TIBERO
sess: 60 user: TIBERO
sess: 61 user: TIBERO
sess: 62 user: TIBERO
sess: 63 user: TIBERO
sess: 64 user: TIBERO
sess: 65 user: TIBERO
sess: 66 user: TIBERO
sess: 67 user: TIBERO
sess: 68 user: TIBERO
select kill session (0: QUIT): 50
sess: 49 user: TIBERO
sess: 51 user: TIBERO
sess: 52 user: TIBERO
sess: 53 user: TIBERO
sess: 54 user: TIBERO
sess: 55 user: TIBERO
sess: 56 user: TIBERO
sess: 57 user: TIBERO
sess: 58 user: TIBERO
sess: 59 user: TIBERO
sess: 60 user: TIBERO
sess: 61 user: TIBERO
sess: 62 user: TIBERO
sess: 63 user: TIBERO
sess: 64 user: TIBERO
sess: 65 user: TIBERO
sess: 66 user: TIBERO
sess: 67 user: TIBERO
sess: 68 user: TIBERO
select kill session (0: QUIT):
여담
- ALATER 문에서도 언급한 바와 같이 추가적은 옵션이 존재하나 공식문서에서는 제공되지 않는다.
- 해당 옵션이 사라졌을 수 있으며 또는, 내부적인 동작에 의해 주어진 옵션이 무시될 가능성도 있다.
- 또한, 해당 옵션으로 인해 원치 않는 동작이 발생될 소지가 있을 것으로 추정된다. (
옵션은 쓰지 말자!) - tbsvr kill도 공식적으로는 제공되는지는 분명치 않다.
- 하지만, 구글링을 하면 이런게 나온다.
- 언제나 조심하자.
'Tibero > 기타' 카테고리의 다른 글
PHP와 tbOCI(Tibero OCI) 연동 (0) | 2016.06.14 |
---|---|
Tibero To Tibero DB Link (0) | 2016.06.14 |
Tibero To MS-SQL DB Link (0) | 2016.06.03 |
Tibero To Sybase DB Link (0) | 2016.06.03 |
Tibero to Oracle DB Link(Local Gateway) (0) | 2016.06.03 |
댓글