1. 程式人生 > >ORACLE Scheduler特性(5)Schedules排程Programs執行的Jobs

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特性的功能還多著哪,接著往下看吧