DBMS 2

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

데이터베이스 운영

DBMS 2
DB2 가이드
DB2 사용자 가이드
데이터베이스 운영
작성자
admin
작성일
2021-02-19 13:52
조회
1536

데이터베이스 운영

일반적인 운영 방법

①REORGCHK, REORG TABLE, REORG INDEXES, RUNSTATS, REBIND 등의 유틸 리티를 이용하여 데이터베이스의 구조가 최적화되었는지 정기적으로 점검합니다.

db2

②DB2 사용자로 로그인하여 데이터베이스에 접속합니다.


$ login DB2 사용자> $ db2 connect to 데이터베이스명>

③REORGCHK 명령어는 테이블과 인덱스의 재구성 필요 여부를 판별합니다.


$ db2 reorgchk on table 스키마명>.테이블명>

④재구성이 필요하다고 판별되면 REORG TABLE 명령어와 REORG INDEX 명령어를 이용하 여 테이블과 인덱스를 재구성합니다.


$ db2 reorg table 스키마명>.테이블명> $ db2 reorg index 스키마명>.인덱스명>

⑤REORG 명령어를 실행한 후에는 반드시 RUNSTATS 명령을 이용하여 시스템 카탈로그의 통 계 자료를 갱신합니다.


$ db2 runstats on table 스키마명>.테이블명> and indexes all

⑥시스템의 통계 자료가 갱신되면, 더 적합한 액세스 플랜이 생성되도록 모든 패키지를 갱신합니다


$ db2rbind 데이터베이스명> /l 로그파일명> all
REORGCHK 명령어

①REORGCHK 명령어는 8가지 판별식으로 테이블과 인덱스의 재구성 필요 여부를 판별합니다.

db2

②현재의 통계 자료를 유지한 상태로 재구성 필요 여부를 점검합니다. 옵션을 지정하지 않으면, 기 본값인 UPDATE STATISTICS 가 적용되므로 자동으로 RUNSTATS 명령어가 실행됩니다.


$ db2 reorgchk CURRENT STATISTICS on table 스키마명>.테이블명>

③특정한 스키마명>을 가지는 테이블들에 대해서 재구성 필요 여부를 점검합니다.


$ db2 reorgchk ON SCHEMA 스키마명>

④시스템 카탈로그 테이블에 대해서만 재구성 필요 여부를 점검합니다.


$ db2 reorgchk ON TABLE SYSTEM

⑤모든 테이블에 대해서 재구성 필요 여부를 점검합니다.


$ db2 reorgchk ON TABLE ALL

⑥특정 테이블에 대해서 재구성 필요 여부를 점검합니다.


$ db2 reorgchk ON TABLE 스키마명>.테이블명>

db2


재구성 필요 여부 판별 방법

테이블에 대한 3가지 판별식을 이용하여 테이블의 재구성 필요 여부를 판별합니다.

db2

인덱스에 대한 5가지 판별식을 이용하여 인덱스의 재구성 필요 여부를 판별합니다.

db2


REORG TABLE 명령어

①REORG TABLE 명령어로 테이블의 데이터를 물리적으로 재배치하고, 인덱스를 재 생성합니 다.

db2

②테이블은 기본적으로 클러스터 인덱스를 기준으로 재구성됩니다. INDEX 옵션을 지정하면 특정 인덱스의 정렬 순서를 기준으로 재구성합니다. 클러스터 인덱스가 없거나 INDEX 옵션을 지정 하지 않으면, 데이터는 임의의 순서로 재구성됩니다.


$ db2 reorg table 스키마명>.테이블명> index 스키마명>.인덱스명>

③재구성할 테이블의 복사본을 저장할 임시 테이블스페이스를 지정합니다. 지정하지 않으면 테이 블이 저장된 테이블스페이스에 복사본을 생성하게 됩니다.


$ db2 reorg table 스키마명>.테이블명> USE 시스템 임시 테이블스페이스명>

④테이블을 재구성하는 동안 다른 사용자는 테이블에 대한 액세스 범위를 제한 받습니다. 액세스 허용 범위는 ALLOW 옵션의 2가지의 모드로 조절합니다.

db2


$ db2 reorg table 스키마명>.테이블명>
$ db2 reorg table 스키마명>.테이블명> ALLOW NO ACCESS

⑤INPLACE 옵션을 사용하여 온라인 모드로 테이블을 재구성하면, 재구성이 진행되는 동안에 테 이블의 쓰기 액세스를 허용할 수 있습니다. START, STOP, PAUSE, RESUME 옵션을 이용하 여 온라인 재구성 작업을 중단시키고 옵션을 변경한 후에 다시 계속할 수 있습니다.

$ db2 reorg table 스키마명>.테이블명> INPLACE ALLOW READ ACCESS
START
$ db2 reorg table 스키마명>.테이블명> INPLACE PAUSE
$ db2 reorg table 스키마명>.테이블명> inplace ALLOW WRITE ACCESS
NOTRUNCATE RESUME $ db2 reorg table 스키마명령어

①REORG INDEXES 명령어로 인덱스를 재 생성하거나, 데이터가 삭제된 공간을 반환합니다.

db2

②인덱스를 재구성하는 동안 다른 사용자는 테이블에 대한 액세스 범위를 제한 받습니다. 액세스 허용 범위는 ALLOW 옵션의 3가지의 모드로 조절합니다.

db2


$ db2 reorg indexes all for table 스키마명>.테이블명>
$ db2 reorg indexes all for table 스키마명>.테이블명> ALLOW NO
ACCESS $ db2 reorg indexes all for table 스키마명>.테이블명> ALLOW WRITE ACCESS

③인덱스를 재구성하는 작업은 실제로 인덱스를 재 생성하는 작업입니다. CLEANUP ONLY 옵 션으로 인덱스를 재 생성하지 않고, 데이터가 삭제된 영역들을 동일한 테이블의 다른 인덱스가 사용할 수 있도록 할 수 있습니다. CLEANUP ONLY 옵션은 2 가지 모드를 지원합니다.

db2

④CONVERT 옵션으로 type-1 인덱스를 type-2 인덱스로 변환할 수 있습니다


$ db2 reorg indexes all for table 스키마명>.테이블명> CONVERT
RUNSTATS 명령어

①RUNSTATS 명령어로 수집된 데이터베이스에 대한 통계 자료를 시스템 카탈로그에 반영합니다

db2

②특정 테이블에 대한 통계 자료를 갱신합니다.


$ db2 runstats on table 스키마명>.테이블명>

③특정 테이블의 인덱스에 대한 통계 자료만 갱신할 때에는 FOR INDEXES ALL 또는 FOR INDEX 옵션을 사용합니다.


$ db2 runstats on table 스키마명>.테이블명> FOR INDEXES ALL
$ db2 runstats on table 스키마명>.테이블명> FOR INDEX 스키마명>.인덱 스명>

④특정 테이블과 인덱스에 대한 통계 자료를 모두 갱신할 때에는 AND INDEX 옵션 또는 AND INDEXES ALL 옵션을 사용합니다.


$ db2 runstats on table 스키마명>.테이블명> AND INDEXES ALL
$ db2 runstats on table 스키마명>.테이블명> AND INDEX 스키마명>.인덱 스명>

⑤DETAILED 옵션을 이용하면 인덱스에 대한 상세한 통계 자료를 갱신합니다.


$ db2 runstats on table 스키마명>.테이블명> for DETAILED indexes all
$ db2 runstats on table 스키마명>.테이블명> and DETAILED indexes all

⑥WITH DISTRIBUTION 옵션으로 기본 통계 자료와 컬럼값의 분포에 대한 통계 자료를 함께 수 집하여 시스템 카탈로그에 반영할 수 있습니다.


$ db2 runstats on table 스키마명>.테이블명> WITH DISTRIBUTION

⑦ALLOW READ ACCESS 옵션은 통계 자료를 갱신하는 동안 쓰기 액세스를 차단합니다.


$ db2 runstats on table 스키마명>.테이블명> ALLOW READ ACCESS

⑧대용량 테이블의 경우, 일부의 Page만 Sampling하여 통계정보를 수집합니다. (예제 1%)


$ db2 runstats on table 스키마명>.테이블명> AND INDEXES ALL
TABLESAMPLE SYSTEM (1)"
액세스 플랜 갱신

①SQL문에 대한 액세스 플랜은 시스템 카탈로그의 패키지에 저장됩니다. list packages 명령 어를 이용하여 패키지에 대한 현재 상태를 확인하면, VALID 항목에 패키지의 상태에 따라 Y(정상), N(무효), X(작동 불능) 중에 한 가지가 표시됩니다.

db2

②패키지 상태는 3가지로 분류되며, 정상 상태가 아닌 경우에는 리바인드가 필요합니다.

db2

③list packaes 명령어를 이용하여 패키지에 대한 현재 상태를 확인하면, VALID 항목에 패키 지의 상태에 따라 Y(정상), N(무효), X(작동 불능) 중에 한 가지가 표시됩니다.


$ db2 list packages

db2


REBIND 명령어

①최신의 데이터베이스에 대한 통계 자료를 기반으로 기 작성된 패키지의 액세스 플랜을 갱신합니

db2

②옵션에 대한 설명은 아래와 같습니다.

db2

③rebind 명령어를 이용하여 패키지를 갱신합니다.


$ db2 rebind 스키마명>.패키지명> RESOLVE ANY REOPT ONCE

④db2rbind 명령어는 특정 데이터베이스에 있는 모든 패키지의 액세스 플랜을 한꺼번에 갱신합 니다. 로그파일명>은 임의로 지정합니다.


$ db2rbind 데이터베이스명> /l 로그파일명> all