본문 바로가기
OraclE

11g 스케줄러 자동작업 dbms_auto_task_admin

by 타마마임팩트_쫀 2014. 2. 12.

 

적용 대상 :  11.1.0.6 to 11.2.0.2 [Release 11.1 to 11.2]

오라클 11g 데이터베이스에는  세 가지 자동화된 유지 관리 작업이 있다 :

자동 최적기 통계 수집(Automatic Optimizer Statistics Collection)

통계가 없거나 오래된 통계를 가지고 있는 데이터베이스 안의 모든 스키마 객체에 대해 최적기 통계를 수집한다.이 작업에 의해 생성되어지는 통계는 SQL 실행 시 성능을 향상시키기 위하여 SQL 쿼리 최적기에 의해서 사용되어 진다.

자동 세그먼트 권고자 (Automatic Segment Advisor)

회수 가능한 공간을 가지는 세그먼트를 구별하고, 해당 세그먼트를 어떻게 조각모음 할 건지에 대한 권장 사항을 만든다. 최신의 권장 사항을 확보하거나 자동 세그먼트 권고자가 회수 가능한 공간을 검토 하지 않은 세그먼트의 권장 사항을 확보하기 위하여 수동으로 세그먼트 권고자를 실행할 수 있다.

자동 SQL 튜닝 권고자(Automatic SQL Tuning Advisor)

높은 부하를 가지는 SQL 문장의 성능을 검사하고, 그 문장을 어떻게 튜닝 할 것인지에 대한 권장 사항을 만든다. SQL 프로파일 권장 사항을 자동으로 구현하기 위하여 이 권고자를 구성할 수 있다.

Oracle10g에서 이 작업들은 별도의 작업으로 생성 되었으며 DBA_SCHEDULER_JOBS.JOB_NAME에서 볼 수 있었다.

SQL> select owner,job_name,schedule_name, schedule_type, enabled from dba_scheduler_jobs;

OWNER           JOB_NAME                       SCHEDULE_NAME                  SCHEDULE_TYP ENABL
--------------- ------------------------------ ------------------------------ ------------ -----
SYS             PURGE_LOG                      DAILY_PURGE_SCHEDULE           NAMED        TRUE
SYS             FGR$AUTOPURGE_JOB                                             CALENDAR     FALSE
SYS             GATHER_STATS_JOB               MAINTENANCE_WINDOW_GROUP       WINDOW_GROUP TRUE
SYS             AUTO_SPACE_ADVISOR_JOB         MAINTENANCE_WINDOW_GROUP       WINDOW_GROUP TRUE

GATHER_STATS_JOB, AUTO_SPACE_ADVISOR_JOB 가 enabled인것을 확인 할수 있다.

오라클 11g에서 변경되었다. 관련된 뷰는 DBA_AUTOTASK_WINDOW_CLIENTS이다.
이제 이 작업들은 시스템에서 실제로 실행 되고 난 후 생성된 이름을 DBA_SCHEDULER_JOBS에서 볼 수 있다.

SQL> desc DBA_AUTOTASK_WINDOW_CLIENTS
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 WINDOW_NAME                               NOT NULL VARCHAR2(30)
 WINDOW_NEXT_TIME                                   TIMESTAMP(6) WITH TIME ZONE
 WINDOW_ACTIVE                                      VARCHAR2(5)
 AUTOTASK_STATUS                                    VARCHAR2(8)
 OPTIMIZER_STATS                                    VARCHAR2(8)
 SEGMENT_ADVISOR                                    VARCHAR2(8)
 SQL_TUNE_ADVISOR                                   VARCHAR2(8)
 HEALTH_MONITOR                                     VARCHAR2(8)

OPTIMIZER_STATS가 Status of optimizer statistics gathering 을 나타낸다.

 select * from DBA_AUTOTASK_WINDOW_CLIENTS;

WINDOW_NAME          WINDOW_NEXT_TIME                         WINDOW_ACT
-------------------- ---------------------------------------- ----------
AUTOTASK_STATUS  OPTIMIZER_STATS  SEGMENT_ADVISOR  SQL_TUNE_ADVISOR
---------------- ---------------- ---------------- ----------------
HEALTH_MONITOR
----------------
MONDAY_WINDOW        17-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

TUESDAY_WINDOW       18-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

WEDNESDAY_WINDOW     12-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

THURSDAY_WINDOW      13-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

FRIDAY_WINDOW        14-FEB-14 10.00.00.000000 PM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

SATURDAY_WINDOW      15-FEB-14 06.00.00.000000 AM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

SUNDAY_WINDOW        16-FEB-14 06.00.00.000000 AM ASIA/SEOUL  FALSE
ENABLED          ENABLED          ENABLED          ENABLED
DISABLED

7 rows selected.


모든 윈도들의 모든 자동화된 유지 관리 작업을 설정하거나 해제하려면 인수 없이 설정 또는 해제 프로시저를 호출한다.

SQL> execute DBMS_AUTO_TASK_ADMIN.DISABLE;


특정한 유지 관리 작업을 해제하기 위하여 다음과 같이 해제 프로시저를 사용한다 :

SQL> BEGIN
       dbms_auto_task_admin.disable(
       client_name => 'sql tuning advisor',
       operation => NULL,
       window_name => NULL);
     END; 
    /


특정한 유지 관리 작업을 다시 설정하기 위하여 다음과 같이 설정 프로시저를 사용한다 :

SQL> BEGIN
       dbms_auto_task_admin.enable(
       client_name => 'sql tuning advisor',
       operation => NULL,
       window_name => NULL);
     END;
     /



client_name 인수에 사용할 작업 이름은 DBA_AUTOTASK_CLIENT 데이터베이스 딕셔너리 뷰 안에 나열되어 있다.

예제:
auto optimizer stats collection
auto space advisor
sql tuning advisor



또 다른 차이점은 사전에 정의된 스케줄러 윈도다 :

  •   Oracle10g : WEEKNIGHT_WINDOW and WEEKEND_WINDOW
  •   Oracle11g : MONDAY_WINDOW .... SUNDAY_WINDOW. 

WEEKNIGHT_WINDOW와 WEEKEND_WINDOW는 이전 버전과의 호환성을 위해 아직 존재한다.

--10g SQL> select window_name, repeat_interval, duration
  2  from dba_scheduler_windows;

WINDOW_NAME                    REPEAT_INTERVAL
------------------------------ --------------------------------------------------------------------------------
DURATION
---------------------------------------------------------------------------
WEEKNIGHT_WINDOW               freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;byminute=0; bysecond=0
+000 08:00:00

WEEKEND_WINDOW                 freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0
+002 00:00:00

 

--11g SQL> select window_name, repeat_interval, duration
  2  from dba_scheduler_windows;

WINDOW_NAME          REPEAT_INTERVAL
-------------------- --------------------------------------------------------------------------------
DURATION
---------------------------------------------------------------------------
MONDAY_WINDOW        freq=daily;byday=MON;byhour=22;byminute=0; bysecond=0
+000 04:00:00

TUESDAY_WINDOW       freq=daily;byday=TUE;byhour=22;byminute=0; bysecond=0
+000 04:00:00

WEDNESDAY_WINDOW     freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0
+000 04:00:00

THURSDAY_WINDOW      freq=daily;byday=THU;byhour=22;byminute=0; bysecond=0
+000 04:00:00

FRIDAY_WINDOW        freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0
+000 04:00:00

SATURDAY_WINDOW      freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0
+000 20:00:00

SUNDAY_WINDOW        freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0
+000 20:00:00

WEEKNIGHT_WINDOW     freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;byminute=0; bysecond=0
+000 08:00:00

WEEKEND_WINDOW       freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0
+002 00:00:00


9 rows selected.

 

윈도가 열릴 때 지속 시간은 11g에서 변경되었다. 월요일 - 금요일은 오후 10시에서 오전 2시까지이며 토요일 - 일요일은 오전 6시에서 오전 2시까지다.

DBMS_SCHEDULER.SET_ATTRIBUTE 프로시저를 사용하여 데이터베이스 환경에 적절한 시간으로 사전에 정의된 유지 관리 윈도를 조절할 수 있다.
예제 : 다음 스크립트는 WEEKNIGHT_WINDOW를 자정부터 모든 평일 오전 8시로 변경하도록 한다. (윈도 기간은 8시간으로 변경되지 않는다) :
EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE(
'WEEKNIGHT_WINDOW',
'repeat_interval',
'freq=daily;byday=MON, TUE, WED, THU, FRI;byhour=8;byminute=0;bysecond=0');

각각의 평일 윈도는 DEFAULT_MAINTENANCE_PLAN이라는 사전에 정의된 리소스 계획을 가지고 있으며 관련 윈도가 열릴 때 활성화 될 것이다. 이것은 10g와 11g 간의 또 다른 차이점이다.


SQL> select window_name, resource_plan from dba_scheduler_windows;

WINDOW_NAME                    RESOURCE_PLAN
------------------------------ ------------------------------
MONDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN
TUESDAY_WINDOW                 DEFAULT_MAINTENANCE_PLAN
WEDNESDAY_WINDOW               DEFAULT_MAINTENANCE_PLAN
THURSDAY_WINDOW                DEFAULT_MAINTENANCE_PLAN
FRIDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN
SATURDAY_WINDOW                DEFAULT_MAINTENANCE_PLAN
SUNDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN
WEEKNIGHT_WINDOW
WEEKEND_WINDOW

9 rows selected.


SQL> select * from dba_rsrc_plans where plan='DEFAULT_MAINTENANCE_PLAN'
PLAN_ID PLAN NUM_PLAN_DIRECTIVES
---------- ------------------------------ -------------------
CPU_METHOD MGMT_METHOD
------------------------------ ------------------------------
ACTIVE_SESS_POOL_MTH PARALLEL_DEGREE_LIMIT_MTH
------------------------------ ------------------------------
QUEUEING_MTH SUB
------------------------------ ---
COMMENTS
--------------------------------------------------------------------------------
STATUS MAN
------------------------------ ---
11187 DEFAULT_MAINTENANCE_PLAN 4
EMPHASIS EMPHASIS
ACTIVE_SESS_POOL_ABSOLUTE PARALLEL_DEGREE_LIMIT_ABSOLUTE
FIFO_TIMEOUT NO
Default plan for maintenance windows that prioritizes SYS_GROUP operations and a
llocates the remaining 5% to diagnostic operations and 25% to automated maintena
nce operations.
YES


SQL> select * from DBA_RSRC_PLAN_DIRECTIVES where plan='DEFAULT_MAINTENANCE_PLAN';

PLAN GROUP_OR_SUBPLAN TYPE
------------------------------ ------------------------------ --------------
CPU_P1 CPU_P2 CPU_P3 CPU_P4 CPU_P5 CPU_P6 CPU_P7
---------- ---------- ---------- ---------- ---------- ---------- ----------
CPU_P8 MGMT_P1 MGMT_P2 MGMT_P3 MGMT_P4 MGMT_P5 MGMT_P6
---------- ---------- ---------- ---------- ---------- ---------- ----------
MGMT_P7 MGMT_P8 ACTIVE_SESS_POOL_P1 QUEUEING_P1 PARALLEL_DEGREE_LIMIT_P1
---------- ---------- ------------------- ----------- ------------------------
SWITCH_GROUP SWITC SWITCH_TIME SWITCH_IO_MEGABYTES
------------------------------ ----- ----------- -------------------
SWITCH_IO_REQS SWITC MAX_EST_EXEC_TIME UNDO_POOL MAX_IDLE_TIME
-------------- ----- ----------------- ---------- -------------
MAX_IDLE_BLOCKER_TIME SWITCH_TIME_IN_CALL
--------------------- -------------------
COMMENTS
--------------------------------------------------------------------------------
STATUS MAN
------------------------------ ---
DEFAULT_MAINTENANCE_PLAN SYS_GROUP CONSUMER_GROUP
100 0 0 0 0 0 0
0 100 0 0 0 0 0
0 0
FALSE
FALSE

Directive for system operations
NO

DEFAULT_MAINTENANCE_PLAN OTHER_GROUPS CONSUMER_GROUP
0 70 0 0 0 0 0
0 0 70 0 0 0 0
0 0
FALSE
FALSE

Directive for all other operations
NO

DEFAULT_MAINTENANCE_PLAN ORA$AUTOTASK_SUB_PLAN PLAN
0 25 0 0 0 0 0
0 0 25 0 0 0 0
0 0
FALSE
FALSE

Directive for automated maintenance tasks
NO

DEFAULT_MAINTENANCE_PLAN ORA$DIAGNOSTICS CONSUMER_GROUP
0 5 0 0 0 0 0
0 0 5 0 0 0 0
0 0
FALSE
FALSE

Directive for automated diagnostic tasks
NO

* 11.2.0.3 에서는 SYS_GROUP 의 CPU_P1, MGMT_P1이 75로 변경 됨


10g와 11g의 변경사항 요약 : 

제목 10g 11g
작업 DBA_SCHEDULER_JOBS에서 별도의 작업 AUTOTASKS는 접두사 'ORA$AT'라는 이름을 가지며 실행되었을 때 작업처럼 볼 수 있다.
유지 관리 윈도 2개의 윈도, 평일 밤과 주말 매일 자신의 윈도를 가진다.
자원 관리자(Resource manager) 기본으로 설정되지 않음 모든 평일 윈도를 위한 사전 정의된 자원 계획
     


관련된 뷰:


DBA_AUTOTASK_CLIENT
DBA_AUTOTASK_CLIENT_HISTORY
DBA_AUTOTASK_CLIENT_JOB
DBA_AUTOTASK_JOB_HISTORY
DBA_AUTOTASK_OPERATION
DBA_AUTOTASK_SCHEDULE
DBA_AUTOTASK_TASK
DBA_AUTOTASK_WINDOW_CLIENTS
DBA_AUTOTASK_WINDOW_HISTORY


 

'OraclE' 카테고리의 다른 글

rman 백업 확인  (0) 2014.03.27
[펌] DBMS_XPLAN.DISPLAY_CURSOR  (0) 2014.03.24
Temporary Tablespace Group(10g)  (0) 2013.11.20
db link 사용시 lob타입 테이블 문제  (0) 2012.08.03
append 힌트의 효용성  (0) 2012.06.26