DBMS 2

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

성능 분석 툴 (DB 모니터링)

DBMS 2
DB2 가이드
DB2 성능가이드
성능 분석 툴(DB 모니터링)
작성자
admin
작성일
2021-02-19 15:06
조회
4506

성능 분석 툴 (데이터베이스 모니터링)

필요한 모니터링 정보를 얻기 위해서는 다양한 방법들이 있다. 이 방법들은 DB2 유틸리티, 즉 Explain 유틸리티, 스냅샷 모니터, 이벤트 모니터를 사용하는 것을 포함한다. 다음은 Explain 유틸리티와 데이터베이스 모니터가 제공하는 정보에 대한 설명이다.


  • 만약 DB2의 운영, 성능, 응용프로그램에 대한 정보를 수집하기를 원한다면, 스냅샷이나 이벤트 모니 터를 사용한다. 이 데이터는 DB2가 수행될 때 유지되고, 성능과 문제해결을 위한 중요한 정보로 제공 된다.
  • 만약 하나 또는 그룹의 SQL 문장에 대한 액세스 플랜을 분석하고자 한다면, Explain 유틸리티를 사용 한다.

여기서는 Explain 유틸리티, 스냅샷 모니터, 이벤트 모니터, 그래픽 성능 모니터를 사용하여 데이터를 수집하는 방법과 수집된 정보를 해석하는 방법에 대해 살펴본다.

DB2 모니터는 자원 사용의 자세한 정보를 수집하기 위해 사용된다. 모니터링 활동은 DB2 클라이언트 또는 DB2 서버에서 수행되어질 수 있다. 모니터 인터페이스는 CLP 명령어, 그래픽 성능 모니터, 모니터링 API를 이용하여 호출된다. 또한 DB2는 다른 종류의 모니터링을 제공한다. 즉 모니터링 데이터를 수집하는 방법이 다르다.


  • 스냅샷 모니터링은 특정 시점에서의 데이터베이스 활동에 관한 정보를 제공한다. DB2 활동의 현재 상 태에 대한 그림이다. 스냅샷을 취했을 때 사용자에게 리턴되는 정보의 양은 사용하는 모니터 스위치 에 의해 결정된다. 이 스위치들은 인스턴스 또는 응용프로그램 레벨에서 설정할 수 있다.
  • 이벤트 모니터링은 DB2 이벤트의 특정 사건의 발생을 기록한다. 이것은 교착 상태, 연결, SQL문장들 을 포함한 일시적인 이벤트에 대한 정보를 수집하도록 한다.
스냅샷 모니터링

스냅샷 모니터는 카운터의 형태로 누적 정보를 제공한다. 이 카운터는 재설정될 수 있다. 스냅샷 정보는 snapshot 명령어를 발행하는 응용프로그램에 의해서 조사될 수 있는 특별한 구조로 제공된다.

스냅샷 모니터에 의해 리턴되는 데이터의 양은 스위치에 따라 설정된다. 모니터 스위치들이 제공하는 정보는 다음과 같다.

표 1-1. 스냅샷에 의해 리턴되는 데이터


표 1-1. 스냅샷에 의해 리턴되는 데이터

모니터 스위치는 인스턴스 (DBM 구성) 레벨 또는 응용프로그램 레벨에서 온(On), 오프(Off)된다 (UPDATE MONITOR SWITCHES 명령어를 사용하여). 스냅샷 모니터는 모니터 스위치 설정값과 관계없이 수집되어 제공하는 기본 정보가 있다. 모니터 스위치에 대한 인스턴스 구성 매개변수를 설정하는 것은 인스턴스내에 있는 모든 데이터베이스에 영향을 미친다. 데이터베이스에 연결하는 모든 응용프로그램은 DBM 구성내에 설정된 기본 스위치값을 상속받는다. 예를 들어 DB2에서 수행하는 SQL 문장들에 대해 자세한 정보를 수집하기 위해서는 다음의 명령어를 수행해야 한다.

UPDATE DBM CONFIGURATION USING DFT_MON_STMT ON

또는 선택적으로 이 명령어를 사용할 수 있다.

UPDATE MONITOR SWITCHES USING STATEMENT ON

UPDATE DBM CONFIGURATION 명령어는 데이터베이스 관리자 구성을 수정한다. 그러므로, SQL 문장 정보는 인스턴스내에 있는 모든 데이터베이스들을 액세스하는 응용프로그램들에 대해 수집된다. 그러나, UPDATE MONITOR SWITCHES 명령어는 스위치를 활성화한 응용프로그램에 대한 SQL 문장만을 수집한다 (예를 들어, 응용프로그램은 CLP일 수 있다).

1) 스냅샷 모니터 데이터 조회

모니터 스위치가 온(On) 될 때, 모니터 데이터는 수집되기 시작한다. 모니터 데이터를 조회하기 위해서는 스냅샷을 수행해야 한다. 스냅샷은 DB2 명령어 GET SNAPSHOT를 사용하여 요청한다. 이 명령어는 다른 방법으로 수행될 수 있다. 명령 센터 GUI 툴, 적당한 API를 사용한 응용프로그램내에서 수행될 수 있고, 명령 센터, CLP, 성능 모니터에 의해 수행될 수 있다. 그래픽 성능 모니터는 제어 센터 GUI 툴과 통합되어 있다.

스냅샷 모니터에 사용되는 모니터링 레벨은 다음과 같다.


  • 데이터베이스 관리자 - 활동중인 인스턴스에 대한 정보 수집
  • 데이터베이스 - 데이터베이스 정보 수집
  • 응용프로그램 - 응용프로그램 정보 수집
  • 버퍼 풀 - 버퍼 풀 활동 정보 수집
  • 테이블 공간 - 데이터베이스내의 테이블 공간 정보 수집
  • 테이블 - 데이터베이스내의 테이블 정보 수집
  • 잠금 - 데이터베이스에 대해 응용프로그램에 의해 걸린 잠금 정보 수집
  • 동적 SQL - 데이터베이스에 대한 SQL 문장 캐쉬로부터 특정시점의 문장 정보 수집

스냅샷 모니터 스위치와 레벨은 스냅샷을 했을 때 다른 모니터링 정보를 제공하기 위해 조합된다. 스위치와 레벨은 매우 근접하게 관련되어 있다. 적당한 모니터 스위치가 온(On)되어 있지 않으면, 사용되는 스냅샷 레벨은 어떠한 데이터도 리턴하지 않는다.

GET SNAPSHOT 명령어는 스냅샷 모니터 데이터를 조회하기 위해 사용된다. 데이터베이스에 대한 잠금 정보를 수집하기 위해서 다음의 DB2 명령어를 명령 센터에서 수행한다.

GET SNAPSHOT FOR LOCKS ON sample

스냅샷의 출력은 명령 센터 결과 창에 보여진다. 분석 목적으로 결과의 출력을 파일로 저장하는 것도 좋은 방법이다. 만약 잠금에 대한 자세한 정보를 원한다면, 잠금 모니터 스위치를 온(On) 해야 한다.

스냅샷 모니터??는 자원이다. 잠금 모니터링 레벨은 데이터베이스 활동을 분석하는데 사용된다. 응용프로그램 스냅샷 모니터 레벨의 정보는 다음의 명령어를 사용하여 얻을 수 있다.

GET SNAPSHOT FOR APPLICATIONS ON sample

스냅샷은 응용프로그램의 활동에 대한 자세한 정보를 제공한다. 스냅샷을 사용하면, 얼마나 많은 행들이 읽혀지고, 갱신되고, 삭제되었는지에 대한 응용프로그램 활동을 볼 수 있다. 따라서 데이터베이스 오브젝트들에 관한??의 명령어를 발행한다.

GET SNAPSHOT FOR TABLES ON sample

테이블 스냅샷을 사용함으로써, 어느 테이블이 데이터베이스에 주요 활동을 했는지, 예를 들어 Select 또는 Update 빈도수 등을 알 수 있다. 카??한을 부여받았는지 확인하거나, 다른 유형을 사용했는지 조사하는 등의 다른 활동을 위해 DB2에 의해 사용된다.

스냅샷은 테이블, 잠금, 응용프로그램과 같은 DB2 논리적 오브젝트들과 관련된 데이터를 보여준다. 또한 디스크 활동과 메모리 사용과 같은 물리적인 데이터베이스 환경에 관련된 정보를 제공하는데 사용될 수 있다. 이런 유형의 정보는 다음의 명령어를 사용하여 테이블 공간 레벨 스냅샷을 사용하여 수집된다.

GET SNAPSHOT FOR TABLESPACES ON sample

이 스냅샷 정보는 각 테이블 공간에 대한 I/O와 버퍼풀 활동에 대한 정보를 보여준다. 테이블 공간 정보와 함께, 이 모니터 레벨은 버퍼 풀 사용에 대한 정보를 보여준다. 버퍼 풀 정보는 BUFFERPOOL 스위치가 온(On) 인 경우에만 수집된다.

I/O 프리페칭 활동은 비동기식 읽기로 보여지고, 버퍼 풀 비동기 페이지 정리는 비동기식 쓰기로 보여진다. 또한 직접 읽기/쓰기 개념은 동기식 읽기/쓰기와 대응된다.

2) 스냅샷 모니터 스위치 상태 조사

다음의 명령어를 발행하면 언제든지 데이터베이스 모니터 스위치의 현재 설정값을 결정할 수 있다.

GET MONITOR SWITCHES

만약 모니터 스위치에 대한 인스턴스 설정값을 알고자 한다면, 다음의 명령어를 사용한다.

GET DBM MONITOR SWITCHES

3) 스냅샷 모니터 스위치 재설정

스냅샷 모니터에 의해 리턴되는 데이터는 주로 카운터값을 기반으로 한다. 이들 카운터는 모니터 스위치와 관련되어 있다.

모니터 스위치는 다음중의 하나가 발생될 때 초기화되거나 재설정된다.


  • 응용프로그램 레벨 모니터링 - 응용프로그램이 데이터베이스에 연결될 때
  • 데이터베이스 레벨 모니터링 - 첫번째 응용프로그램이 연결될 때
  • 테이블 레벨 모니터링 - 테이블이 첫번째 액세스될 때
  • 테이블 공간 레벨 모니터링 - 테이블 공간이 처음 액세스될 때
  • RESET MONITOR 명령어가 발행될 때
  • 특정 모니터 스위치가 On될때

모니터 스위치는 다음의 명령어에 의해 언제든지 초기화될 수 있다.

RESET MONITOR FOR DATABASE db명

모니터 스위치를 재설정하면, 모든 카운터의 값이 0에서 시작되어 스냅샷도 새로운 카운터 값을 기반으로 하여 모니터링된다.

인스턴스내의 모든 데이터베이스에 대해 모니터 스위치를 재설정하기 위해서는 RESET MONITOR ALL 명령어가 사용되어야 한다.


이벤트 모니터링

스냅샷 모니터링이 스냅샷을 취할 때 데이터베이스 활동의 상태를 기록하는 반면, 이벤트 모니터는 이벤트나 전이가 발생할 때 데이터베이스 활동을 기록한다. 모니터될 필요가 있는 데이터베이스 활동중의 몇가지들은 스냅샷 모니터를 사용하여 쉽게 수집되지 않는다. 이들 활동에는 교착상태(Deadlock) 시나리오를 포함한다. 교착상태가 발생할 때, DB2는 트랜잭션중의 하나에 대해 ROLLBACK을 발행함으로써 교착상태를 해결한다. 교착상태 이벤트에 대한 정보는 교착상태가 스냅샷을 하기전에 해결될 수 있기 때문에 스냅샷 모니터를 사용하여 쉽게 수집할 수 없다. 이벤트 모니터는 SQL DDL을 사용하여 생성된다. 이벤트 모니터는 스냅샷 모니터 스위치와 같이 온(On) 또는 오프(Off)될 수 있다.

이벤트 모니터가 생성될 때, 모니터될 이벤트의 유형이 명시되어야 한다. 이벤트 모니터는 다음과 같은 이벤트를 모니터할 수 있다.


  • DATABASE - 마지막 응용프로그램이 데이터베이스와 연결을 끊을 때 이벤트 레코드가 기록됨.
  • TABLES - 마지막 응용프로그램이 데이터베이스와 연결을 끊을 때 각각의 활동중인 테이블에 대 해 이벤트 레코드를 기록함. 활동 테이블은 데이터베이스와의 첫번째 연결이후로 변경된 테이블 임.
  • BUFFERPOOLS - 마지막 응용프로그램이 데이터베이스와 연결을 끊을 때, 버퍼 풀에 대한 이벤 트 레코드를 기록함.
  • CONNECTIONS - 응용프로그램이 데이터베이스와 연결을 끊을 때, 각각의 데이터베이스 연결에 대한 이벤트를 기록함.
  • STATEMENTS - 응용프로그램(동적 또는 정적)에 의해 발행되는 모든 SQL 문장에 대해 이벤트 레코드를 기록함.
  • TRANSACTIONS - COMMIT이나 ROLLBACK 문장으로 트랜잭션이 완료될 때 모든 트랜잭션에 대한 이벤트 레코드를 기록함.

많은 유형의 이벤트 모니터들은 마지막 응용프로그램이 연결을 끊을 때 이벤트 레코드를 생성한다. 하지만 특정 이벤트 모니터와 연관된 모든 활동중인 모니터 유형들에 대한 현재의 데이터베이스 모니터 값들을 기록하기 위해서 FLUSH EVENT MONITOR 명령어를 사용할 수 있다.

FLUSH EVENT MONITOR evmon_name

이 명령어에 의해 작성된 이벤트 레코드들은 부분 레코드 식별자(Partial Record Identifier)와 함께 이벤트 모니터 로그에 기록된다. 그러나 이것은 이벤트 모니터 값을 재설정하지는 않는다.

이벤트 모니터의 출력은 디렉토리 또는 Named Pipe에 저장된다. 파이프나 파일의 존재에 대한 확인은 이벤트 모니터가 활성화될 때 이루어진다. 이벤트 모니터의 타겟 위치가 Named Pipe라면, 파이프에서 직접 데이터를 읽는니터의 타겟 위치??들로 기록된다. 파일들은 일련번호가 매겨지고, evt (00000000.evt, 00000001.evt 등과 같이)라는 파일의 확장자를 가진다. 이벤트 모니터 파일들의 최대 크기와 최소 크기는 모니터가 정의될 때 지정된다.

1) 이벤트 모니터 생성

이벤트 모니터는 SQL DDL 문장을 사용하여 생성된 데이타베이스 오브젝트이다. 또한 db2emcrt GUI 툴로 이벤트 모니터를 생성할 수 있다. 예를 들어, 교착상태 이벤트 모니터를 '/eventmonitors/deadlock/evmon1' 디렉토리에 이벤트 레코드들을 저장하기 위해 생성하고자 하는 경우, 다음과 같은 SQL 문장이 사용된다.


CREATE EVENT MONITOR evmon1 FOR DEADLOCKS
WRITE TO FILE '/eventmonitors/deadlock/evmon1'
MAXFILES 3 MAXFILESIZE 1000

이벤트 모니터 출력물 디렉토리는 DB2에 의해 생성되지 않기 때문에, 데이타베이스 관리자는 해당 디렉토리를 미리 생성해야 하고, 그 디렉토리를 인스턴스 소유자가 기록할 수 있어야 한다.

위의 예제에서 생성된 이벤트 모니터는 각 파일의 크기는 4MB, 3개의 파일까지, 즉 전체 모니터 저장영역은 12MB 할당될 수 있다. 다른 이(BLOCKED) 기록, 비동기(UNBLOCKED) 기록, 이벤트 모니터 데이타를 기존의 레코드에 APPEND 또는 디렉토리의 이벤트 모니터 데이타를 REPLACE하는 것을 포함한다.

다음의 2가지 시스템 카탈로그 테이블들은 이벤트 모니터 정의들을 저장하기위해 사용되어진다.


  • SYSCAT.EVENTMONITORS - 각 이벤트 모니터에 대한 레코드, 현재의 상태등을 포함함.
  • SYSCAT.EVENTS - 각 이벤트에 대해 모니터될 레코드를 포함함. 단일 이벤트 모니터는 복수개 의 이벤트를 모니터하기 위해 정의될 수 있다. (예를 들어, DEADLOCKS와 STATEMENTS)

이벤트 모니터는 많은 다른 유형의 데이타베이스 활동들을 모니터하기 위해 정의될 수 있다. 또한 필터는 이벤트 모니터에 대해 지정할 수 있다. 필터는 APPL_ID, AUTH_ID, APPL_NAME을 기반으로 한다. (예를 들어 AUTH_ID='DB2INST1', APPL_NAME='TEST1')

이벤트 모니터를 정의하는 데 있어 갯수에는 제한이 없다. 그러나 한번에 DB2 인스턴스당 32개의 이벤트 모니터까지 활동시킬 수 있다.

2) 이벤트 모니터 시작과 중지

이벤트 모니터는 모니터링 데이타를 수집하기 위해 활성화된다. 이벤트 모니터가 CREATE EVENT MONITOR 문장을 사용하여 정의하면, 활성화된다. 이벤트 모니터를 활성화하는데 사용되는 문장은 다음과 같다.

SET EVENT MONITOR evmon1 STATE=1

이벤트 모니터가 활성화될 때, 정의된 디렉토리나 파이프 (예를 들어, /eventmonitors/deadlocks/evmon1)에 있는 파일에 이벤트 모니터 레코드들이 기록된다.

이벤트 모니터는 AUTOSTART 옵션을 사용하면, 데이터베이스가 시작될 때마다 자동적으로 시작할 수 있다. 옵션은 생성시에 지정된다.

이벤트 모니터를 오프(Off)하기 위해, SET EVENT MONITOR STATE 문장이 사용된다.

SET EVENT MONITOR evmon1 STATE=0

이벤트 모니터를 오프하면 모든 이벤트 레코드들의 내용들이 기록된다.

이벤트 모니터가 오프되면, 시스템 카탈로그 테이블에 여전히 정의되어 있으나, 모니터 정보는 기록하지 않는다.

만약 이벤트 모니터가 활동 또는 비활동인 것을 결정하기 위해서, SQL 함수 EVENT_MON_STATE나 db2emcrt의 GUI 판넬에서 상태를 조회할 수 있다. 만약 이벤트 모니터가 활동중이라면, EVENT_MON_STATE 함수는 1의 값을 리턴하고, 비활동중이면, 0의 값을 리턴한다.

evmon1 이벤트 모니터의 상태를 조회하기 위해 EVENT_MON_STATE 함수를 사용한 SQL 문장의 예는 다음과 같다.


SELECT evmonname, EVENT_MON_STATE(evmonname)
FROM SYSCAT.EVENTMONITORS WHERE evmonname = 'EVMON1'

3) 이벤트 모니터 제거

다른 데이타베이스 오브젝트와 같이, 이벤트 모니터는 데이타베이스에서 삭제될 수 있다. 정의를 제거하는 것은 SYSCAT.EVENTMONITORS, SYSCAT.EVENTS 시스템 카탈로그 뷰에서 관련된 행들을 제거하는 것을 말한다. evmon1 이벤트 모니터를 제거하는 예는 다음과 같다.

DROP EVENT MONITOR evmon1

4) 이벤트 모니터 레코드

이벤트 모니터 파일들은 직접 분석할 수 없다. 응용프로그램이 사용되어져야 한다. 이벤트 모니터 데이타를 분석하기 위해 DB2가 제공하는 몇가지 툴들이 있다. 모든 이벤트 레코드들이 디스크에 기록되는지(몇몇은 버퍼에 보관될 수 있슴)를 보장하기 위해, 단순히 이벤트 모니터를 오프하거나 FLUSH EVENT MONITOR 명령어의 BUFFER 옵션을 사용할 수 있다.

FLUSH EVENT MONITOR evmon1 BUFFER

이벤트 모니터 버퍼들을 강제로 기록한다. BUFFER 옵션과 함께 사용된 FLUSH EVENT MONITOR 명령어는 부분 레코드를 생성하지 않는다. 이벤트 모니터 버퍼에 있는 데이타만이 기록된다.

이벤트 모니터링은 각 이벤트가 발생되는 대로 기록되고, 이벤트 레코드 로그 파일들에 추가되므로, 추적(Tracing)과 유사하다. 이벤트 모니터 파일은 다음과 같은 이벤트 유형들을 포함하여 많은 수의 이벤트 레코드들을 포함한다.


  • 연결
  • SQL 문장
  • 트랜잭션
  • 교착상태
  • 버퍼 풀 이벤트
  • 테이블 공간 이벤트
  • 테이블 이벤트

만약 이벤트 모니터가 데이타베이스, 테이블 공간, 테이블 이벤트들을 모니터링한다면, 데이타베이스를 사용하는 마지막 응용프로그램이 연결을 끊을 때 완벽히 이벤트 레코드들을 기록한다. 이미 설명한대로, 부분 이벤트 레코드들을 얻기 위해서는 FLUSH EVENT MONITOR 명령어를 사용할 수 있다.

5) 이벤트 모니터 출력물 분석

이벤트 모니터 데이터를 분석하는 데에는 3가지 유틸리티가 있다.


  • db2evmon - 이벤트 레코드를 읽고 보고서를 생성하는 텍스트 기반의 툴
  • db2eva - 명령행에서 호출될 수 있는 GUI 툴
  • db2emcrt - 좀 더 그래픽하게 보고서를 조회하도록 하는 또 다른 GUI 툴. db2emcrt 명령어나 DB2 폴더의 이벤트 모니터 엔트리에서 호출될 수 있슴.

이벤트 모니터를 설명하기 위해서 교착상태 상황을 임의로 만들 수 있는데, 이것을 위해서는 AUTOCOMMIT 특성이 오프된 두 개의 DB2 명령 센터 창이 필요하다.

DEADLOCKS에 대한 이벤트 모니터를 생성하고, 이를 활성화시킨다. 교착상태 상황을 생성하는 단계는 다음과 같다.


  • 첫번째 창에서, LOCK TABLE TEST_TAKEN IN SHARE MODE
  • 두번째 창에서, LOCK TABLE TEST IN SHARE MODE
  • 첫번째 창에서, LOCK TABLE TEST IN EXCLUSIVE MODE
  • 두번째 창에서, LOCK TABLE TEST_TAKEN IN EXCLUSIVE MODE

교착상태 이벤트 모니터 evmon1에서 수집된 데이터를 분석하기 위해서는 evmon1 모니터에 대한 이벤트 모니터 보고서를 생성해야 한다. 이벤트 모니터 파일들이 위치한 곳에서 다음의 명령어를 발행한다.


db2evmon -path /eventmonitors/deadlock/evmon1 또는
db2evmon -db sample -evm evmon1

db2evmon 명령어의 -path 옵션은 이벤트 모니터 파일들이 위치한 패스를 가리키는데 사용된다.

그림 2-1. 교착상태 이벤트 모니터 레코드


그림 2-1. 교착상태 이벤트 모니터 레코드

그림 2-1에서는 교착상태 이벤트 레코드와 두개의 교착상태 연결 이벤트 레코드를 볼 수 있다. 이 정보는 교착상태에는 두개의 응용프로그램이 포함되어 있고, 또한 교착상태의 이유를 식별케 준다. 예에서는 교착상태가 두개의 공유 모드의 잠금을 포함하는 것을 볼 수 있다. 또한 이벤트 모니터는 롤 백(Rollback)된 응용프로그램의 ID와 교착상태가 발생된 시간을 알려준다.


비쥬얼 성능 모니터

DB2는 스냅샷과 이벤트 모니터 데이터를 수집하고 분석하기 위한 그래픽 인터페이스들을 제공한다.


  • 이벤트 분석기 - 이벤트 모니터 파일들을 분석함.
  • 성능 모니터 - 스냅샷 모니터의 그래픽 표현들을 조회하고 분석함.

1) 이벤트 분석기/모니터

이벤트 분석기는 db2evmon 툴과 동일한 그래픽 툴이다. 이벤트 분석기는 이전에 수집한 이벤트 모니터 레코드들을 보여준다. 이벤트 분석기를 호출하기 위해서는 db2eva 명령어를 수행하거나, Windows나 OS/2 머신인 경우, DB2 폴더에서 이벤트 분석기 아이콘을 선택한다.

그림 3-1은 이벤트 분석기 초기 창이다. 여기서는 이벤트 모니터 파일들이 위치한 패스를 입력하고, 데이터베이스를 선택한다.

그림 3-1. 이벤트 분석기 초기 창


그림 3-1. 이벤트 분석기 초기 창

패스와 데이터베이스 이름을 입력한 후에 OK 버튼을 클릭한다.
그림 3-2는 특정 패스를 사용하고 있는 이벤트 모니터가 활동중일 때의 시간 프레임을 보여준다.

그림 3-2. 이벤트 모니터의 모니터된 기간 뷰


그림 3-2. 이벤트 모니터의 모니터된 기간 뷰

그림 3-2. 이벤트 모니터의 모니터된 기간 뷰


그림 3-2. 이벤트 모니터의 모니터된 기간 뷰

모니터된 기간 뷰 창에서는 이벤트 모니터가 활동중일 때 특정 시간 프레임에 대한 이벤트 레코드들을 분석할 수 있다. 팝업 메뉴를 부르기 위해 원하는 시간 기간에 오른쪽 클릭을 한다. 팝업 메뉴에서 분석하고자 하는 이벤트를 선택한다.

그림 3-3. 모니터된 기간 뷰에서 특정 시간 프레임에 대한 교착상태 이벤트 선택


그림 3-3. 모니터된 기간 뷰에서 특정 시간 프레임에 대한 교착상태 이벤트 선택

그림 3-4. 교착상태 이벤트 뷰


그림 3-4. 교착상태 이벤트 뷰

교착상태 뷰 창에서는 교착상태가 감지되었음을 가리킨다. 선택된 항목에 오른쪽 클릭을 하여, 교착상태의 연결 열기를 선택하면 교착상태를 발생시킨 두개의 연결을 보여준다.

그림 3-5. 교착상태의 연결 뷰


그림 3-5. 교착상태의 연결 뷰

연결에 대한 추가적인 정보를 원한다면, 대기중인 연결이나 보유 연결 메뉴에서 '형식지정 열기 -> 자료 요소' 옵션을 선택한다. 그림 3-6은 교착상태의 대기중인 연결에서 이용가능한 데이터를 보여준다.

그림 3-6. 대기중인 연결 교착상태 데이터


그림 3-6. 대기중인 연결 교착상태 데이터

이벤트 분석기는 이전에 수집된 데이터만을 보여준다. 그러므로, 스냅샷 모니터와 같이 이벤트 모니터를 사용하는 데 있어 오버헤드는 없다. 이벤트 분석기는 이전에 수집된 이벤트 레코드만을 보여주기 때문에 원하는 정보를 포함하지 않을 수도 있다. 예를 들어, '형식지정 열기 -> 명령문' 옵션을 선택하고, 이벤트 분석기에 명령문에 대한 정보가 정의되어 있지 않는 경우, 화면에는 SQL 명령문 정보가 포함되어 있지 않다.

이벤트 모니터를 시작하기 위해, DB2 폴더에서 이벤트 모니터 아이콘을 선택한다. 그림 3-7은 데이터베이스에 정의된 모든 이벤트 모니터들을 보여준다. 오른쪽 클릭을 하고 이벤트 모니터 파일 보기를 선택하면 그림 3-2와 동일한 창이 나타난다.

그림 3-7. 이벤트 모니터 창


그림 3-7. 이벤트 모니터 창

2) 성능 모니터

성능 모니터는 미리 정의한 간격(기본 간격 : 30초)으로 스냅샷 정보를 보여주기 위해 사용되는 그래픽 유틸리티이다. 인스턴스, 데이터베이스, 테이블 공간, 테이블, 연결 등과 같은 DB2 오브젝트들을 모니터할 수 있다. 성능 모니터에서의 정보는 다음의 경우에 사용된다.


  • 성능 문제 감지
  • 최적의 성능을 위한 데이터베이스 조정
  • 성능 경향 분석
  • 데이터베이스 응용프로그램의 성능 분석
  • 문제의 발생 방지

성능 모니터는 제어 센터 인터페이스에서 초기화된다.
윈도우 플랫폼에서는 DB2 성능 모니터는 윈도우 환경에서 DB2 활동을 모니터하는데 사용되어질 수 있도록 윈도우 성능 모니터와 밀접하게 통합되어 있다.

오브젝트가 모니터될 때, 아이콘의 색깔은 모니터의 상태를 가리키기 위해, 녹색, 황색, 적색으로 나타난다. 색깔은 설정한 임계값에 따라 문제의 심각도를 의미한다. 녹색은 모니터가 수행되고, 모든 것이 좋다는 것을 나타낸다. 황색은 모니터가 설정한 임계값에 도달하고 있다는 경고를 나타낸다. 적색은 모니터가 임계값에 도달했다는 경보를 나타낸다.

성능 모니터는 기존 문제를 모니터할 필요가 있을 때 또는 시스템의 성능을 관찰하고자 할 때 사용한다. 특정 시점에서 데이터베이스 활동과 성능 데이터의 스냅샷을 수행한다. 이 스냅샷은 시간 경과에 따른 비교시에 사용된다. 성능 그래프에서의 각 점은 데이터 값을 표현한다.

DB2에서의 성능 모니터링은 DB2가 설치될 때 제공한 미리 정의된 모니터들을 사용하여 이루어지거나, 미리 정의된 모니터들을 복사, 수정하여 수행된다. DB2와 함께 제공되는 미리 정의된 모니터들은 다음과 같다.


  • Capacity - 시스템 용량에 대한 정보 수집시 사용됨.
  • Sort - 정렬 힙과 정렬 힙 임계값 매개변수가 적절하게 설정된 가를 확인하기 위해, 시스템 시작시, 활동 절정기 때, 응용프로그램이 변경될 때 수행함.
  • Locking - 잠금이 시스템에 얼마나 발생되는가와 잠금 목록 매개변수가 적절하게 설정되는지를 결 정하기 위해 사용됨.
  • Cache - 캐쉬 사용을 최적화하기 위해 사용됨.
  • Deadlocks - 응용프로그램이 교착상태에 있는지를 결정하기 위해 사용됨.
  • Prefetchers - 시스템에 정의된 프리페처가 충분한지를 결정하기 위해 사용됨.
  • Disk Performance - 데이터베이스와 테이블 공간 레벨에서 디스크 성능에 촛점을 맞추어 성능 변 수를 모니터링함.
  • Global Memory - 응용프로그램 메모리 사용을 보기위해 사용됨.
  • Long Running Query - 쿼리가 완료하기 위해 오랜 시간이 걸리는 원인을 파악하는데 사용됨.

이용가능한 모니터의 목록을 보기위해서는 제어 센터에서 시스템 폴더에 오른쪽 마우스 버튼을 클릭하고 팝업 메뉴에서 모니터 목록을 선택한다. 모니터 목록 창은 다음과 같다.

그림 3-8. 성능 모니터 목록 창


그림 3-8. 성능 모니터 목록 창

그림 3-8은 미리 정의된 모니터들을 보여준다. 창의 오른쪽에는 모니터에 대한 다양이 창에서 모니터들을 작성, 변경, 제거, 복사, 이름 바꾸기를 할 수 있다. 하지만, 미리 정?? 변경할 수 없다. 미리 정의된 모니터에 대해 할 수 있는 것은 임계값는 것이다.

모니터 목록 창에서 모니터를 선택하고, 복사 버튼을 클릭한 다음, 복사 창에서 새로운 모니터 이름을 입력한다. 모니터 목록 창에서는 새로운 모니터 이름을 볼 수 있다. 그리고 나서 새로운 모니터를 선택하고 변경 버튼을 클릭한다. 그림 3-9는 모니터 변경 창을 보여준다. 예에서의 새로운 모니터는 미리 정의된 모니터중의 하나인 Default_for_database_level 모니터에서 복사하고, Database_New 모니터라는 이름으로 저장한다.

이 창에서는 모니터가 포함한 성능 변수들을 보여준다. 더 많은 성능 변수들을 이 모니터에 추가하기 원한다면, 추가 버튼을 클릭한다. 이용가능한 모든 성능 변수들이 화면에 보여지고, 그 중에서 선택할 수 있다 (그림 3-10).

그림 3-9의 하단은 그래프 설정값을 보여준다. 또한 각 성능 변수에 대한 임계값을 설정할 수 있다. 선택된 성능 변수들에 대한 경고와 경보 지대 경계들을 정의할 수 있다.

그림 3-9. 성능 모니터 변경 창


그림 3-9. 성능 모니터 변경 창

그림 3-10. 성능 모니터에 성능 변수 추가


그림 3-10. 성능 모니터에 성능 변수 추가

임계값을 정의할 때, 값이 이 임계값을 초과할 때 DB2가 응답하는 방법을 설정할 수 있다. 가능한 응답으로는 다음과 같다.


  • 엔트리를 경보 센터에 추가한다.
  • 경고음을 발행한다.
  • 프로그램 또는 스크립트를 시작한다.
  • 팝업 메뉴를 띄움으로써 사용자에게 메시지를 보낸다.

데이터베이스 오브젝트 SAMPLE은 미리 정의된 Default_for_database_level 모?니터된다. SAMPLE 데이터베이스 아이콘에 오른쪽 클릭하고나서, 성능 모니터링과 모니터 시작을 선택한다. 그림 3-11은 모니터 시작 창을 보여준다. 시작하고자 하는 모니터(예에서는 Database_New)를 선택하고, 확인 버튼을 클릭한다. 제어 센터 창에서, 모니터되는 데이터베이스 오브젝트 SAMPLE 아이콘이 녹색으로 변한다.

인스턴스 레벨, 데이터베이스 레벨, 테이블 공간 레벨, 테이블 레벨, 연결 레벨에 대해 기본 모니터로써 어느 모니터를 사용할 지를 지정할 수 있다. 예를 들어, 만약 데이터베이스 레벨을 기본 모니터로 변경하고자 한다면, 제어 센터에서 데이터베이스 폴더에 오른쪽 클릭을 하고 성능 모니터링, 기본 모니터 변경을 선택한 후, 화면이 보여지는 모니터들 중에서 기본 모니터로 지정하기를 원하는 모니터를 선택한다.

성능 모니터를 시작할 때에는 그림 3-11에서 보듯이 시작 모니터 창에서 모니터를 선택할 수 있을 뿐만 아니라, 미리 기본 모니터를 정의하여 시작할 수 있다. 데이터베이스 레벨의 기본 모니터를 시작하기 위해서는 데이터베이스 오브젝트에 오른쪽 클릭을 한 후 성능 모니터링, 시작 기본 모니터를 선택한다.

그림 3-11. 모니터 시작 창


그림 3-11. 모니터 시작 창

모니터링이 시작되면, 성능 모니터가 수집하는 정보들이 화면에 보여진다. Database_New 모니터가 수집하는 정보들을 보기 위해서는 SAMPLE 데이터베이스 아이콘에 오른쪽 클릭을 하고, 성능 모니터링, 모니터 활동 표시를 선택한다. 그림 3-12는 모든 성능 변수들의 값이 모니터되는 것이 보여진다. 그림 3-12에서는 창의 상단은? 데이터베이스 요약이나 정보를 클릭하면, 성능 변수의 요약 데이터나 각 성능 변수의 설명을 볼 수 있다. 창의 하단의 그래프는 정의한 임계값을 기준으로 그려진다. 만약 성능 변수의 값이 상위 경고 값과 하위 경고 값 사이라면, 그래프는 녹색 밴드에서 그려진다.

그림 3-12. 모니터 표시 창


그림 3-12. 모니터 표시 창

3) DB2 조정자 (Governor)

DB2를 모니터링할 때, 병목현상이 시스템의 어디에서 발생하는지, 데이터베이스 활동의 어떤 유형이 발생되는지 등을 감지할 수 있다. 만약 어떤 응용프로그램이 많은 자원들을 필요로 하는지 등을 알기 위해서는 데이터베이스 응용프로그램의 행동방식을 분석해야 한다. 따라서DBA는 먼저 모니터링 기술을 사용하여 응용프로그램을 감지하고 나서 응용프로그램의 행동방식을 변경하거나, 시스템에서 응용프로그램을 중지해야 한다.

DB2 조정자는 자동적으로 그러한 확인을 수행하는 서버 응용프로그램이다. 또한 조정자는 서버에서 매우 많은 자원들을 사용한다고 생각되는 응용프로그램을 중지할 수 있다. (인스턴스에서 하나 또는 모든 응용프로그램을 중지하기 위해 DB2의 FORCE APPLICATION 명령어를 사용한다.)

조정자는 데이터베이스에 대해 수행하는 응용프로그램들에 대한 통계치를 수집한다. 그리고 나서 데이터베이스에 대해 지정한 규칙에 대해 이 통계치들을 확인한다. 지정한 규칙들의 예는 다음과 같다.


  • 항상 빠른 시간에 완료되도록 응용프로그램 X의 우선순위를 증가한다.
  • 응용프로그램들의 부분집합 즉 A, B, C의 속도를 늦춘다.
  • 15분 이상의 작업단위(UOW)를 수행하지 않도록 한다.

조정자는 지정한 응용프로그램들에 대해 매개변수들을 변경하거나 시스템에서 응용프로그램을 중지함으로써 이들 규칙들을 적용시킨다. DB2 모니터링의 시작과 중지하는 같은 방법으로 DB2 조정자를 시작, 중지한다. 예를 들어, mygov.cfg라 불리우는 조정자 운영체제 명령어 창에서 db2gov 유틸리티를 사용하여, SAMPLE 데이터베이스를 모니터링하는 조정자를 시작할 수 있다.

db2gov START SAMPLE mygov.cfg mygov.log

지정한 파일 이름, mygov.log는 DB2 조정자가 수행하는 활동들을 로깅하는 파일이다. 또한 SAMPLE 데이터베이스에 대해 수행하는 조정자는 다음과 같이 중지할 수 있다.

db2gov STOP SAMPLE

복수의 데이터베이스에 대해, 수행하는 DB2 조정자의 복수 인스턴스들을 가질 수 있다. DB2 조정자는 일정 간격으로 통계치를 수집하고 데이터베이스 응용프로그램의 활동을 모니터하기 때문에 수행시DB2 데이터베이스에 대해 성능에 영향을 줄 수 있다. db2govlg 툴을 사용하여 DB2 조정자에 의해 생성되는 로그들을 조사할 수 있다.