프린트 하기

내맘대로긍정이 알려주는

Oracle 23ai 신기능
무료 세미나 발표자료

다운로드 trending_flat

OS환경 : Oracle Linux 7.2 (64bit)


DB 환경 : Oracle Database 18.3.0.0


방법 : automatic evolution task 파라미터 설정

SYS_AUTO_SPM_EVOLVE_TASK의 기존 파라미터 값 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SQL> 
COL PARAMETER_NAME FOR a25
COL VALUE FOR a42
SELECT PARAMETER_NAME, PARAMETER_VALUE AS "VALUE"
FROM   DBA_ADVISOR_PARAMETERS
WHERE  ( (TASK_NAME = 'SYS_AUTO_SPM_EVOLVE_TASK') AND
         ( (PARAMETER_NAME = 'ACCEPT_PLANS') OR
           (PARAMETER_NAME LIKE '%ALT%') OR
           (PARAMETER_NAME = 'TIME_LIMIT') ) );
 
PARAMETER_NAME          VALUE
------------------------- ------------------------------------------
ALTERNATE_PLAN_LIMIT      10
ALTERNATE_PLAN_SOURCE      CURSOR_CACHE+AUTOMATIC_WORKLOAD_REPOSITORY
ALTERNATE_PLAN_BASELINE   EXISTING
ACCEPT_PLANS          TRUE
TIME_LIMIT          3600
 
5 rows selected.


아래와 같은 방식으로 파라미터 설정

1
2
3
4
5
6
7
8
9
SQL>
BEGIN
  DBMS_SPM.SET_EVOLVE_TASK_PARAMETER(
    task_name => 'SYS_AUTO_SPM_EVOLVE_TASK'
,   parameter => parameter_name
,   value     => value
);
END;
/


예를 들어서 아래 PL/SQL 구문은 "SYS_AUTO_SPM_EVOLVE_TASK" 태스크가 자동으로 계획을 수락하도록 구성하고, 

shared SQL area 및 AWR 저장소에서 최대 500개의 plan을 검색하며, 20분 타임아웃을 설정함

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SQL>
BEGIN
  DBMS_SPM.SET_EVOLVE_TASK_PARAMETER(
    task_name => 'SYS_AUTO_SPM_EVOLVE_TASK'
,   parameter => 'TIME_LIMIT'
,   value     => '1200'
);
  DBMS_SPM.SET_EVOLVE_TASK_PARAMETER(
    task_name => 'SYS_AUTO_SPM_EVOLVE_TASK'
,   parameter => 'ACCEPT_PLANS'
,   value     => 'true'
);
  DBMS_SPM.SET_EVOLVE_TASK_PARAMETER(
    task_name => 'SYS_AUTO_SPM_EVOLVE_TASK'
,   parameter => 'ALTERNATE_PLAN_LIMIT'
,   value     => '500'
);
END;
/


변경된 SYS_AUTO_SPM_EVOLVE_TASK의 파라미터 값 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SQL>
SELECT PARAMETER_NAME, PARAMETER_VALUE AS "VALUE"
FROM   DBA_ADVISOR_PARAMETERS
WHERE  ( (TASK_NAME = 'SYS_AUTO_SPM_EVOLVE_TASK') AND
         ( (PARAMETER_NAME = 'ACCEPT_PLANS') OR
           (PARAMETER_NAME LIKE '%ALT%') OR
           (PARAMETER_NAME = 'TIME_LIMIT') ) );
 
PARAMETER_NAME          VALUE
------------------------- ------------------------------------------
ALTERNATE_PLAN_LIMIT      500
ALTERNATE_PLAN_SOURCE      CURSOR_CACHE+AUTOMATIC_WORKLOAD_REPOSITORY
ALTERNATE_PLAN_BASELINE   EXISTING
ACCEPT_PLANS          true
TIME_LIMIT          1200
 
5 rows selected.



참조 : 

https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/managing-sql-plan-baselines.html#GUID-541EBA4B-4F7D-42DD-A152-C06BDE69D828