DBMS 2

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

워크로드 매니저

DBMS 2
DB2 가이드
DB2 사용자 가이드
워크로드 매니저
작성자
admin
작성일
2021-02-19 14:52
조회
1138

워크로드 매니저

WLM 개요

WLM은 다양한 워크로드별로 서비스 클래스를 정의하여 자원 할당에 우선순위를 부여할 수 있 게 합니다.

db2

WLM은 시스템 자원 분배 시 우선 순위를 고려하여 서비스 클래스를 분리합니다.

db2


WLM 정의

WLM의 구축 절차 는 아래와 같습니다


Step1 : 서비스 클래스 생성
Step2 : 서비스 서브클래스 생성
Step3 : Workload 생성
Step4 : Threshold 생성
Step5 : Work Class set 생성
Step6 : Work Action set 생성

Step1: 서비스 클래스를 생성합니다.


Create service class ACT_CNTL_SC --class name

Step2: 서비스 서브클래스를 생성합니다.


CREATE SERVICE CLASS ACT_CNTL_SUBC -- 서브 클래스명
UNDER ACT_CNTL_SC ? 클래스 명
COLLECT ACTIVITY DATA WITH DETAILS; -- 데이터 모음 옵션

Step3: Workload를 생성합니다.
1) 사용자명을 통한 DB 사용 제한을 위한 WORKLOAD 정의합니다.
2) 응용 프로그램 명을 통한 DB 사용 제한을 위한 WORKLOAD를 정의합니다.


CREATE WORKLOAD SELECT_USER_WL
SYSTEM_USER ('SELUSR')
SERVICE CLASS ACT_CNTL_SC;
CREATE WORKLOAD TOAD_AP_WL
APPLNAME ('Toad.exe')
SERVICE CLASS ACT_CNTL_SC;

WLM 정의

Step4: Threshold를 생성합니다.
-- 수행 시 지정된 시간 이상 수행되는 SQL문을 수집 후 해당 연결을 강제 종료시킵니다.
-- Threshold-domain을 DB 전체로 정의하며, 임계 값 초과시에도 계속 수행하고 해당 SQL문을 수집합니다


CREATE THRESHOLD LONG_EXEC_AP_TH
FOR DATABASE ACTIVITIES
ENFORCEMENT DATABASE
WHEN ACTIVITYTOTALTIME > 1 HOURS
COLLECT ACTIVITY DATA WITH DETAILS
CONTINUE;

Step5: Work Class set를 생성합니다.
-- LOAD 작업에 대한 WORK CLASS SET을 정의합니다.


CREATE WORK CLASS SET LOAD_WCS
(WORK CLASS LOAD_WC WORK TYPE LOAD);

Step6: Work Action set를 생성합니다. -- LOAD 작업이 시도될 경우 수행될 ACTION을 정의합니다.


CREATE WORK ACTION SET LOAD_WAS
FOR DATABASE
USING WORK CLASS SET LOAD_WCS
(WORK ACTION LOAD_WA ON WORK CLASS
LOAD_WC PREVENT EXECUTION);

WLM 관리

Workload에 대한 권한을 부여합니다.


GRANT USAGE ON WORKLOAD TOAD_AP_WL TO PUBLIC;
GRANT USAGE ON WORKLOAD WAS_AP_WL TO USER WASUSR;
GRANT USAGE ON SELECT_USER_WL TO USER SELUSR;

Workload에 대한 권한을 제거 합니다.
- 권한 제거 명령 수행 후 모든 연결에서 SQL문을 수행할 경우 다음 에러 발생합니다.
SQL4707N Workload "SYSDEFAULTUSERWORKLOAD" cannot service the request because it is not allowed to access the database or is disabled. SQLSTATE=5U020


REVOKE USAGE ON WORKLOAD TOAD_AP_WL TO PUBLIC;
REVOKE USAGE ON WORKLOAD SELECT_USER_WL FROM SELUSR;

Workload에 대한 비활성화
- 해당 WORKLOAD가 비활성화된 후에 SQL문 수행 시 아래 에러 발생합니다.
SQL4707N Workload "SYSDEFAULTUSERWORKLOAD" cannot service the request because it is not allowed to access the database or is disabled. SQLSTATE=5U020


ALTER WORKLOAD TOAD_AP_WL DISABLE;
ALTER WORKLOAD SELECT_USER_WL DISABLE

SERVICE CLASS 또는 SERVICE SUBCLASS 비활성화
- SERVICE CLASS 또는 SERVICE SUBCLASS를 비활성화할 경우 관련된 모든 WORKLOAD가 사용 불가능하게 되므로 주의해야 합니다.
SQL4714N The request cannot be executed because service class "ACT_CNTL_SC.SYSDEFAULTSUBCLASS" is disabled. SQLSTATE=5U028


ALTER SERVICE CLASS ACT_CNTL_SC DISABLE;

WLM 현재 상태와 누적 모니터링을 하기 위해서는 db2pd 명령에서 wlm 옵션을 사용하거 나 또는 wlm_get_service_superclass_stats같은 WLM 상태조회 테이블 함수를 사용 할 수 있습니다.


SELECT SUBSTR(WORK_ACTION_SET_NAME, 1, 12),
SUBSTR(WORK_CLASS_NAME, 1, 12), LAST_RESET,
SUBSTR(CHAR(ACT_TOTAL), 1, 10)
FROM TABLE(WLM_GET_WORK_ACTION_SET_STATS('', -2))
ORDER BY WORK_ACTION_SET_NAME, WORK_CLASS_NAME ;