スケジューラの使い方

決まった時刻に仕事をさせる(Oracle)

書き方

BEGIN DBMS_SCHEDULER.CREATE_JOB(job_name => 'APP.PURGE_LOGS', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN … END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY;BYHOUR=2;BYMINUTE=0;BYSECOND=0', enabled => TRUE); END;
EXEC DBMS_SCHEDULER.RUN_JOB('APP.PURGE_LOGS')
EXEC DBMS_SCHEDULER.DISABLE('APP.PURGE_LOGS')  /  ENABLE  /  DROP_JOB
EXEC DBMS_SCHEDULER.SET_ATTRIBUTE('APP.PURGE_LOGS', 'repeat_interval', 'FREQ=…')
SELECT job_name, enabled, state, next_run_date FROM dba_scheduler_jobs;
SELECT job_name, status, error#, additional_info FROM dba_scheduler_job_run_details;

CREATE_JOB でジョブを作ります。enabled を書かないと FALSE(動かない)なので注意。repeat_interval は FREQ(DAILY・HOURLY など)と BYHOUR・BYMINUTE などで書き、BYHOUR だけだと分と秒は start_date のものになります。RUN_JOB はいますぐ動かし、結果は DBA_SCHEDULER_JOB_RUN_DETAILS(STATUS・ERROR#・ADDITIONAL_INFO)に残ります。ほかのユーザーのジョブを作るには CREATE ANY JOB が要ります。

例

EXEC DBMS_SCHEDULER.RUN_JOB('APP.PURGE_LOGS')

実際に打って練習する

Oracle DBA コースの Lv56「決まった時の務め スケジューラ」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

Oracle Database の管理コマンド一覧(DBA)へ戻る