tbdown clean 이란, 명령어만 보고 tbdown의 옵션이라고 착각할 수도 있습니다. 그러나 tbdown의 옵션이 아니라 티베로 서버가 비정상 종료된 상태에서 사용하였던 Shared Memory나 세마포어 자원들을 설정 해제하는 명령어입니다.
즉, 기동 되던 티베로 인스턴스가 사용하던 자원들을 풀어주고 임시파일을 삭제하는 역할을 합니다.
kill 명령으로 종료한 경우, tbdown clean을 실행하여 정리해야 합니다. 만약, 제대로 정리하지 않는다면 예외적인 상황이 발생하여 점유하고 있는 자원들과 임시파일들이 충돌할 수 있기 때문입니다.
tbdown clean에 관한 Test를 해보겠습니다. 이 테스트도 Putty와 같은 터미널 프로그램에서 세션을 2개 열어서 실행합니다.
tbdown clean Test
### 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).
sys 계정에서 normal 모드로 tbboot 하여 티베로 인스턴스를 기동 합니다.
### tibero계정
SQL> connect
Enter Username: tibero
Enter Password:
Connected to Tibero.
SQL> SELECT * FROM T1 ;
C1
----------
1
1 row selected.
SQL> INSERT INTO T1 VALUES(2) ;
1 row inserted.
SQL> SELECT * FROM T1 ;
C1
----------
1
2
2 rows selected.
tibero 계정에서 T1 테이블에 '2'를 추가하여 삽입합니다.
### sys계정
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ tbdown abnormal
Tibero instance terminated (ABNORMAL mode).
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$
sys계정에서 tbdown abnormal을 하여 강제 종료시킵니다. tbdown abnormal은 지난 포스팅에서 다룬 tbdown 옵션입니다.
2021.07.20 - [엔지니어링/DataBase] - [Tibero] 티베로(tibero) - 티베로 인스턴스 종료(2) abort, abnormal
[Tibero] 티베로(tibero) - 티베로 인스턴스 종료(2) abort, abnormal
전 포스팅에서 normal, post_tx, immediate 종료 모드를 살펴보았습니다. 2021.07.20 - [엔지니어링/DataBase] - [Tibero] 티베로(tibero) - 티베로 인스턴스 종료(1) normal, post_tx, immediate [Tibero] 티베..
yjkim96.tistory.com
### sys 계정
#클리닝 대상 확인
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ ipcs -a
------ Message Queues --------
key msqid owner perms used-bytes messages
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
[tibero@T1:/DataDisk/T1/tibero2/tbdata]$ cd $TB_HOME/instance/$TB_SID
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ ls -al
total 8
drwxr-xr-x 6 tibero dba 160 Jul 14 13:48 .
drwxr-xr-x 3 tibero dba 20 Jul 13 16:32 ..
drwxr-xr-x 2 tibero dba 23 Jul 13 16:32 audit
drwxr-xr-x 4 tibero dba 29 Jul 13 16:32 dump
drwxr-xr-x 6 tibero dba 93 Jul 13 16:56 log
-rw------- 1 tibero dba 0 Jul 14 13:32 lsnr.out.4182
-rw------- 1 tibero dba 0 Jul 14 13:47 lsnr.out.5517
drwxr-xr-x 2 tibero dba 162 Jul 14 13:47 path
-rw-r--r-- 1 tibero dba 358 Jul 14 13:32 .proc.list.abnormal.4181
-rw-r--r-- 1 tibero dba 358 Jul 14 13:47 .proc.list.abnormal.5516
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$
sys 계정에서 cleaning 대상을 파악하는 ipcs -a 명령어로 목록을 조회합니다. 할당 해제되어 안 보이지만 임시파일이 남아 있을 수 있기 때문에 $TB_HOME/instance/$TB_SID 경로로 이동하여 임시파일을 조회합니다. 임시파일을 조회하기 위해 숨김 파일까지 보이는 옵션인 ls -al 명령어를 사용합니다.
.proc.list.abnormal.*로 시작하는 파일이 abnormal로 종료되고 남은 임시 파일입니다. 인스턴스가 만들어질 때 생성되고 것들입니다. 프로세스 종료 시 사리 지는데 비정상 종료로 인해 남게 된 것입니다. 이 파일들을 Cleaning 해야 합니다.
### sys계정
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ cat .proc.list.abnormal.5516
Tibero 6 start at (2021-07-14 13:47:16) by 1000
shared memory: 140416322408448 size: 1073741824
shm_key: 1533845354 1 sem_key: -1327065057 123 listener_pid: 5517 listener_port: 8629 listener_special_port: 8630 epa_pid: -1
5516 MONP
5518 MGWP
5519 FGWP0000
5520 FGWP0001
5521 PEWP0000
5522 PEWP0001
5523 PEWP0002
5524 PEWP0003
5525 AGNT
5526 DBWR
5527 RCWP
자세히 보기 위해 cat 명령어로 임시파일을 열어보니 PID들과 함께 프로세스 종류를 조회할 수 있습니다. 커널이 식별하기 위해 부여받은 것이며, 프로세스 시작하면 PID가 바뀌게 됩니다.
### sys계정
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ 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).
충돌 나지 않고 제대로 boot 되었지만 충돌하는 경우도 '왕왕'있기 때문에 .proc.list가 삭제되지 않고 이름이 바뀌지 않는다면, 충돌이 발생할 수 있습니다.
원래 이름 그대로 남으면 새로 만드려 할 때, 충돌이 발생하여 기동 자체가 되지 않습니다. 즉, Cleaning 대상입니다.
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ tbdown
Tibero instance terminated (NORMAL mode).
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ ls -al
total 8
drwxr-xr-x 6 tibero dba 160 Jul 14 13:55 .
drwxr-xr-x 3 tibero dba 20 Jul 13 16:32 ..
drwxr-xr-x 2 tibero dba 23 Jul 13 16:32 audit
drwxr-xr-x 4 tibero dba 29 Jul 13 16:32 dump
drwxr-xr-x 6 tibero dba 93 Jul 13 16:56 log
-rw------- 1 tibero dba 0 Jul 14 13:32 lsnr.out.4182
-rw------- 1 tibero dba 0 Jul 14 13:47 lsnr.out.5517
drwxr-xr-x 2 tibero dba 162 Jul 14 13:54 path
-rw-r--r-- 1 tibero dba 358 Jul 14 13:32 .proc.list.abnormal.4181
-rw-r--r-- 1 tibero dba 358 Jul 14 13:47 .proc.list.abnormal.5516
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ mv .proc.list.abnormal.5516 .proc.list
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ tbboot
Change core dump dir to /tibero/edu/tibero6/bin/prof.
***********************************************************
* BOOT FAILED.
* Garbage files have not been deleted.
* Please run "tbdown clean" and try again.
***********************************************************
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ ls -al
total 8
drwxr-xr-x 6 tibero dba 146 Jul 14 13:56 .
drwxr-xr-x 3 tibero dba 20 Jul 13 16:32 ..
drwxr-xr-x 2 tibero dba 23 Jul 13 16:32 audit
drwxr-xr-x 4 tibero dba 29 Jul 13 16:32 dump
drwxr-xr-x 6 tibero dba 93 Jul 13 16:56 log
-rw------- 1 tibero dba 0 Jul 14 13:32 lsnr.out.4182
-rw------- 1 tibero dba 0 Jul 14 13:47 lsnr.out.5517
drwxr-xr-x 2 tibero dba 162 Jul 14 13:54 path
-rw-r--r-- 1 tibero dba 358 Jul 14 13:47 .proc.list
-rw-r--r-- 1 tibero dba 358 Jul 14 13:32 .proc.list.abnormal.4181
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ rm .proc.list
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ 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:/tibero/edu/tibero6/instance/tibero]$
.proc.list 가 남아있는 상태를 Test 하기위해 .proc.list.abnormal.5516을 .proc.list로 파일명을 변경해서 tbboot를 하였더니 boot 자체가 실패하는 것을 볼 수 있었습니다. .proc.list 까지는 부팅 때 만들어지고 PID를 부여받으면 파일명이 변경되기 때문입니다.
### sys계정
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ tbdown
Tibero instance terminated (NORMAL mode).
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ ls -al
total 4
drwxr-xr-x 6 tibero dba 128 Jul 14 13:59 .
drwxr-xr-x 3 tibero dba 20 Jul 13 16:32 ..
drwxr-xr-x 2 tibero dba 23 Jul 13 16:32 audit
drwxr-xr-x 4 tibero dba 29 Jul 13 16:32 dump
drwxr-xr-x 6 tibero dba 93 Jul 13 16:56 log
-rw------- 1 tibero dba 0 Jul 14 13:32 lsnr.out.4182
-rw------- 1 tibero dba 0 Jul 14 13:47 lsnr.out.5517
drwxr-xr-x 2 tibero dba 162 Jul 14 13:57 path
-rw-r--r-- 1 tibero dba 358 Jul 14 13:32 .proc.list.abnormal.4181
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ tbdown clean
info file is deleted.
Do you want to cleanup forcely? y
unlink failed.: No such file or directory
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$ ls -al
total 4
drwxr-xr-x 6 tibero dba 128 Jul 14 13:59 .
drwxr-xr-x 3 tibero dba 20 Jul 13 16:32 ..
drwxr-xr-x 2 tibero dba 23 Jul 13 16:32 audit
drwxr-xr-x 4 tibero dba 29 Jul 13 16:32 dump
drwxr-xr-x 6 tibero dba 93 Jul 13 16:56 log
-rw------- 1 tibero dba 0 Jul 14 13:32 lsnr.out.4182
-rw------- 1 tibero dba 0 Jul 14 13:47 lsnr.out.5517
drwxr-xr-x 2 tibero dba 162 Jul 14 13:57 path
-rw-r--r-- 1 tibero dba 358 Jul 14 13:32 .proc.list.abnormal.4181
[tibero@T1:/tibero/edu/tibero6/instance/tibero]$
.proc.list를 지우고 tbboot를 하게 되면 티베로 인스턴스가 normal 모드로 제대로 부팅됩니다. 보이지 않았으나, 세마포어나 Shared Memory에 자원을 점유하는 것도 지워봅니다. tbdown clean으로 .proc.list 까지 3가지 정리합니다.
tbdown clean을 살펴보았고, 잘못된 정보는 댓글로 정정 부탁드립니다.
'IT > DataBase' 카테고리의 다른 글
[Tibero] 티베로(tibero) - 리스닝 포트 변경 (0) | 2021.07.21 |
---|---|
[Tibero] 티베로(tibero) - 프로세스 세션 확인 (0) | 2021.07.21 |
[Tibero] 티베로(tibero) - 티베로 인스턴스 종료(2) abort, abnormal (0) | 2021.07.20 |
[Tibero] 티베로(tibero) - 티베로 인스턴스 종료(1) normal, post_tx, immediate (0) | 2021.07.20 |
[Tibero] 티베로(tibero) - 티베로 인스턴스 기동(2) Mount 모드 (0) | 2021.07.19 |