제6장 tbdv

내용 목차

6.1. 개요
6.2. 빠른 시작
6.3. 수행 예제

본 장에서는 tbdv 유틸리티를 소개하고 사용 방법을 설명한다.

6.1. 개요

tbdvTibero 데이터베이스의 데이터파일에 대한 정합성을 검사하는 간단한 유틸리티이다. 이 유틸리티를 통해 데이터베이스가 오프라인일 때도 데이터파일에 대한 기본적인 정합성 검사를 수행할 수 있다.

tbdv 유틸리티는 데이터 블록 각각에 대해 다음의 사항을 체크한다.

  • 블록에 DBA가 올바로 적혀있는지
  • 블록의 체크섬이 일치하는지
  • 블록의 가용공간과 실제 사용한 공간을 더한 것이 블록크기와 일치하는지
  • 블록에 들어가는 row-piece들이 서로의 영역을 침범하지 않고 들어가있는지

이러한 사항들 중 한개라도 정합성 검사에 실패한다면 미디어 장애로 판단할 수 있으며 media recovery를 수행하여 데이터베이스를 복구하여야 한다.

6.2. 빠른 시작

tbdv 유틸리티는 Tibero를 설치하는 과정에서 함께 설치되며, Tibero를 제거하면 함께 제거된다.

tbdv 유틸리티는 명령 프롬프트에서 다음과 같은 형식으로 실행한다.

$ tbdv [-s BLKSIZE] [-l CHECK_LENGTH] /path/to/datafile

명령 프롬프트에서는 옵션으로 블록 크기를 지정할 수 있으며 기본은 8192바이트이다.

파일의 앞쪽 일부분만 체크하고 싶은 경우 CHECK_LENGTH를 지정하는 옵션을 사용할 수 있다. 지정하지 않은 경우 파일 전체에 대해서 체크를 진행하게 된다. RAW Device의 경우 명시적으로 RAW Device의 크기를 입력해야하며, 입력하지 않은 경우 에러를 발생시키게 된다.

다음은 tbdv 유틸리티를 실행하는 예이다.

[예 6.1] tbdv 유틸리티의 실행

$ tbdv df1.dtf
==================================================================
= Database Verifier (DV) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
Verifying 'df1.dtf'...
 
 
Verifying complete.
 
Total blocks: 1152
Processed blocks: 1063
Empty blocks: 89
Corrupt blocks: 0      

6.3. 수행 예제

본 절에서는 정상적인 데이터파일 및 정합성이 깨진 블럭이 있는 데이터파일들에 대해 각각 tbdv 유틸리티가 어떻게 정합성 오류를 발견하는지 살펴본다.

데이터 블록의 dba가 적혀있는 부분에 장애를 일으키면 dv는 다음과 같은 결과를 출력한다.

[예 6.2] DBA가 잘못됐을 때 dv의 출력

$ tbdv df1.dtf
==================================================================
= Database Verifier (DV) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
Verifying 'df1.dtf'...

block #2351 is misplaced.dba differs (expected=16779567, real=16779551)

Verifying complete.

Total blocks: 2433
Processed blocks: 2343
Empty blocks: 90
Corrupt blocks: 1      

데이터파일에서 fractured block을 발견했을때는 데이터 블록이 consistent하지 않다는 결과를 출력한다.

[예 6.3] Fractured block(Inconsistent block)을 발견했을 때 dv의 출력

$ tbdv df1.dtf
==================================================================
= Database Verifier (DV) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
Verifying 'df1.dtf'...

block #2311 isn't consistent.

Verifying complete.

Total blocks: 2433
Processed blocks: 2343
Empty blocks: 90
Corrupt blocks: 1      

데이터 블록의 남은공간을 기재하는 부분이 블록 크기에서 실제로 사용한 공간의 차이와 불일치 할 경우 dv의 출력은 다음과 같다.

[예 6.4] 블록의 빈 공간이 실제 사용한 공간과 정합성이 맞지 않는 경우 dv의 출력

$ tbdv df1.dtf
==================================================================
= Database Verifier (DV) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
Verifying 'df1.dtf'...

block #2004 has incorrect freespace.

Verifying complete.

Total blocks: 2433
Processed blocks: 2343
Empty blocks: 90
Corrupt blocks: 1      

참고

tbdv 유틸리티는 수행과정에서 zero-out된 블록은 포맷이 안되었다고 간주하기 때문에 실제로 디스크에 장애가 발생하여 데이터가 써진 블록이 zero-out되는 현상이 발생하여도 tbdv는 블록이 포맷되지 않았다고 판단하고 (즉, 아직 데이터파일에서 할당되지 않은 부분) 에러를 출력하지 않으므로 사용에 주의한다.