[Oracle] Resource Manager를 이용한 자원 제한 3

·2025년 9월 16일

오라클 관리

목록 보기
145/163

💡 resource manager로 cpu 사용을 제한하는 것과 프로파일의 차이점

  • 프로파일 --> cpu가 아닌 logical read 수의 제한
  • 리소스 매니저 --> cpu 사용에 대한 유저별 제한을 둘 수 있음
-- 현재 consumer 그룹들의 cpu 사용율을 실시간으로 확인하는 명령어
select  name, consumed_cpu_time, cpu_wait_time
 from  v$rsrc_consumer_group;

     SYS_GROUP     ----------->   sys, system 유져      cpu_p1   100% 
     ONLINE_USERS  ----------->   scott 유져            cpu_p2    70%
     OTHER_GROUPS  ----------->   hr, sh 유져           cpu_p2    30% 

[실습1] online user 그룹이 cpu 사용에 대한 제한을 받을 수 있도록 설정하시오

SYSTEM> exec dbms_resource_manager.create_pending_area();

SYSTEM> begin
             dbms_resource_manager.update_plan_directive(
              plan            => 'DAYTIME',
              group_or_subplan=> 'ONLINE_USERS',
              new_cpu_p2      => 5);  -- CPU 자원의 5%를 할당
            end;
/

SYSTEM> exec dbms_resource_manager.submit_pending_area();

sys나 system이 cpu를 먼저 확보해서 사용을 해야 scott이 남은 것 중에 5%만 사용하겠다는 것임


[실습2] 악성 SQL 이 수행 안되게 설정하기

new_max_est_exec_time을 120초로 설정하기

지금부터 수행하려는 SQL이 120초를 넘어갈 것 같으면 아예 처음부터 시작도 안되게 할 수 있음


SYSTEM>  exec dbms_resource_manager.create_pending_area();

SYSTEM> begin
          dbms_resource_manager.update_plan_directive(
          plan=>'DAYTIME',
          group_or_subplan=>'ONLINE_USERS',
          new_max_est_exec_time => 120 );
        end;
/

SYSTEM>  exec dbms_resource_manager.submit_pending_area();

[oracle@ora19c ~]$ sqlplus scott/tiger


SCOTT @ ORA19 > select count(*)
  2             from sh.sales, sh.sales;

  COUNT(*)
----------
   7862416

SCOTT @ ORA19 > select count(*)
  2   from sh.sales, sh.sales, sh.sales, sh.sales, sh.sales;
 from sh.sales, sh.sales, sh.sales, sh.sales, sh.sales
         *
2행에 오류:
ORA-07455: 예측 실행 시간(85791556750)이 제한 시간(120)을 초과함

문제1. 다시 악성 SQL을 수행할 수 있도록 풀어주시오


SYSTEM>  exec dbms_resource_manager.create_pending_area();

SYSTEM> begin
          dbms_resource_manager.update_plan_directive(
          plan=>'DAYTIME',
          group_or_subplan=>'ONLINE_USERS',
          new_max_est_exec_time => -1 );
        end;
/

SYSTEM>  exec dbms_resource_manager.submit_pending_area();

0개의 댓글