개요
tbdv는 Tibero 데이터 파일 블록에 대한 정합성을 검사하는 유틸리티입니다.
운영 중 딕셔너리 테이블 조회가 불가능하거나 DB가 정상적으로 기동하지 않는 경우, 데이터 파일에 대한 블록 단위 정합성 여부를 확인할 수 있습니다.
tbdv 제약 조건
•
온라인 상태에서 tbdv 사용 시, DBWR가 블록을 쓰는 도중 낮은 확률로 정상 블록을 손상된 블록으로 잘못 인식할 수 있습니다.
•
디스크 장애 발생 시, 데이터가 저장된 블록이 zero-out(0으로 초기화) 되어도 블록 포맷이 이루어지지 않은 것으로 간주되어 오류 메시지를 출력하지 않습니다.
•
Nologging 방식으로 적재된 블록은 장애 발생 시에도 TBDV에서 검출되지 않습니다.
•
[IMS-98074] Raw Device를 사용할 경우, 체크 사이즈를 명시가 필요합니다.
(Option : -l <Raw Device Size>)
방법
tbdv 교체 방법
Technet에서 다운로드 받아 $TB_HOME/client/bin 디렉토리에서 교체하여 사용합니다.
1.
Tibero Technet 접속
-Technet > 다운로드 > 데이터베이스 > Tibero > Tibero Trouble Shooting Tools > 다운로드
2.
Tibero Trouble Shooting Tools 플랫폼 선택 > Linux > tbdv 다운로드
3.
Tibero 서버 접속 > 아래 디렉토리로 이동 후 다운받은 파일 업로드 및 교체
-. 기존 파일 백업
$ cp $TB_HOME/client/bin/tbdv $TB_HOME/client/bin/tbdv.bak
-. 신규 파일 덮어쓰기
$ mv tbdv $TB_HOME/client/bin/
$ chmod +x $TB_HOME/client/bin/tbdv
SQL
복사
tbdv 사용 방법
tbdv 사용하여 데이터 파일을 검증하는 방법에 대한 예시입니다.
$ tbdv [옵션] <datafile 경로>
-. 예시
$ tbdv -s 8192 /path/to/datafile
SQL
복사
$ tbdv
.==================================================================
.= Database Verifier (DV) starts =
.= =
.= TmaxTibero Corporation Copyright (c) 2020-. All rights reserved. =
.==================================================================
Usage: tbdv [options] <fpath>
<fpath> path to datafile to verify
Options:
-s data block size (default: 8192)
-m multi block read count (default: 1)
-l the number of bytes to be checked
-f check if space management information is consistent. (default: 1)
SQL
복사
주의
Raw Device를 사용하는 경우에는 -l 옵션이 필수입니다.
예) tbdv '<데이터 파일 경로>' -l <Raw Device 크기>
tbdv 옵션
옵션 | 설명 |
-s | 블록 크기 (default : 8192byte) |
-m | 디스크에서 한번에 읽는 블록 수 (default: 1) |
-l | 파일의 시작 부분부터 몇 바이트를 체크할 것인지 명시 (Default : 파일 전체 체크)최소 단위는 K부터 시작
(ex : 8K)-l {옵션 값}/블럭 사이즈 = 정합성 검사할 블록의 개수 |
-f | L1 bitmap block에 대한 정합성 검사를 진행하고 총 개수 산정 (default: 1) |
tbdv 체크 항목
tbdv 실행 시 아래 에러가 출력되면 해당되는 블록의 덤프를 같이 생성해야 원인 파악에 용이합니다.
1.
데이터 블록의 Format 여부 검사
2.
블록의 DBA 확인 (일치하지 않을 시 아래와 같은 에러 발생)
block #<block_no> is misplaced dba differs (expected=<relative file id + blkno>, real= blk→dba)
SQL
복사
3.
블록의 Checksum 일치 여부 확인
block #<block_no> isn’t consistent.
SQL
복사
4.
블록의 Free space 확인
block #<block_no> has incorrect freespace.
SQL
복사
5.
블록 Row-Piece 영역이 서로 중첩 되었을 시
block #<block no> has overlapping or pieces.
SQL
복사