본문 바로가기

Note

[관리] db2dart 와 db2 inspect

“데이터 무결성”을 확인하는 방법으로 DB2에서 제공하는 툴들이다. db2dart는 DB가 비활성화(offline)일 때 사용 가능하고, db2 inspace는 DB가 활성화된 상태에서 사용된다는 점이 사용 상 차이점일 듯 하다.

 

두 개의 툴이 사용되는 경우는 DB가 활성화되지 않는 상황이거나, 진단로그(db2diag.log)에 bad page 오류가 발생할 때 사용이 될 뿐 보통의 경우에는 사용하지 않는다. 필자의 경우도 많이 사용해 본 도구들은 아니다.

 

데이터 무결성 확인이외에도 두 개의 도구는 기능상 약간의 차이점이 있다.

(1) db2dart

    - 데이터 추출 기능

    - 테이블 공간의 고수위 마크(HWM)를 떨어뜨리는 기능

    - 유효하지 않는 색인(index) 고치기 기능

 

(2) db2 inspect

    - 압축된 테이블의 “압축으로 인한 스토리지 절감률” 확인

 

 

개인적으로는 DB가 접속되지 않는 상황에서 “테이블공간 목록과 콘테이너 정보”를 확인하고 싶었던 경우가 있다.

(경로재지정 복구를 하고자 함 이였는지, 특정 테이블공간에 대한 정보를 통하여 DB rebuild 복원을 하려고 했었던 것인지는 기억나지 않지만..)

 

이런 경우 db2dart 의 옵션 /ATSC 나 /DTSF 를 사용하면 “스토리지 그룹 정보”, “테이블 공간 정보”, “콘테이너 정보”들을 확인할 수 있다.

 

사용 예 (두 도구의 실행 결과는 db2diag.log가 있는 위치에 결과 파일이 생성된다)

$> db2dart sample /DTSF

Action option: DTSF

Connecting to Buffer Pool Services...

      Storage group file (automatic storage) report phase start.

      Header version:            0
      Header flavour:            1
      Number of storage groups:  1
      Checksum:                  0x0b050154

      Storage group ID:          0
      Storage group name:        DBSTORAGE
      Flavour:                   3
      Version:                   0
      State flags:               0x0000000000000000
      Last LSN:                  0x0000000000000000
      Initial LSN:               0x0000000000000000
      Next path ID:              1
      Checksum:                  0x193a7a22

      Number of storage paths:   1
      Storage path # 0:          /db2/instance/db2inst (id = 0, state = 0x0)

      Storage group file (automatic storage) report phase end.


      Tablespace file report phase start.
      Tablespace information for current database:
      --------------------------------------------


      Number of defined tablespaces:  8
      High water mark of used pools:  7
      Number of disabled tablespaces: 0

      Individual tablespace details:
      -------------------------------

      Information for Tablespace ID: 0

      (생략)

 

$> db2dart sample /LHWM
2 48   (tablespace ID 및 페이지 크기 지정)

The requested DB2DART processing has completed successfully!
Complete DB2DART report found in:/db2/instance/db2inst/sqllib/db2dump/DART0000/SAMPLE.RPT

High water mark:  1952 pages, 61 extents (extents #0 - 60)


Lower high water mark processing - phase start.
     Current high water mark:                    60
     Desired high water mark:                    1
     Number of used extents in tablespace:       57
     Number of free extents below original HWM:  4
     Number of free extents below desired HWM:   0
     Number of free extents below current HWM:   4


Final high water mark:  Extent #56 (57 extents, 1824 pages).

** This cannot be lowered further as there are not enough free extents
   to move the object holding the high water mark.

 

$> db2 "inspect check database results keep db.inspect"
$> cd ~/sqllib/db2dump
$> db2inspf db.inspect db.db2infp -e -s –w

 

DB에 bad page 오류가 발생을 하는 경우 진단로그에 tablespace id 및 object id 들이 기록이 된다.

db가 비활성상태라면 db2dart를 통하여 tablespace id 및 object id를 지정하여 결과 파일을 통하여 page 오류를 확인할 수 있을 것이고,

db가 온라인 상태라면 db2 inspect 를 통하여 “데이터 무결성’을 점검할 수 있을 것 같다.

 

본 도구들을 많이 사용해 봤다면, 특정 주제를 가지고 설명을 했을텐데 둘러보기 식으로 해당 도구에 대한 소개를 마친다.