全面學習ORACLE Scheduler特性(4)建立和管理Schedule

來源:互聯網
上載者:User
三、使用Schedules

  10g 中新推出的SCHEDULER可能確實會讓很多初接觸的朋友感覺暈頭暈腦,相比之前的jobs,SCHEDULER中新增的概念太多。比如說jobs,仍然可以理解成之前版本中的jobs,不過功能更加強大(注意10g中也仍然可以使用普通jobs,這是廢話,相信看本篇文章的朋友目前應該還是這樣在用),比如說program,指的是啟動並執行程式(把要做什麼單提出來了),比如說schedule,我將其翻譯為調度(job我翻譯為任務),定義執行的頻率或者說周期。

3.1  建立和管理Schedule s

  Schedule ,中文直譯的話應該理解成調度,從名字來看,它是一個邏輯實體(邏輯,還實體,好矛盾),就是說當建立了schedule之後,資料庫中就肯定存在這一對象,只不過這一對象是用來描述job的執行循環。

  建立schedule可以通過DBMS_SCHEDULER.CREATE_SCHEDULE過程,該過程支援的參數如下:

    SQL> desc dbms_scheduler.create_schedule;

    Parameter       Type                     Mode Default? 

    --------------- ------------------------ ---- -------- 

    SCHEDULE_NAME   VARCHAR2                 IN            

    START_DATE      TIMESTAMP WITH TIME ZONE IN   Y        

    REPEAT_INTERVAL VARCHAR2                 IN            

    END_DATE        TIMESTAMP WITH TIME ZONE IN   Y        

    COMMENTS        VARCHAR2                 IN   Y        

  各參數分別代表含意如下:

  • SCHEDULE_NAME :指定schedule名稱,注意名稱不能重複。
  • START_DATE :指定該調度的開始時間,可為空白,當為空白時表示該調度暫不起用。
  • REPEAT_INTERVAL :指定調度的執行頻率或周期。
  • END_DATE :指定調度的結束時間,可為空白,為空白時就表示該調度將一直進行。
  • COMMENTS :注釋資訊。

  這其中,比較有技術含量的是REPEAT_INTERVAL參數,對於這個參數大家應該不會太陌生,因為前面介紹Jobs,也曾經提到過同名的參數,Schedules中的REPEAT_INTERVAL參數和Jobs中的REPEAT_INTERVAL參數功能完全相同,甚至參數格式也一模一樣。

  REPEAT_INTERVAL 參數的文法結構要複雜的多。其中最重要的是FREQ和INTERVAL兩個關鍵字。

  • FREQ 關鍵字用來指定間隔的時間周期,選擇性參數有:YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, and SECONDLY,分別表示年、月、周、日、時、分、秒等單位。
  • INTERVAL 關鍵字用來指定間隔的頻繁,可指定的值的範圍從1-99。

  比如說,當指定REPEAT_INTERVAL=>'FREQ=DAILY;INTERVAL=1';就表示每天執行一次,如果將INTERVAL改為7就表示每7天執行一次,效果等同於FREQ=WEEKLY;INTERVAL=1。

  下面,建立一個schedule,指定調度為每周一次的頻率,執行指令碼如下:

    SQL> begin

      2  DBMS_SCHEDULER.CREATE_SCHEDULE (

      3    schedule_name     => 'my_first_schedule',

      4    start_date        => SYSDATE,

      5    repeat_interval   => 'FREQ=WEEKLY; INTERVAL=1',

      6    comments          => 'Every 1 weeks');

      7  END;

      8  /

    PL/SQL procedure successfully completed.

  查詢當前已經建立的schedules,可以通過*_SCHEDULER_SCHEDULES視圖(含DBA_,ALL_,USER_),例如,查看目前使用者擁有的schedules,執行語句如下:

    SQL> select schedule_name,repeat_interval from user_scheduler_schedules;

    SCHEDULE_NAME                  REPEAT_INTERVAL

    ------------------------------ ------------------------------

    MY_FIRST_SCHEDULE              FREQ=WEEKLY; INTERVAL=1

  如果要修改schedule屬性的話,也是使用DBMS_SCHEDULER.SET_ATTRIBUTE過程,該過程的調用方式前面已經多次示範過,這裡就不再重複舉例了,僅說明一點,對於schedule來說,能夠修改的屬性包括:REPEAT_INTERVAL、COMMENTS、END_DATE、START_DATE以及EVENT_SPEC。

  至於刪除schedule,再簡單不過,執行DBMS_SCHEDULER.DROP_SCHEDULE過程即可,例如:

    SQL> EXEC DBMS_SCHEDULER.DROP_SCHEDULE('MY_FIRST_SCHEDULE');

    PL/SQL procedure successfully completed.

=======================================

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.