Oracle 자동 유지보수 작업

6950 단어 Oracle자동 작업
Oracle 데이터베이스 에 서 는 Oracle 데이터베이스 가 더욱 효율 적 으로 작 동 할 수 있 도록 자동 유지보수 임 무 를 제공 합 니 다.오 라 클 버 전에 따라 자동 작업 의 종류 와 수행 방식 도 다르다.본 고 는 10g 과 11g 을 위주 로 Oracle 의 자동 임 무 를 인식 하고 자 한다.
1. 종류
10g 의 자동 작업 은 두 가지 가 있 습 니 다.
  • AUTO_SPACE_ADVISOR_JOB, 자동 공간 컨 설 턴 트 JOB
  • GATHER_STATS_JOB, 자동 통계 수집 JOB
  • 11g 의 자동 퀘 스 트 는 세 가지 가 있 습 니 다.
  • auto optimizer stats collection, 자동 통계 정보 수집 컨 설 턴 트
  • auto space advisor, 자동 공간 컨 설 턴 트
  • sql tuning advisor, sql 튜 닝 컨 설 턴 트
  • 2. 실현 방식
    10g 의 자동 임 무 는 SCHEDULER 의 JOB 형식 으로 실 행 됩 니 다. dbascheduler_jobs 보기에 서 관련 JOB 가 나 왔 습 니 다.
    SQL> set linesize 200
    SQL> col owner for a30
    SQL> col job_name for a30
    SQL> select owner,job_name from dba_scheduler_jobs where job_class='AUTO_TASKS_JOB_CLASS';
    
    OWNER			       JOB_NAME
    ------------------------------ ------------------------------
    SYS			       AUTO_SPACE_ADVISOR_JOB
    SYS			       GATHER_STATS_JOB

    11g 의 자동 작업 은 11g 의 새로운 특성 AUTOTASK 방식 으로 이 루어 집 니 다.dbaautotask_client 보기에 서 관련 정 보 를 찾 았 습 니 다.
    sys@TEST>SELECT client_name,status FROM dba_autotask_client;
    
    CLIENT_NAME				 STATUS
    ---------------------------------------- ------------------------
    auto optimizer stats collection 	 ENABLED
    auto space advisor			 ENABLED
    sql tuning advisor			 ENABLED

    3. 창 유지 보수 시간
    두 버 전에 서 자동 작업 의 실행 시간 은 다르다.
    10g 중 두 시간 대 WEEKNIGHTWINDOW 와 WEEKENWINDOW, dbascheduler_windows 보기에 서 찾 았 습 니 다.각각 실행 시작 시간 과 지속 시간 은 다음 과 같 습 니 다.
    WEEKNIGHT_WINDOW, 매주 1 ~ 금요일 밤 22: 00: 00 시작, 8 시간 지속
    WEEKEND_WINDOW, 토요일 00: 00: 00, 2 일 지속
    11g 에서 유지보수 창 은 7 개 로 나 뉘 어 져 있 습 니 다. 즉, 첫날 의 유지보수 창 은 서로 다른 수요 에 따라 더욱 세밀 하 게 조정 할 수 있 습 니 다. dbascheduler_windows 보기에 서 찾 았 습 니 다. 각각 MONDAY 입 니 다.WINDOW,TUESDAY_WINDOW,WEDNESDAY_WINDOW,THURSDAY_WINDOW,FRIDAY_WINDOW,SATURDAY_WINDOW,SUNDAY_WINDOW。시작 시간 과 지속 시간 은 각각:
    월요일 부터 금요일 밤 22: 00: 00 부터 4 시간, 토요일 과 일요일 오전 6: 00: 00 부터 20 시간 동안 실 행 됩 니 다.
    4. 유지 보수 방식
    10g 과 11g 의 실현 방식 이 다 르 기 때문에 유지 보수 방식 은 자연히 다르다.
    10g 의 유지보수 방식 은 일반 SCHEDULER 의 JOB 와 같 습 니 다.
    --  JOB
    SQL> exec dbms_scheduler.disable('AUTO_SPACE_ADVISOR_JOB');
    
    PL/SQL procedure successfully completed.
    
    SQL> select enabled from dba_scheduler_jobs where job_name='AUTO_SPACE_ADVISOR_JOB';
    
    ENABLED
    ---------------
    FALSE
    
    --  JOB
    
    SQL> exec dbms_scheduler.ENABLE('AUTO_SPACE_ADVISOR_JOB');
    
    PL/SQL procedure successfully completed.
    
    SQL> select enabled from dba_scheduler_jobs where job_name='AUTO_SPACE_ADVISOR_JOB';
    
    ENABLED
    ---------------
    TRUE

    다음은 11g 의 자동 작업 유지 보 수 를 중점적으로 소개 합 니 다.
    1) 자동 유지보수 작업 정지 및 사용
    --  sql tuning advisor
    sys@TEST>BEGIN
      2    dbms_auto_task_admin.disable(
      3      client_name => 'sql tuning advisor',
      4      operation   => NULL,
      5      window_name => NULL);
      6  END;
      7  /
      
      PL/SQL procedure successfully completed.
    
    sys@TEST>select client_name,status from dba_autotask_client;
    
    CLIENT_NAME                              STATUS
    ---------------------------------------- ------------------------
    auto optimizer stats collection          ENABLED
    auto space advisor                       ENABLED
    sql tuning advisor                       DISABLED
    
    --  sql tuning advisor
    sys@TEST>BEGIN
      2    dbms_auto_task_admin.enable(
      3      client_name => 'sql tuning advisor',
      4      operation   => NULL,
      5      window_name => NULL);
      6  END;
      7  /
    
    PL/SQL procedure successfully completed.
    
    sys@TEST>select client_name,status from dba_autotask_client;
    
    CLIENT_NAME                              STATUS
    ---------------------------------------- ------------------------
    auto optimizer stats collection          ENABLED
    auto space advisor                       ENABLED
    sql tuning advisor                       ENABLED
    
    --                 
    sys@TEST>exec dbms_auto_task_admin.disable;
    
    PL/SQL procedure successfully completed.
    
    sys@TEST>select window_name,autotask_status from dba_autotask_window_clients;
    
    WINDOW_NAME                    AUTOTASK_STATUS
    ------------------------------ ------------------------
    MONDAY_WINDOW                  DISABLED
    TUESDAY_WINDOW                 DISABLED
    WEDNESDAY_WINDOW               DISABLED
    THURSDAY_WINDOW                DISABLED
    FRIDAY_WINDOW                  DISABLED
    SATURDAY_WINDOW                DISABLED
    SUNDAY_WINDOW                  DISABLED
    
    7 rows selected.
    --                
    sys@TEST>exec dbms_auto_task_admin.enable;
    
    PL/SQL procedure successfully completed.
    
    sys@TEST>select window_name,autotask_status from dba_autotask_window_clients;
    
    WINDOW_NAME                    AUTOTASK_STATUS
    ------------------------------ ------------------------
    WEDNESDAY_WINDOW               ENABLED
    FRIDAY_WINDOW                  ENABLED
    SATURDAY_WINDOW                ENABLED
    THURSDAY_WINDOW                ENABLED
    TUESDAY_WINDOW                 ENABLED
    SUNDAY_WINDOW                  ENABLED
    MONDAY_WINDOW                  ENABLED
    
    7 rows selected.
    --               
    sys@TEST>BEGIN
      2    dbms_auto_task_admin.disable(
      3      client_name => 'sql tuning advisor', 
      4      operation   => NULL, 
      5      window_name => 'MONDAY_WINDOW');
      6  END;
      7  /
    
    PL/SQL procedure successfully completed.
    
    sys@TEST>select window_name,autotask_status,sql_tune_advisor from dba_autotask_window_clients;
    
    WINDOW_NAME                    AUTOTASK_STATUS          SQL_TUNE_ADVISOR
    ------------------------------ ------------------------ ------------------------
    MONDAY_WINDOW                  ENABLED                  DISABLED
    TUESDAY_WINDOW                 ENABLED                  ENABLED
    WEDNESDAY_WINDOW               ENABLED                  ENABLED
    THURSDAY_WINDOW                ENABLED                  ENABLED
    FRIDAY_WINDOW                  ENABLED                  ENABLED
    SATURDAY_WINDOW                ENABLED                  ENABLED
    SUNDAY_WINDOW                  ENABLED                  ENABLED
    
    7 rows selected.

    2. 유지보수 창 설정
    이것 은 10g 과 유사 합 니 다. 모두 dbms 를 사용 합 니 다.scheduler 패키지 조작
    --         , SATURDAY_WINDOW        4  
    sys@TEST>BEGIN
      2    dbms_scheduler.disable(
      3      name  => 'SATURDAY_WINDOW');
      4    dbms_scheduler.set_attribute(
      5      name      => 'SATURDAY_WINDOW',
      6      attribute => 'DURATION',
      7      value     => numtodsinterval(4, 'hour'));
      8    dbms_scheduler.enable(
      9      name => 'SATURDAY_WINDOW');
     10  END;
     11  /
    
    PL/SQL procedure successfully completed.
    
    sys@TEST>SELECT duration FROM dba_scheduler_windows WHERE window_name='SATURDAY_WINDOW';
    
    DURATION
    ---------------------------------------------------------------------------
    +000 04:00:00

    11g 자동 유지보수 작업 은 공식 문서 참조:http://docs.oracle.com/cd/E11882_01/server.112/e25494/tasks.htm#ADMIN12344

    좋은 웹페이지 즐겨찾기