▣ 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 사용량이 증가하는 것 확인
댓글 없음:
댓글 쓰기