2009년 8월 22일 토요일

Monitoring the Resource Manager

   

▣ doCpu.sql

begin

for i in 1..500000000 loop

dbms_output.put_line(9/2/5);

end loop;

end;

/

   

▶ Resource 사용 group 가 변하지 않음

   

▣ 해결 방법 => 유저의 consumer groups switching 권한을 변경

show sql -1 : SCOTT

BEGIN

    dbms_resource_manager.set_initial_consumer_group(

        user => 'SCOTT',

        consumer_group => 'DW'

    );

END;

   

   

▶ show sql - 2 : HR

BEGIN

dbms_resource_manager.set_initial_consumer_group(

user => 'HR',

consumer_group => 'OLTP'

 );

END;

   

   

▣ 다시 doCpu 실행

  • HR이 실행한 작업이 OLTP이기 때문에 먼저 Resource를 사용하고 종료 후 SCOTT이 실행한 작업이 실행된다.

   

▣ Resource Plan 변경

   

▶ SQL

ALTER SYSTEM SET resource_manager_plan='INTERNAL_PLAN';

   

▶ 실습

SQL> select PLAN from DBA_RSRC_PLANS; => 전체 PLAN 검색

   

PLAN

------------------------------

SYSTEM_PLAN

MYPLAN

INTERNAL_PLAN

INTERNAL_QUIESCE

   

SQL> select NAME,IS_TOP_PLAN from V$RSRC_PLAN;

   

NAME IS_TO

-------------------------------- -----

MYPLAN TRUE => 현재 적용중인 PLAN

   

SQL> SHOW PARAMETER PLAN;

   

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

resource_manager_plan string MYPLAN => 파라미터로 검색

   

SQL> ALTER SYSTEM SET resource_manager_plan='INTERNAL_PLAN'; => PLAN 변경

   

System altered.

   

SQL> select NAME,IS_TOP_PLAN from V$RSRC_PLAN;

   

NAME IS_TO

-------------------------------- -----

INTERNAL_PLAN TRUE => INTERNAL_PLAN 으로 변경된 것 확인

   

SQL> show parameter plan;

   

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

resource_manager_plan string INTERNAL_PLAN

   

▣ 지정된 시간 사용 후 다른 Resource Group으로 전환

   

▶ show sql

BEGIN

dbms_resource_manager.clear_pending_area();

dbms_resource_manager.create_pending_area();

dbms_resource_manager.update_plan_directive(

    plan => 'MYPLAN',

    group_or_subplan => 'OLTP',

    new_comment => '',

    new_cpu_p1 => 90, new_cpu_p2 => NULL, new_cpu_p3 => NULL, new_cpu_p4 => NULL,

    new_cpu_p5 => NULL, new_cpu_p6 => NULL, new_cpu_p7 => NULL, new_cpu_p8 => NULL,

    new_parallel_degree_limit_p1 => NULL,

    new_active_sess_pool_p1 => NULL,

    new_queueing_p1 => NULL,

    new_switch_group => 'DEFAULT_CONSUMER_GROUP',

    new_switch_time => NULL,

    new_switch_estimate => false,

    new_max_est_exec_time => NULL,

    new_undo_pool => NULL,

    new_max_idle_time => NULL,

    new_max_idle_blocker_time => NULL,

    new_switch_time_in_call => 3600

);

dbms_resource_manager.submit_pending_area();

END;

   

▣ 실습 - DW 30초 후 DEFAULT_CONSUMER_GROUP 으로 변경

  • Consumer Group Switching Tab 에서 DW group의 Maximum Execution Time 을 30으로 바꾸고 Action To Take를

    Switch to Group DEFAULT_CONSUMER_GROUP 으로 변경 후 확인

  • Scott 유저에서 doCpu 실행
  • 실행하면 SCOTT이 실행하기 때문에 DW가 사용하는 Resource가 증가하는 것 확인 할 수 있음
  • 30초 후 DW는 줄어들고 DEFAULT_CONSUMER_GROUP의 CPU 사용량이 증가하는 것 확인

댓글 없음:

댓글 쓰기