[Tibero] 티베로(tibero) - 티베로 인스턴스 종료(2) abort, abnormal
본문 바로가기
IT/DataBase

[Tibero] 티베로(tibero) - 티베로 인스턴스 종료(2) abort, abnormal

by 로진김 2021. 7. 20.

 전 포스팅에서 normal, post_tx, immediate 종료 모드를 살펴보았습니다.

2021.07.20 - [엔지니어링/DataBase] - [Tibero] 티베로(tibero) - 티베로 인스턴스 종료(1) normal, post_tx, immediate

 

[Tibero] 티베로(tibero) - 티베로 인스턴스 종료(1) normal, post_tx, immediate

세션을 2개 만들고 트랜잭션을 만들어 Test를 하겠습니다. 우선, 터미널 프로그램인 Putty를 2개로 접속합니다. 모드를 달리하여 실행할 것이기 때문입니다. 세션 1은 tibero 계정으로 로그인하고, 세

yjkim96.tistory.com

 

 이번 시간에는 abort 모드와 abnormal 모드를 살펴보고 Test 해보겠습니다.

 


 tbdown abort Test

 abort 모드는 프로세스를 강제로 종료하고, 데이터와 관련된 작업을 하지 않습니다. 데이터 처리를 무시하고 내려가기 때문에 다음과 같은 상황이 발생합니다.

 

  • shared memory가 메모리에 있는 DB에 반영하지 않고, 프로세스를 강제로 종료시키기 때문에, 메모리에 있는 데이터들이 쓰이지 않고 사라집니다.
  • 쓰인 데이터들은 일관성이 없어지게 됩니다.

 

 따라서 정상 기동이 불가능해지고, Recovery가 복구를 하여 재기동시에 오래 걸릴 수 있습니다.

### 세션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).

  #normal 모드로 기동

 

 tibero 계정의 세션에서 2를 추가로 넣고 COMMIT을 하지 않았습니다. 즉, 트랜잭션이 유지되고 있는 것입니다.

 

### 세션1 - tibero 계정

SQL> INSERT INTO T1 VALUES(2) ;

1 row inserted.

SQL>
  #1만 commit 한 상태

 

 트랜잭션이 유지되고 있는 상태에서 tbdown abort로 티베로 인스턴스를 종료시켜보겠습니다.

 

### 세션2 - sys계정

[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ tbdown abort

Tibero instance terminated (ABORT mode).

[tibero@T1:/DataDisk/T1/tibero2/tbdata]$

 

 Buffer Cache 어딘가에 2가 입력된 상태로 tbdown이 되었습니다. log buffer에 남겨진 상태이지만, abort로 tbdown 해서 Redo Log에 Write 되지 않았을 가능성이 큽니다. 파일에 쓰지 않고 사라졌다는 뜻입니다. 이제 tbboot를 해보겠습니다.

 

### 세션1 - tibero계정

SQL> SELECT * FROM T1 ;

        C1
----------
         1
         
1 row selected.

 

 sys 계정에서 tbboot를 하고 tibero 계정에서 로컬 테이블인 T1을 조회해보았습니다. 트랜잭션이 유지되는 상태에서 강제로 abort 모드로 인스턴스를 종료시켜서 COMMIT되지 않고, INSERT 결과가 날아간 것을 확인하였습니다.

 


 

tbdown abnormal Test

 

 abort 모드와 abnormal 모드는 강제 종료 시킨다는 공통점이 있습니다. sys 계정에서 다시 tbboot를 하고 tibero 게정에서 트랜잭션을 만들어 보겠습니다.

 

### 세션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]$

 

 INSERT INTO SQL문으로 다시 2를 넣어보겠습니다. SELECT로 조회해보니 데이터가 잘 들어간 것을 확인하였습니다.

 

### 세션1 - tibero 계정

SQL> INSERT INTO T1 VALUES(2) ;

1 row inserted.

SQL> SELECT * FROM T1 ;

        C1
----------
         1
         2

2 rows selected.

 

 이제 abnormal 모드로 티베로 인스턴스를 종료시키겠습니다.

 

### 세션2 - sys계정

[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ tbdown abnormal
Tibero instance terminated (ABNORMAL mode).

[tibero@T1:/DataDisk/T1/tibero2/tbdata]$

 

 tibero 계정에서 다시 T1 테이블을 조회해보겠습니다.

 

### 세션1 - tibero 계정

SQL> SELECT * FROM T1 ;
TBR-2131: Generic I/O error.

SQL>

 

  generic i/o error 에러 메시지는 서버와 연결에 문제가 있다는 의미입니다. tbdown을 했기 때문에 티베로 서버와 연결이 끊겼기 때문입니다. 자, 이제 abort모드와 abnormal 모드의 공통점과 차이점을 보겠습니다.

 


 

 abort vs abnormal 공통점 & 차이점

 

 공통점 : 강제종료 되었다는 것입니다.

 

 차이점

  • bin 디렉터리에 tbdown이 있고, OS의 kill 명령어로 프로세스를 강제로 죽이는 명령어abnormal입니다.
  • tibero 인스턴스를 구성하는 프로세스들에게 종료하라고 친절하게 이야기하는 것이 abort입니다.
  • tbdown abort로 티베로 인스턴스가 내려가지 않을 때, 모두 kill 해버리는 tbdown abnormal로 내려갈 수 있습니다.
  • 그래서 abnormal 모드는 로그에 남지 않는다는 특징이 있습니다. 로그는 프로세스들이 남기는 것인데 프로세스들이 kill 당해버려서 로그로 남길 수 없기 때문입니다.

 

반응형