세션을 2개 만들고 트랜잭션을 만들어 Test를 하겠습니다. 우선, 터미널 프로그램인 Putty를 2개로 접속합니다. 모드를 달리하여 실행할 것이기 때문입니다. 세션 1은 tibero 계정으로 로그인하고, 세션 2는 sys 계정으로 로그인하겠습니다.
tibero계정에서는 주로 트랜잭션을 만드는 역할을 하고, sys계정은 tbdown하는 역할을 합니다.
tbdown normal 종료 Test
###세션1 - tibero 계정 접속
login as: tibero
tibero@192.168.56.241's password:
Last login: Wed Jul 14 09:56:37 2021 from 192.168.56.1
[tibero@T1:/home/tibero]$ tbsql tibero/tmax
tbSQL 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to Tibero.
SQL>
Putty1로 접속한 세션 1에서 tibero 계정으로 로그인하였습니다.
### 세션2 - sys 계정
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ tbdown -h
Usage: tbdown [-h] [-t DOWNMODE]
DOWNMODE : NORMAL, POST_TX, IMMEDIATE, ABORT, SWITCHOVER, ABNORMAL
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ tbdown NORMAL
Putty2로 접속한 세션 2에서 sys 계정으로 로그인하여 Normal 모드로 tbdown 하였습니다. Normal 모드로 내리면 세션 1이 접속을 종료할 때까지 기다리는 수동적인 종료 옵션입니다. 즉, tbsql에서 클라이언트가 연결을 끊어야 tbdown이 됩니다.
### 세션1 - tibero 계정
SQL> DISCONNECT
### 세션2 - sys 계정
Tibero instance terminated (NORMAL mode).
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$
tbdown post_tx 종료 Test
post_tx 모드의 경우 사용자가 만든 트랜잭션을 사용자가 종료시켜주면 그때까지 기다렸다가 내려가는 반 수동적인 옵션입니다. 트랜잭션이 없는 세션에서는 능동적으로 작동하지만, 트랜잭션이 있으면 기다리기 때문에 수동적입니다.
###세션1 - tibero 계정
SQL> CONNECT
Enter Username: tibero
Enter Password:
Connected to Tibero.
SQL> CREATE TABLE T1(C1 NUMBER) ;
Table 'T1' created.
SQL> INSERT INTO T1 VALUES(1) ;
1 row inserted.
SQL>
COMMIT이나 ROLLBACK 쿼리문을 사용하지 않았기 때문에 트랜잭션은 끝나지 않고 유지되고 있는 상태입니다. 이 상태에서 sys 계정에서 post_tx 모드로 tbdown을 시켰습니다.
### 세션2 - sys 계정
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ tbdown post_tx
티베로 인스턴스는 여전히 기동 중인 상태입니다. 유지되고 있는 트랜잭션을 종료하기 위해 COMMIT 명령어를 실행해보았습니다.
### 세션1 - tibero 계정
SQL> commit ;
Commit completed.
### 세션2 - sys계정
Tibero instance terminated (POST TX mode).
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$
COMMIT을 하여 트랜잭션이 종료되자 티베로 인스턴스가 종료되는 것을 확인하였습니다.
tbdown immediate Test
Immediate 모드는 트랜잭션에 대해 능동적으로 롤백하고 티베로를 종료하는 종료 모드입니다. 이에 관해 Test를 해보겠습니다.
### 세션2 - sys계정
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ tbboot
Change core dump dir to /tibero/edu/tibero6/bin/prof.
Listener port = 8629
Tibero 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (NORMAL mode).
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$
tibero 계정에서 2 데이터를 T1 테이블에 추가하도록 하겠습니다.
### 세션1 - tibero 계정
SQL> CONNECT
Enter Username: tibero
Enter Password:
Connected to Tibero.
SQL> INSERT INTO T1 VALUES(2) ;
1 row inserted.
sys계정에서 immediate 모드로 tbdown 합니다.
### 세션2 - sys계정
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ tbdown immediate
Tibero instance terminated (IMMEDIATE mode).
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$
결과 확인을 해보겠습니다.
######################################################
#######################결과확인########################
######################################################
### 세션2 - sys계정
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ tbboot
Change core dump dir to /tibero/edu/tibero6/bin/prof.
Listener port = 8629
Tibero 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (NORMAL mode).
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$
### 세션1 - tibero 계정
SQL> connect
Enter Username: tibero
Enter Password:
Connected to Tibero.
SQL> LS TABLE
SQL> SELECT * FROM T1 ;
C1
----------
1
1 row selected.
Immediate 모드로 종료하기 전에 2라는 데이터를 추가하였는데, 조회하였지만 데이터 2는 추가되지 않았습니다. Immediate 모드가 ROLLBACK 시켜서 티베로 인스턴스를 종료시켰기 때문입니다.
운영자에서 DB를 내려야하는데 티베로에 접속되어 있거나 트랜잭션이 이어지고 있으면 immediate 모드를 자주 사용하고, 오래걸릴 수도 있습니다. 특히, ROLLBACK하는 부분에서 시간이 오래 걸릴 수 있습니다. ROLLBACK할 것이 많다면. 즉, 어떤 데이터를 누군가가 수정하는 쿼리를 수행하는데 수정되는 데이터가 많으면 많을 수록 각각의 건 별로 ROLLBACK 데이터가 만들어지고 건마다 ROLLBACK데이터가 기록되는 것을 다시 ROLLBACK처리를 하기 때문에 데이터가 많으면 많을 수록 종료하는 것에 오래 걸립니다. 반면에, 진행중인 트랜잭션이 없을 땐 바로 종료됩니다.
다음에는 tbdown abort와 tbdown abnormal을 Test 해보고 이 2가지 모드의 차이점을 확인하겠습니다.
'IT > DataBase' 카테고리의 다른 글
[Tibero] 티베로(tibero) - tbdown clean (0) | 2021.07.20 |
---|---|
[Tibero] 티베로(tibero) - 티베로 인스턴스 종료(2) abort, abnormal (0) | 2021.07.20 |
[Tibero] 티베로(tibero) - 티베로 인스턴스 기동(2) Mount 모드 (0) | 2021.07.19 |
[Tibero] 티베로(tibero) - 티베로 인스턴스 기동(1) (0) | 2021.07.19 |
[Tibero] 티베로(tibero) 설치(2) - 데이터베이스 생성을 위한 설치 작업 (0) | 2021.07.19 |