DBMS 2
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
①REORGCHK, REORG TABLE, REORG INDEXES, RUNSTATS, REBIND 등의 유틸 리티를 이용하여 데이터베이스의 구조가 최적화되었는지 정기적으로 점검합니다. ②DB2 사용자로 로그인하여 데이터베이스에 접속합니다. ③REORGCHK 명령어는 테이블과 인덱스의 재구성 필요 여부를 판별합니다. ④재구성이 필요하다고 판별되면 REORG TABLE 명령어와 REORG INDEX 명령어를 이용하 여 테이블과 인덱스를 재구성합니다. ⑤REORG 명령어를 실행한 후에는 반드시 RUNSTATS 명령을 이용하여 시스템 카탈로그의 통 계 자료를 갱신합니다. ⑥시스템의 통계 자료가 갱신되면, 더 적합한 액세스 플랜이 생성되도록 모든 패키지를 갱신합니다 ①REORGCHK 명령어는 8가지 판별식으로 테이블과 인덱스의 재구성 필요 여부를 판별합니다. ②현재의 통계 자료를 유지한 상태로 재구성 필요 여부를 점검합니다. 옵션을 지정하지 않으면, 기 본값인 UPDATE STATISTICS 가 적용되므로 자동으로 RUNSTATS 명령어가 실행됩니다. ③특정한 스키마명>을 가지는 테이블들에 대해서 재구성 필요 여부를 점검합니다. ④시스템 카탈로그 테이블에 대해서만 재구성 필요 여부를 점검합니다. ⑤모든 테이블에 대해서 재구성 필요 여부를 점검합니다. ⑥특정 테이블에 대해서 재구성 필요 여부를 점검합니다. 테이블에 대한 3가지 판별식을 이용하여 테이블의 재구성 필요 여부를 판별합니다. 인덱스에 대한 5가지 판별식을 이용하여 인덱스의 재구성 필요 여부를 판별합니다. ①REORG TABLE 명령어로 테이블의 데이터를 물리적으로 재배치하고, 인덱스를 재 생성합니 다. ②테이블은 기본적으로 클러스터 인덱스를 기준으로 재구성됩니다. INDEX 옵션을 지정하면 특정 인덱스의 정렬 순서를 기준으로 재구성합니다. 클러스터 인덱스가 없거나 INDEX 옵션을 지정 하지 않으면, 데이터는 임의의 순서로 재구성됩니다. ③재구성할 테이블의 복사본을 저장할 임시 테이블스페이스를 지정합니다. 지정하지 않으면 테이 블이 저장된 테이블스페이스에 복사본을 생성하게 됩니다. ④테이블을 재구성하는 동안 다른 사용자는 테이블에 대한 액세스 범위를 제한 받습니다. 액세스 허용 범위는 ALLOW 옵션의 2가지의 모드로 조절합니다. ⑤INPLACE 옵션을 사용하여 온라인 모드로 테이블을 재구성하면, 재구성이 진행되는 동안에 테 이블의 쓰기 액세스를 허용할 수 있습니다. START, STOP, PAUSE, RESUME 옵션을 이용하 여 온라인 재구성 작업을 중단시키고 옵션을 변경한 후에 다시 계속할 수 있습니다. ①REORG INDEXES 명령어로 인덱스를 재 생성하거나, 데이터가 삭제된 공간을 반환합니다. ②인덱스를 재구성하는 동안 다른 사용자는 테이블에 대한 액세스 범위를 제한 받습니다. 액세스 허용 범위는 ALLOW 옵션의 3가지의 모드로 조절합니다. ③인덱스를 재구성하는 작업은 실제로 인덱스를 재 생성하는 작업입니다. CLEANUP ONLY 옵 션으로 인덱스를 재 생성하지 않고, 데이터가 삭제된 영역들을 동일한 테이블의 다른 인덱스가 사용할 수 있도록 할 수 있습니다. CLEANUP ONLY 옵션은 2 가지 모드를 지원합니다. ④CONVERT 옵션으로 type-1 인덱스를 type-2 인덱스로 변환할 수 있습니다 ①RUNSTATS 명령어로 수집된 데이터베이스에 대한 통계 자료를 시스템 카탈로그에 반영합니다 ②특정 테이블에 대한 통계 자료를 갱신합니다. ③특정 테이블의 인덱스에 대한 통계 자료만 갱신할 때에는 FOR INDEXES ALL 또는 FOR INDEX 옵션을 사용합니다. ④특정 테이블과 인덱스에 대한 통계 자료를 모두 갱신할 때에는 AND INDEX 옵션 또는 AND INDEXES ALL 옵션을 사용합니다. ⑤DETAILED 옵션을 이용하면 인덱스에 대한 상세한 통계 자료를 갱신합니다. ⑥WITH DISTRIBUTION 옵션으로 기본 통계 자료와 컬럼값의 분포에 대한 통계 자료를 함께 수 집하여 시스템 카탈로그에 반영할 수 있습니다. ⑦ALLOW READ ACCESS 옵션은 통계 자료를 갱신하는 동안 쓰기 액세스를 차단합니다. ⑧대용량 테이블의 경우, 일부의 Page만 Sampling하여 통계정보를 수집합니다. (예제 1%) ①SQL문에 대한 액세스 플랜은 시스템 카탈로그의 패키지에 저장됩니다. list packages 명령 어를 이용하여 패키지에 대한 현재 상태를 확인하면, VALID 항목에 패키지의 상태에 따라 Y(정상), N(무효), X(작동 불능) 중에 한 가지가 표시됩니다. ②패키지 상태는 3가지로 분류되며, 정상 상태가 아닌 경우에는 리바인드가 필요합니다. ③list packaes 명령어를 이용하여 패키지에 대한 현재 상태를 확인하면, VALID 항목에 패키 지의 상태에 따라 Y(정상), N(무효), X(작동 불능) 중에 한 가지가 표시됩니다. ①최신의 데이터베이스에 대한 통계 자료를 기반으로 기 작성된 패키지의 액세스 플랜을 갱신합니 ②옵션에 대한 설명은 아래와 같습니다. ③rebind 명령어를 이용하여 패키지를 갱신합니다. ④db2rbind 명령어는 특정 데이터베이스에 있는 모든 패키지의 액세스 플랜을 한꺼번에 갱신합 니다. 로그파일명>은 임의로 지정합니다.데이터베이스 운영
데이터베이스 운영
일반적인 운영 방법
$ login DB2 사용자> $ db2 connect to 데이터베이스명>
$ db2 reorgchk on table 스키마명>.테이블명>
$ db2 reorg table 스키마명>.테이블명> $ db2 reorg index 스키마명>.인덱스명>
$ db2 runstats on table 스키마명>.테이블명> and indexes all
$ db2rbind 데이터베이스명> /l 로그파일명> all
REORGCHK 명령어
$ db2 reorgchk CURRENT STATISTICS on table 스키마명>.테이블명>
$ db2 reorgchk ON SCHEMA 스키마명>
$ db2 reorgchk ON TABLE SYSTEM
$ db2 reorgchk ON TABLE ALL
$ db2 reorgchk ON TABLE 스키마명>.테이블명>
재구성 필요 여부 판별 방법
REORG TABLE 명령어
$ db2 reorg table 스키마명>.테이블명> index 스키마명>.인덱스명>
$ db2 reorg table 스키마명>.테이블명> USE 시스템 임시 테이블스페이스명>
$ db2 reorg table 스키마명>.테이블명>
$ db2 reorg table 스키마명>.테이블명> ALLOW NO ACCESS
START
$ db2 reorg table 스키마명>.테이블명> INPLACE PAUSE
$ db2 reorg table 스키마명>.테이블명> inplace ALLOW WRITE ACCESS
NOTRUNCATE RESUME $ db2 reorg table 스키마명령어
$ db2 reorg indexes all for table 스키마명>.테이블명>
$ db2 reorg indexes all for table 스키마명>.테이블명> ALLOW NO
ACCESS $ db2 reorg indexes all for table 스키마명>.테이블명> ALLOW WRITE ACCESS
$ db2 reorg indexes all for table 스키마명>.테이블명> CONVERT
RUNSTATS 명령어
$ db2 runstats on table 스키마명>.테이블명>
$ db2 runstats on table 스키마명>.테이블명> FOR INDEXES ALL
$ db2 runstats on table 스키마명>.테이블명> FOR INDEX 스키마명>.인덱 스명>
$ db2 runstats on table 스키마명>.테이블명> AND INDEXES ALL
$ db2 runstats on table 스키마명>.테이블명> AND INDEX 스키마명>.인덱 스명>
$ db2 runstats on table 스키마명>.테이블명> for DETAILED indexes all
$ db2 runstats on table 스키마명>.테이블명> and DETAILED indexes all
$ db2 runstats on table 스키마명>.테이블명> WITH DISTRIBUTION
$ db2 runstats on table 스키마명>.테이블명> ALLOW READ ACCESS
$ db2 runstats on table 스키마명>.테이블명> AND INDEXES ALL
TABLESAMPLE SYSTEM (1)"액세스 플랜 갱신
$ db2 list packages
REBIND 명령어
$ db2 rebind 스키마명>.패키지명> RESOLVE ANY REOPT ONCE
$ db2rbind 데이터베이스명> /l 로그파일명> all