본 장에서는 tbdv 유틸리티를 소개하고 사용 방법을 설명한다.
tbdv는 Tibero 데이터베이스의 데이터파일에 대한 정합성을 검사하는 간단한 유틸리티이다. 이 유틸리티를 통해 데이터베이스가 오프라인일 때도 데이터파일에 대한 기본적인 정합성 검사를 수행할 수 있다.
tbdv 유틸리티는 데이터 블록 각각에 대해 다음의 사항을 체크한다.
이러한 사항들 중 한개라도 정합성 검사에 실패한다면 미디어 장애로 판단할 수 있으며 media recovery를 수행하여 데이터베이스를 복구하여야 한다.
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
본 절에서는 정상적인 데이터파일 및 정합성이 깨진 블럭이 있는 데이터파일들에 대해 각각 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는 블록이 포맷되지 않았다고 판단하고 (즉, 아직 데이터파일에서 할당되지 않은 부분) 에러를 출력하지 않으므로 사용에 주의한다.