> For the complete documentation index, see [llms.txt](https://docs.tibero.com/tibero-manuals/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tibero.com/tibero-manuals/7.2.6.manuals/utility-guide/tbdv.md).

# tbdv

Tibero DBMS 데이터 정합성을 검사하는 tbdv 유틸리티 사용 방법을 설명합니다.

## 개요

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

tbdv 유틸리티는 각 데이터 블록에 대해 다음 사항을 검사합니다.

* 블록에 DBA가 올바르게 기록되어 있는가?
* 블록의 체크섬이 일치하는가?
* 블록의 가용 공간과 실제 사용 공간의 합이 블록 크기와 일치하는가?
* 블록에 저장된 row piece들이 서로의 영역을 침범하지 않는가?

이러한 항목 중 하나라도 정합성 검사에 실패하면 미디어 장애로 판단할 수 있습니다. 이 경우 media recovery를 수행하여 데이터베이스를 복구해야 합니다.

## 빠른 시작

tbdv 유틸리티는 Tibero를 설치하는 과정에서 함께 설치되며, Tibero를 제거하면 함께 제거됩니다. tbdv 유틸리티는 명령 프롬프트에서 다음과 같은 형식으로 실행합니다.

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

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

파일의 앞부분만 검사하려면 CHECK\_LENGTH 옵션을 사용할 수 있습니다. 지정하지 않으면 파일 전체를 검사합니다. RAW 디바이스의 경우 크기를 명시적으로 입력해야 합니다. 입력하지 않으면 오류가 발생합니다.

아래는 tbdv 유틸리티를 실행하는 예입니다.

**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는 다음과 같은 결과를 출력합니다.

**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하지 않다는 결과를 출력합니다.

**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는 다음과 같은 결과를 출력합니다.

**블록의 빈 공간이 실제 사용한 공간과 정합성이 맞지 않는 경우 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
```

{% hint style="warning" %}
tbdv 유틸리티는 수행 과정에서 제로 아웃된 블록을 포맷되지 않은 블록으로 간주합니다.\
따라서 디스크 장애로 데이터가 기록된 블록이 제로 아웃되더라도 tbdv는 해당 블록을 포맷되지 않은 블록으로 판단합니다. 즉, 데이터 파일에서 아직 할당되지 않은 영역으로 간주하므로 오류를 출력하지 않습니다. 사용 시 주의해야 합니다.
{% endhint %}
