유닉스의 “Cron”, 윈도우의 “예약된 작업”을 사용하여 DB2 관리 작업을 자동화 한다. 보통은 OS의 스케줄링 기능을 이용하는데, DB2 자체에서도 기능이 있는지 문의를 받는 경우가 있다.

기능은 있다. 그러나 권장하지는 않는다.(왜 권장하지 않는지는 글을 읽으면 알게 될 것이다.)

DB2 자체의 작업 스케줄링 기능을 어떻게 설정할 수 있는지 살펴 보자.

Windows에서도 DAS (DB2 Administration Server)라는 용도로 계정을 설치할 때 묻는다. Unix나 Linux 에서는 OS 계정으로 인스턴스나 DAS를 생성하기 때문에 설치 작업 하면서 DAS를 왜 만들어야 하는지 의문을 많이 가졌을 것이다.

이 DAS 가 하는 주 업무가 DB2의 작업 스케줄링을 해주는 것이라 보면 되겠다. 물론 DAS의 개념? 역할?은 이것으로 한정되지는 않는다.

1. 도구 카탈로그 설정

   인스턴스가 dbm cfg 라는 구성 변수를 가지고 있듯이 das도 자체 구성 변수를 가지고 있다. 앞으로 기술되는 명령어는 인스턴스 계정으로 실행하면 확인할 수 있다.

   아무런 설정 작업을 하지 않았다면 다음과 같이 결과가 나온다.

명령어 >>
$> db2 get admin cfg

결과  >>

Administration Server 구성

Location of Contact List (CONTACT_HOST) =

Execute Expired Tasks (EXEC_EXP_TASK) = NO

Scheduler Mode (SCHED_ENABLE) = OFF

SMTP Server (SMTP_SERVER) =

Tools Catalog Database (TOOLSCAT_DB) =

Tools Catalog Database Instance (TOOLSCAT_INST) =

Tools Catalog Database Schema (TOOLSCAT_SCHEMA) =

Scheduler User ID =

도구 카탈로그가 되었다면 다음처럼 몇 개의 변수에 값이 들어가 있을 것이다.

Administration Server 구성

문의처 목록 위치(CONTACT_HOST) =

실행 만기 태스크(EXEC_EXP_TASK) = NO

스케줄러 모드(SCHED_ENABLE) = ON

SMTP 서버(SMTP_SERVER) =

데이터베이스 카탈로그 도구(TOOLSCAT_DB) = TOOLSDB

데이터베이스 카탈로그 인스턴스 도구(TOOLSCAT_INST) = DB2

데이터베이스 카탈로그 스키마 도구(TOOLSCAT_SCHEMA) = SYSTOOLS

도구 카탈로그 작업을 하기 전에 다음처럼 해당 변수 값을 초기화 한다.

명령어 >>
db2 update admin cfg using SCHED_ENABLE off TOOLSCAT_DB null TOOLSCAT_INST null TOOLSCAT_SCHEMA null

결과  >>
DB20000I The UPDATE ADMIN CONFIGURATION command completed successfully.

도구 카탈로그 작업을 한다.

- 스케줄링:ON

- 도구 카탈로그 DB명: sample

- 도구 카탈로그 인스턴스명: inst97

- 도구 카탈로그 스키마명: systools

명령어 >>
$> db2 update admin cfg using SCHED_ENABLE on TOOLSCAT_DB sample TOOLSCAT_INST inst97 TOOLSCAT_SCHEMA systools

$> db2admin stop       ( Unix, Linux 시스템에서는 das 계정으로 실행)
$> db2admin start       ( Unix, Linux 시스템에서는 das 계정으로 실행)
$> db2 get admin cfg

결과  >>

           Admin Server Configuration

Authentication Type DAS                (AUTHENTICATION) = SERVER_ENCRYPT

DAS Administration Authority Group Name  (DASADM_GROUP) =

DAS Discovery Mode                           (DISCOVER) = SEARCH
Name of the DB2 Server System               (DB2SYSTEM) = LOCALHOST

Java Development Kit Installation Path DAS   (JDK_PATH) = AUTOMATIC (/home/inst97/sqllib/java/jdk64)
Java Development Kit Installation Path DAS   (JDK_64_PATH) = AUTOMATIC (/home/inst97/sqllib/java/jdk64)

DAS Code Page                            (DAS_CODEPAGE) = 0
DAS Territory                           (DAS_TERRITORY) = 0

Location of Contact List                 (CONTACT_HOST) =
Execute Expired Tasks                   (EXEC_EXP_TASK) = NO
Scheduler Mode                           (SCHED_ENABLE) = ON
SMTP Server                               (SMTP_SERVER) =
Tools Catalog Database                    (TOOLSCAT_DB) = sample
Tools Catalog Database Instance         (TOOLSCAT_INST) = inst97
Tools Catalog Database Schema         (TOOLSCAT_SCHEMA) = systools
Scheduler User ID                                       =

“도구 카탈로그 작업”시 데이터베이스 선택은 원격지의 것이던, 운영되는 시스템의 것이던 상관없다. 이와 관련된 자세한 설정은 정보 센터를 참고하면 될 것 같다.

http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.admin.cmd.doc/doc/r0008881.html

이 후의 작업은 GUI 도구인 “Task Center”를 이용하여 진행한다.

2. 작업 스케줄링 설정

(1) 태스크 센터에서 “새로 작성”을 선택한다.

(2) 태스크 이름, 명령어 유형 등등을 선택, 기입한다.

(3) 실행할 스크립트를 “명령 스크립트” 탭에 작성한다.

(4) 작업 스케줄링 설정

(5) 사용자 권한 설정 및 확인

(6) 생성한 task 실행 테스트

db2 백업 이미지가 생성되었다. 이제 시간 설정하여 주기적으로 실행되도록 설정만 하면 되겠다.

3. 작업 기록 확인하기

(1) 저널 실행

(2) 실행 기록 목록

(3) 실행 기록 확인

도구 카탈로그를 하는 이유는 “스케줄링 설정 정보”를 “기록”하고, 실행 이력을 관리할 저장소를 설정하는 작업이다.

가끔 GUI 기반으로 DB2 설치 작업을 하다 보면 “도구 카탈로그” 를 할 것이냐는 화면을 본 적이 있을 것이다. 만일 선택을 하게 되면 “TOOLSDB”라는 데이터베이스가 생성되고 이 데이터베이스는 이처럼 작업 스케줄링관련 정보를 저장하는 데이터베이스가 된다.

DB2를 사용하면서 TOOLSDB가 만들어진 경우를 봤을 것이다. 사용을 하던 하지 않던 설치 시 “도구 카탈로그” 선택하면서 생성이 되어진 결과이다.

운영 시스템에 “작업 스케줄링” 정보를 기록하도록 하는 경우는 없을 것 같다. 그렇다고 운영시스템에 이를 위한 별도의 TOOLSDB 데이터베이스를 생성하여 사용하지도 않을 것이다. (자원 낭비이기 때문에)

원격지에 DB2를 스케줄링 작업을 하는 용도로 사용한다고 해도, DB2 엔진이 설치되어져야 하고 데이터베이스가 있어야 한다. 스케줄링 하기 위해 작업을 많이 필요로 한다.

이런 번거로운 작업하느니 편하게  Cron이나 "예약된 작업”을 설정하여 OS상에서 실행되도록 하는 것이 번거로운 설정/구성 작업도 없고, 관리 포인트를 불 필요하게 가져가지 않는 것이 현명할 것이다. (해야 되고 관리해야 될 작업이 많은 DBA입장이라면 현실적으로 쓰지 못할 것이다.)

+ Recent posts