달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2019. 2. 9. 23:22

Resource Manager DB2019. 2. 9. 23:22

□ RM(Resource Manager)이란?

○ 정의

비효율적인 OS 관리로 초래된 문제들(자원의 부적절한 할당, 비효율적인 스케쥴링 등)을 해결하기 위해 Oracle DB server가 자원 관리 결정을 더 잘 하도록 하는 것

○ RM 기능

- 사용자 수나 시스템 부하에 관계없이 사용자에게 자원처리 최소량 보증

- 각각 다른 사용자나 응용프로그램에 CPU time 비율을 할당하여 가용 자원 분배. DW에서는 Batch job보다ROLAP 응용프로그램에 높은 비율이 주어짐

- 사용자 그룹(DB사용자를 리소스 그룹별로 그루핑)이 수행하는 작업의 병행성 수준을 제한

- Active Session Pool(동시에 활성화 되는 세션의 최대치로 구성) 생성. 최대치를 넘어서는 세션은 대기하며,해당 세션에 대해 소멸시간 설정가능

- 관리자 정의 기준에 따라 사용자를 다른 그룹으로 자동 전환 가능(특정 사용자 그룹이 지정된 시간보다 긴 세션을 수행할 경우, 해당 세션을 다른 사용자 그룹으로 옮길 수 있음)

- Optimizer가 추정한 특정 작업(규정된 시간제한을 넘어서는 작업)의 수행 방지

- Undo Pool 생성(한 그룹의 사용자들이 이용하는 undo 스페이스의 양으로 구성)

- session idle time의 양을 제한

- 자원할당을 위한 특정 메서드를 사용하기 위해 instance를 설정instance의 재시작이나 종료 없이 daytime이나 nighttime 설정으로 메서드 변경 가능)

- long-running session 이나 long-running SQL statement 취소를 허용

○ RM 요소

Element

Description

Resource consumer group

자원 처리 요청에 의거 그루핑된 사용자 session

Resource plan

Resource consumer grouop에 어떻게 자원을 할당할 것인지 구체화

Resource allocation method

데이터베이스 RM이 자원을 할당할 때 사용하는 메서드/정책. 데이터베이스는 가용한 자원할당 메서드를 제공하고 관리자가 어떤 것을 사용할지 선택

Resource plan directive

Resource consumer group과 특정 plan을 연관시키고Resource consumer group에게 어떻게 자원을 할당시킬지 정하는데 사용

○ Resource Plan 이해

- 기본형태

(출처: http://docs.oracle.com/cd/B19306_01/server.102/b14231/dbrm.htm#i1007556)

하나의 플랜에 따라 각 Resource consumer group이 할당받는 CPU자원이 다름. 만약 SALES group이 자원을 사용하지 않으면 다른 group이 자원을 사용하도록 허용해야함.

- Subplan이 있는 형태

 

하나의 플랜 아래 Subplan을 두는 것이 가능하며, 이 플랜에 Resource consumer grouop을 세분하할 수 있음. Subplan이나 Resource consumer grouop은 하나 이상의 부모(플랜)을 가질 수 있음. ex) 위 그림에서GREAT_BREAD 플랜이 DAY plan과 NIGHT plan으로 나누어졌을 경우 두 플랜 모두 SALES_TEAM Subplan을 멤버로 두는 것이 가능

* 위 그림에는 없으나 항상 Default로 OTHER_GROUPS가 설정되어 있어야 함

○ DBMS_RESOURCE_MANAGER 패키지

데이터베이스 RM을 관리할 수 있는 시스템 권한(ADMINISTER_RESOURCE_MANAGER)이 있어야 함. 주로 DBA가 ADMIN 옵션으로 해당 권한을 가지고 있음. 권한 획득 후에는 DBMS_RESOURCE_MANAGER 패키지에 있는 프로시져 사용 가능

Procedure

Description

CREATE_SIMPLE_PLAN

Creates a simple resource plan, containing up to eight consumer groups, in one step. This is the quickest way to get started when you use this package.

CREATE_PLAN

Creates a resource plan and specifies its allocation methods.

UPDATE_PLAN

Updates a resource plan.

DELETE_PLAN

Deletes a resource plan and its directives.

DELETE_PLAN_CASCADE

Deletes a resource plan and all of its descendents.

CREATE_CONSUMER_GROUP

Creates a resource consumer group.

UPDATE_CONSUMER_GROUP

Updates a consumer group.

DELETE_CONSUMER_GROUP

Deletes a consumer group.

CREATE_PLAN_DIRECTIVE

Specifies the resource plan directives that allocate resources to resource consumer groups or subplans in a plan.

UPDATE_PLAN_DIRECTIVE

Updates plan directives

DELETE_PLAN_DIRECTIVE

Deletes plan directives

CREATE_PENDING_AREA

Creates a pending area (scratch area) within which changes can be made to a plan schema

VALIDATE_PENDING_AREA

Validates the pending changes to a plan schema

CLEAR_PENDING_AREA

Clears all pending changes from the pending area

SUBMIT_PENDING_AREA

Submits all changes for a plan schema

SET_INITIAL_CONSUMER_GROUP

Sets the initial consumer group for a user. This procedure has been deprecated. The database recommends that you use the SET_CONSUMER_GROUP_MAPPING procedure to specify the initial consumer group.

SWITCH_CONSUMER_GROUP_FOR_SESS

Switches the consumer group of a specific session

SWITCH_CONSUMER_GROUP_FOR_USER

Switches the consumer group of all sessions belonging to a specific user

SET_CONSUMER_GROUP_MAPPING

Maps sessions to consumer groups

SET_CONSUMER_GROUP_MAPPING_PRI

Establishes session attribute mapping priorities

* 플랜 정보 보는 법

  - Viewing plan information:

select plan, comments from dba_rsrc_plans;

  - Viewing current consumer group for sessions:

select sid, serial#, resource_consumer_group from v$session;

  - Viewing the currently active plans:

alert system set resource_manager_plan = 플랜명;

select name, IS_TOP_PLAN from v$rsrc_plan;

  - Viewing consumer group Granted to user or role:

select * from dba-rsrc_consumer_group_privs;

  - Viewing directive:

select plan, max_est_exec_time, comments, type from dba_rsrc_plan_directives;

○ Pending Area

현재 수행중인 어플리케이션에 영향을 주지 않고 플랜을 만들거나 변경하거나 삭제할 수 있도록 하는 staging area. pending area에서 변경을 한 뒤에는 변경사항을 데이터사전에 적용하기 위해서 pending arear를validate하고 submit해야 함(pending area 없이 플랜을 생성하거나 변경, 삭제 하는 경우 에러 메시지 리턴).

clear_pending_area 프로시져를 통해 pending area로부터 모든 변경사항을 비우고, pending area를 비활성화시킬 수 있으며, 해당 프로시져 다음에는 반드시 다른 변경 시도를 위해서 pending area를 생성해야 함.

○ DBMS_SCHEDULER 패키지

PL/SQL 프로그램에서 호출될 수 있는 스케쥴링 프로시져 패키지. subprogram 중 window를 통해 플랜들을 각각 다른 시간에 자동으로 활성화되게 할 수 있음.

- CREATE_WINDOW Procedure 사용법:

DBMS_SCHEDULER.CREATE_WINDOW (

window_name IN VARCHAR2(윈도우 ),

resource_plan   IN VARCHAR2(리소스 플랜명),

start_date    IN TIMESTAMP WITH TIME ZONE DEFAULT NULL(시작시간),

repeat_interval IN VARCHAR2(반복 간격, Calendaring Syntax 작성),

end_date      IN TIMESTAMP WITH TIME ZONE DEFAULT NULL(종료 시간),

duration   IN INTERVAL DAY TO SECOND(지속시간, numtodsinterval 설정),

window_priority IN VARCHAR2( window 겹칠 우선순위) DEFAULT 'LOW',

comments      IN VARCHAR2              DEFAULT NULL);

* Calendaring Syntax:

(http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#BABFBCEF)

* numtodsinterval: numtodsinterval(n, 'interval unit') 형태로 사용

'interval unit'에는 'DAY', 'HOUR', 'MINUTE', 'SECOND' 가능

- DROP_WINDOW Procedure 사용법:

DBMS_SCHEDULER.DROP_WINDOW (

window_name IN VARCHAR2(윈도우 ),

force           IN BOOLEAN(윈도우 활성에 관계없이 실행 여부) DEFAULT FALSE);

* 윈도우 정보 보는 법

  - Viewing window and resource plan information:

select * from dba_schedular_windows;

'DB' 카테고리의 다른 글

DataWarehouse 란?  (0) 2019.03.07
파티셔닝  (0) 2019.02.09
PL/SQL 조건, 반복 제어문  (0) 2017.08.05
PL/SQL 구조와 변수  (0) 2017.08.03
PL/SQL 시작하기  (0) 2017.07.18
:
Posted by SK