全面學習ORACLE Scheduler特性(5)Schedules調度Programs執行的Jobs


3.2 Schedules調度Programs執行的Jobs

  通過schedule調度program的執行的job,看到這樣的形容是不是讓你徹底暈頭了,就說明你還是沒搞明白10g中SCHEDULERS特性管理的jobs的含意,讓三思更直白地給你描述描述。10g版本中SCHEDULER將JOB分成了多個部分,program負責做什么,schedule負責啥時候做,job就簡單了,一個字:做。

  前面幾個小節,三思已經分別演示了創建管理Jobs,創建管理Programs以及創建和管理Schedules,下面我們通過實例來演示,如何創建通過schedule調度program的執行的job吧。

  首先,創建一個program,操作如下:

SQL> BEGIN

  2  DBMS_SCHEDULER.CREATE_PROGRAM (

  3     program_name           => 'my_program1',

  4     program_action         => '/bin/date',

  5     program_type           => 'EXECUTABLE',

  6     enabled                => TRUE);

  7  END;

  8  /

    PL/SQL procedure successfully completed.

  通過上述語句,我們定義了一個program,執行操作系統命令date,並輸入到dt.log文件中。

  接下來定義一個schedule,操作如下:

SQL> begin

  2  DBMS_SCHEDULER.CREATE_SCHEDULE (

  3    schedule_name     => 'my_first_schedule',

  4    start_date        => SYSDATE,

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

  6    comments          => 'Every 1 weeks');

  7  END;

  8  /

    PL/SQL procedure successfully completed.

  定義調試為每周執行一次。此處repeat_interval可根據實現情況進行修改。

  最后,創建job,按照指定的schedule,執行program,操作如下:

SQL> BEGIN

  2  DBMS_SCHEDULER.CREATE_JOB (

  3     job_name           =>  'execOScmd',

  4     program_name       =>  'my_program1',

  5     schedule_name      =>  'my_first_schedule',

  6     enabled            =>  true);

  7  END;

  8  /

    PL/SQL procedure successfully completed.

  創建job時,start_date,repeat_interval,job_action等均無須指定,因為這些參數將由program和schedule來控制。

  這樣,操作完成后,ORACLE就會自動定時(當前設置為每周執行一次)program中定義的操作。

  要查看當前的執行情況,通過*_scheduler_job_run_details即可查詢(*_scheduler_job_log也可以,不過該視圖中信息不如detail中全面)。例如,查看剛剛創建的"EXECOSCMD"任務的執行情況,執行命令如下:

SQL> select log_id, log_date, status, additional_info

  2    from user_scheduler_job_run_details

  3   where job_name = 'EXECOSCMD'

  4  ;

    LOG_ID LOG_DATE             STATUS     ADDITIONAL_INFO

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

     13760 17-AUG-09 02.47.53.7 SUCCEEDED

               34050 PM +08:00

  看完這個示例之后,你是否對10g中的SCHEDULER特性多了些了解呢?千萬表自滿,SCHEDULER特性的功能還多着哪,接着往下看吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM