DBMS 2

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

모니터링

DBMS 2
DB2 가이드
DB2 사용자 가이드
모니터링
작성자
admin
작성일
2021-02-19 14:49
조회
1252

모니터링

오류 진단 파일

인스턴스 사용자로 로그인하여 db2diag.log 파일을 확인합니다.


$ login <인스턴스 사용자명> $ more $HOME/sqllib/db2dump/db2diag.log

db2

update dbm cfg 명령어로 인스턴스 구성 변수인 DIAGLEVEL과 DIAGPATH를 변경 하면, db2diag.log 에 기록되는 진단 정보의 수준과 db2diag.log 를 비롯한 시스템 오류 덤프 파일이 저장되는 디렉토리가 변경됩니다.


$ db2 attach to <인스턴스명> $ db2 update dbm cfg using DIAGLEVEL <진단 수준> 
$ db2 update dbm cfg using DIAGPATH <진단 디렉토리명> $ db2 get dbm cfg | grep DIAG

db2


오류 진단 파일

아래의 명령을 수행하면 1024 메가 바이트 중 diaglog파일이 90%, db2.nfy파일이 10%의 비율로 생성되며 파일사이즈의 합이 1024 메가 바이트 로 파일들이 생성됩니다. 파일은 rotating 방식으로 생성되며 db2diag.0.log 부터 순차적 으로 10개의 파일이 생성됩니다.


$ db2 update dbm cfg using DIAGSIZE 1024

db2


시스템 모니터 스위치

get dbm cfg 명령어를 이용하여 기본 모니터 스위치의 현재 설정값을 확인합니다. DFT_MON_BUFPOOL, DFT_MON_LOCK, DFT_MON_SORT, DFT_MON_STMT, DFT_MON_TABLE, DFT_MON_UOW, DFT_MON_TIMESTAMP 등의 7가지 기본 모 니터 스위치가 제공됩니다.


$ login 인스턴스 사용자>
$ db2 get dbm cfg | grep DFT

시스템 모니터 스위치를 활성화시키려면 update dbm cfg 명령어로 모니터 스위치의 값을 ON 또는 OFF 로 설정합니다. 변경 이후에 시작하는 모든 세션에는 변경된 시스템 모니터 스위 치의 값이 적용됩니다. 값이 ON 인 경우에는 해당 항목에 대한 추가적인 모니터링 자료가 수집 되고, OFF 인 경우에는 추가적인 모니터링 자료에 대한 수집이 중지됩니다.


$ db2 attach to 인스턴스명>
$ db2 update dbm cfg using 기본 모니터 스위치 변수명> ON
$ db2 update dbm cfg using 기본 모니터 스위치 변수명> OFF
$ db2 detach

db2


세션별 모니터 스위치

get monitor switches 명령어를 이용하여 모니터링 스위치의 현재 설정값을 확인합니다.


$ login 인스턴스 사용자>
$ db2 get monitor switches

새로운 세션을 시작하기 전에 update monitor switches 명령어로 7가지의 모니터 스위 변경된 모니터 스위치의 값은 현재의 치 중에서 원하는 모니터 스위치를 ON 또는 OFF 로 설정합니다.


$ db2 update monitor switches using 모니터 스위치명> ON
$ db2 update monitor switches using 모니터 스위치명> OFF
$ db2 get monitor switches

reset monitor 명령어는 모니터링 정보 중에서 엔진이 관리하는 내부적인 누적값을 표시하는 항목의 현재값을 초기값으로 갱신합니다.


$ db2 reset monitor all
$ db2 reset monitor for db 데이터베이스명>

db2


스냅샷 모니터

인스턴스 사용자로 로그인합니다.


$ login 인스턴스 사용자명>

get snapshot 명령어를 이용하여 인스턴스의 활동 내역을 모니터링할 수 있습니다.


$ db2 get snapshot for dbm

get snapshot 명령어를 이용하여 데이터베이스의 활동 내역을 모니터링할 수 있습니다.


$ db2 get snapshot for all on 데이터베이스명>
$ db2 get snapshot for db on 데이터베이스명>
$ db2 get snapshot for locks on 데이터베이스명>

get snapshot 명령어를 이용하여 응용프로그램의 활동 내역을 모니터링할 수 있습니다.


$ db2 list applications
$ db2 get snapshot for application agentid 응용프로그램 핸들 번호>

db2


스냅샷 테이블 함수

대표적인 스냅샷 테이블 함수의 종류는 다음과 같습니다.

db2

get dbm cfg 명령어로 시스템 모니터 스위치의 기본값을 확인합니다.


$ db2 get dbm cfg | grep DFT_MON

get monitor switches 명령어를 이용하여 현재 세션의 모니터링 스위치의 값을 확인합니다


$ db2 get monitor switches

SELECT문의 FROM 절에서 TABLE 이라는 키워드를 사용하여 스냅샷 함수를 실행합니다. 인 수로 데이터베이스명>과 데이터베이스 파티션 번호>를 입력합니다. 파티션 번호가 -1 이면 현재 파티션을 의미하고, -2 이면 모든 파티션을 의미합니다. 결과 테이블에 대한 별명>은 임 의로 지정합니다.

db2


응용프로그램 목록 확인

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


응용프로그램이 사용한 CPU 시간

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


응용프로그램이 처리한 행의 수

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


응용프로그램별 잠금

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


파티션별 잠금

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


테이블별 잠금

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


잠금 대기 에이전트

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


잠금 대기 에이전트의 정적 SQL문

아래의 SQL문을 실행합니다

db2

실행 결과는 다음과 같습니다.

db2


잠금 대기 에이전트의 동적 SQL문

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


잠금 보유 에이전트의 정적 SQL문

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


잠금 보유 에이전트의 동적 SQL문

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


응용프로그램별 로그 사용량

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


데이터베이스별 로그 사용량

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


테이블 스페이스 사용량

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


테이블 스페이스 컨테이너 사용량

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


테이블 스페이스 적중률

아래의 SQL문을 실행합니다.

db2

실행 결과는 다음과 같습니다.

db2


이벤트 모니터

특정한 이벤트가 발생할 때마다 이벤트 유형별로 관련된 이벤트 정보를 수집합니다. 이벤트의 유 형은 다음과 같이 6가지로 분류됩니다.

db2

이벤트 모니터가 수집한 정보는 파일, 테이블, 파이프 등에 저장됩니다. 저장 방식에 따라 수집된 정보를 분석하는 방법이 다릅니다.

특정 이벤트가 발생할 때마다 관련된 모니터링 정보를 수집하려면 데이터베이스에 접속한 후에 create event monitor 명령어를 이용하여 이벤트 모니터를 생성합니다

set event monitor 명령어는 원하는 시점에 이벤트 모니터의 상태값을 ON 또는 OFF 로 설정하여 이벤트 모니터의 모니터링 기간을 조절할 수 있습니다. 상태값이 ON 이면 이벤트 모 니터는 활성화되어 이벤트의 발생 정보를 수집합니다. 상태값이 OFF 이면 이벤트가 발생해도 이벤트 모니터는 정보를 수집하지 않습니다.

이벤트 모니터를 제거하려면 drop event monitor 명령어를 이용합니다. 상태값인 ON 으 로 설정된 이벤트 모니터는 제거할 수 없습니다.

이벤트 모니터에 대한 정보는 SYSCAT.EVENTMONITORS 뷰를 이용해서 확인합니다.


$ db2 "select * from syscat.eventmonitors"
이벤트 모니터

Deadlock 모니터링 방법입니다.

db2

트랜잭션 모니터링 방법입니다.

db2


CREATE EVENT MONITOR 문

create event monitor 의 형식은 다음과 같습니다.

db2

옵션에 대한 설명은 다음과 같습니다.

db2


파일 이벤트 모니터

create event monitor 의 형식은 다음과 같습니다.

db2

이벤트 모니터가 수집하는 정보를 저장할 출력용 디렉토리를 생성합니다.


$ mkdir ?p 출력용 디렉토리>

create event monitor 명령어로 파일 이벤트 모니터를 생성합니다


$ db2 “create event monitor 이벤트모니터명> for 이벤트유형명> write to
file 출력용 디렉토리명> MAXFILES 최대 파일 개수> MANUALSTART”

이벤트 모니터를 활성화시킵니다.


$ db2 “set event monitor 이벤트모니터명> state = 1”

일정한 시간동안 이벤트 정보를 수집한 후에 이벤트 모니터를 비활성화시킵니다


$ db2 “set event monitor 이벤트모니터명> state = 0”

$ db2 “set event monitor 이벤트모니터명> state = 0”

$ db2evmon -db 데이터베이스명> -evm 이벤트모니터명> > 출력파일명>
$ rm -Rf 출력용 디렉토리>/*.evt

불필요한 이벤트 모니터는 제거합니다.


$ db2 drop event monitor 이벤트모니터명>
테이블 이벤트 모니터

옵션은 다음과 같습니다

db2

이벤트 모니터가 수집할 정보를 저장할 테이블스페이스를 생성합니다.


db2 "create tablespace TS명> managed by database using (…)"

이벤트 모니터를 생성합니다.


db2 +p -t (( EOF
create event monitor 이벤트모니터명> for 이벤트유형>
write to table connheader (table mon2.connheader, in TS명>,
pctdeactivate 90), stmt (table mon2.statements, in TS명>, pctdeactivate 90),
control (table mon2.control, in TS명>, pctdeactivate 90)
manualstart;
EOF

이벤트 모니터를 활성화시킵니다. 일정한 시간 동안 이벤트 정보를 수집한 후에 이벤트 모니터 를 비활성화시킵니다.


$ db2 “set event monitor 이벤트모니터명> state = 1”
$ db2 “set event monitor 이벤트모니터명> state = 0”

불필요한 이벤트 모니터는 제거합니다.


$ db2 drop event monitor 이벤트모니터명>
시간 소요 모니터

포괄적인 시간 소요 모니터링 요소를 통하여, 시간이 어디에 소요되는지를 정확하게 표시하는 기 능으로 문제점의 잠재적인 원인을 쉽게 찾고 성능 개선을 위해 조정을 수행할 수 있을지 여부를 확인할 수 있습니다.

db2

시간 모니터링 결과값을 수집하여 아래와 같은 도표를 산출할 수 있습니다. 아래 예제는 전체 대 기 시간 중 Lock 대기 시간이 가장 큰 부분을 차지함을 알 수 있습니다.

db2


DB2PD 모니터링

db2pd 로 데이터베이스 시스템 메모리 세트에서 정보를 검색합니다.

db2

db2


db2top

인스턴스 사용자로 로그인 하여 db2top 을 입력합니다.

db2

db2top의 옵션은 아래와 같습니다. db2top의 어떠한 화면에서도 h를 누르게 되면 도움말 이 나타납니다.


d - Database l - Sessions
a - Details for agent agentid> t - Tablespaces
b - Bufferpools
T - Tables
D - Dynamic SQL U - Locks
m - Memory pools s - Statements
u - Utilities p - Partitions
C - Toggle collector on/off W - Watch user/agent
/ - Set regexp
g - Toggle graph on/off
i - Toggle idle objects on/off G - Toggle local/global sn
P - Select db partition X - Toggle extended mod
k - Toggle actual/delta values z - Descending sort
Z - Ascending sort + - Longer default sort
- - Shorter default sort I - Set new snapshot inter
R - Reset snapshot monitor S - Run native DB2 snap
> - Move right < - Move left
c - Change columns order f - Freeze display
! - Goto to system prompt V - Set default explain sc
O - Display settings w - Write parms to .db2t
h - Help q - Quit
db2top - Application

l 키를 사용하여 좌우 화살표(← →)를 이용하여 모니터링 내용을 이동하며 확인할 수 있습니다.

db2

a 키를 사용하여 특정 application의 핸들값을 입력하면 자세한 정보를 확인 할 수 있습니 다.

db2


db2top - Application

e 키를 사용하면 db2expln을 사용하여 해당 app의 access plan을 검증할 수 있습니다. vi editor를 통해 처리되기 때문에 :q를 통해 완료됩니다.

db2

x 키를 사용하면 db2exfmt를 사용하여 해당 app의 access plan을 검증할 수 있습니다.

db2

s 키는 해당 app에 대한 db2 snapshot을 수행할 수 있습니다. 이를 통해 보다 자세한 데 이터를 수집하고 모니터링 할 수 있습니다.

db2


db2top - Memory

b 키를 사용하여 bufferpool을 모니터링 할 수 있습니다. 좌우 화살표(← →)를 이용하여 모니터링 내용을 이동하며 확인할 수 있습니다.

db2

m 키를 사용하여 DB2가 사용하는 전체 메모리를 모니터링 할 수 있습니다.

db2


db2top ? Lock

U 키를 사용하여 lock을 모니터링 할 수 있습니다. 좌우 화살표(← →)를 이용하여 모니터링 내용을 이동하며 확인할 수 있습니다

db2

L 키를 사용하여 lock chain을 확인할 수 있습니다.

db2


db2top ? Table

T 키를 사용하여 테이블을 모니터링 할 수 있습니다. 좌우 화살표(← →)를 이용하여 모니터링 내용을 이동하며 확인할 수 있습니다.

db2


db2top ? Partitioning

p 키를 사용하여 partition을 모니터링 할 수 있습니다. 좌우 화살표(← →)를 이용하여 모 니터링 내용을 이동하며 확인할 수 있습니다.

db2


db2top ? Dynamic SQL

D 키를 사용하여 Dynamic SQL을 모니터링 할 수 있습니다. 좌우 화살표(← →)를 이용 하여 모니터링 내용을 이동하며 확인할 수 있습니다.

db2

L 키를 사용하여 SQL 전체 문장을 확인할 수 있습니다. w 키를 사용하여 SQL을 파일로 저 장할 수 있습니다. 파일은 홈디렉토리에 dynsql.sql라는 이름으로 생성됩니다.

db2


db2top ? Utility

u 키를 사용하여 Utility를 모니터링 할 수 있습니다. 좌우 화살표(← →)를 이용하여 모니터 링 내용을 이동하며 확인할 수 있습니다.

db2


db2top - Tablespace

t 키를 사용하여 tablespace를 모니터링 할 수 있습니다. 좌우 화살표(← →)를 이용하여 모니터링 내용을 이동하며 확인할 수 있습니다

db2