/* Resource Manager is used to manage a workload and the CPU usage of specific sessions in the database. It is used to control long-running queries and prevents them from excessive CPU consumption. Resource Manager can be managed using both Enterprise Manager and command line interface (CLI) using DBMS_RESOURCE_MANAGER package.
- Resource plan is used to specify how the resources are to be distributed among the consumer groups. A number of resource plans might be created, but only one will be active at one time.
- Consumer plan is a set of sessions that are grouped based on resource requirements. When a session is created in the database, it is automatically mapped to a consumer group. There are two default consumer groups in the database: SYS_GROUP and OTHER_GROUPS.
- Plan directive is used to associate consumer groups with plans. */
난이도: ★★★★★
문제 1: 2 개의 plan을 생성하고, 2개의 consumer group과 4개의 user를 생성하라. 첫 번째 plan은 7am~12am까지 유효하도록 지정하고, 두 번째 plan은 12am~7am하도록 지정하여라. 두 개의 유저는 첫 번째 consumer group에 속하게 하고, 나머지 두 유저는 두 번째 consumer group에 속하도록 지정하여라.
첫 번째 plan을 다음과 같이 설정하고, 두 번째 plan은 이와 반대로 설정해서 생성하여라:
- 첫 번째 plan이 active한 시간동안에는 첫 번째 consumer group이 CPU allocation을 80%이 되도록 하고, 두 번째 consumer group은 10%이 되도록 한다.
- 첫 번째 consumger group에는 parallelism을 8을 지정하고, 두 번째 consumer group에는 2를 지정한다.
- 첫 번째 consumer group에는 maximum number of active session을 20으로 지정하고, 두 번째 consumer group에는 5로 지정한다.
- 첫 번째 consumer group에는 unlimited undo space를 설정하고, 두 번째 consumer group에는 10mb만큼 지정한다.
- 첫 번째 consumer group에는 execution time limit을 600초로 지정하는 반면, 두 번째 consumer group에는 5초를 지정하고, limit 시간이 지나면 세션을 kill 하도록 설정한다.
- Idle time을 첫 번째 consumer group에는 600초를 지정하고, 두 번째 consumer group에는 60초를 지정한다.
첫 번째 plan이 활성화 되었을 때, 두 번째 consumer group의 유저로 connect하고 다음을 실험하라.
- parallel degree가 2보다 큰 쿼리를 실행하고, 결과를 체크하라.
- 세션을 5개 열고, 6번째 세션을 열 때 어떻게 되는지 확인해 보아라.
- dba_objects 뷰를 토대로 테이블을 생성하고, object_name 컬럼을 업데이트하고 세션이 더 많은 undo를 발생시킬 때 어떻게 되는지 확인해 보아라.
- 방금 만든 테이블에 "ORDER_BY 1,2,3,4,5,6"를 걸어 쿼리하고, execute할 때 5초가 넘게 걸리면 어떻게 되는지 확인해 보아라.
- 세션을 생성하고 idle 상태로 2분 이상 놔두면 어떻게 되는지 확인해 보아라. (30분)
2개의 plan: DAY_PLAN, NIGHT_PLAN
2개의 consumer group: CONS_GROUP_DAY, CONS_NIGHT_DAY
4개의 user: USR_DAY1, USR_DAY2, USR_NIGHT1, USR_NIGHT2
ALTER SESSION SET CONTAINER=pdb;
ALTER DATABASE OPEN;
CREATE USER usr_day1 IDENTIFIED BY oracle;
CREATE USER usr_day2 IDENTIFIED BY oracle;
CREATE USER usr_night1 IDENTIFIED BY oracle;
CREATE USER usr_night2 IDENTIFIED BY oracle;
GRANT connect, resource, unlimited tablespace TO usr_day1, usr_day2, usr_night1, usr_night2;
SHOW PARAMETER resource_manager_plan
ALTER SYSTEM SET resource_manager_plan="NIGHTPLAN";
ALTER SYSTEM SET resource_manager_plan="DAYPLAN";
/* 특정 유저를 consumer group에 할당하는 코드 */
EXEC DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP('SCOTT', 'DAY_PLAN', FALSE);
DECLARE
plan_name VARCHAR2(50) := 'DAYPLAN';
BEGIN
EXECUTE IMMEDIATE 'ALTER SYSTEM SET RESOURCE_MANAGER_PLAN=''' || plan_name || '''';
END;
/
'Oracle > OCM Journey' 카테고리의 다른 글
6-3 Performance Management - Use multi-column statistics (0) | 2023.04.23 |
---|---|
6-2 Performance Management - Use Result Cache (0) | 2023.04.23 |
5-9 Data Warehouse Management - Flashback data archive and schema evolution (0) | 2023.04.16 |
5-8 Data Warehouse Management - Create and manage Contexts (0) | 2023.04.16 |
5-7 Data Warehouse Management - Oracle Database Auditing (0) | 2023.04.16 |