oracle

Oracle ジョブ

Oracle内部にもジョブ管理の仕組みがあります。事前に登録したプロシージャや、SQLを計画実行する事ができます。crontabや運用管理ソフトからわざわざ起動をかけなくてもOracle単体で完結します。個人的にはパフォーマンス調査のためのプロシージャを登録して使っています。

DBAロールを保持していればジョブの登録は可能ですが、DBAロールを保持していなくとも、SCHEDULER_ADMINロールを保持していれば登録可能です

ジョブ登録例
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
  job_name         =>  'JOB_SOONI_PFCK',
  job_type         =>  'PLSQL_BLOCK',   -- 無名ブロック
  job_action       =>  'BEGIN SOONI_PFCHECK.SNAPSHOT(); END;',
  start_date       =>  to_date('2021/04/21 20:30:00','yyyy/mm/dd hh24:mi:ss'),
  repeat_interval  =>  'FREQ=MINUTELY;INTERVAL=15',
  end_date         =>  to_date('2120/11/04 00:00:00','yyyy/mm/dd hh24:mi:ss'),
  auto_drop        =>  FALSE,
  enabled          =>  TRUE,
  comments         =>  '実行SQL取得');
END;
/
ジョブ削除例
BEGIN
DBMS_SCHEDULER.DROP_JOB('JOB_SOONI_PFCK');
END;
ジョブ登録確認
SELECT * FROM USER_SCHEDULER_JOBS
;
ジョブ実行ログ確認
SELECT 
j.LOG_DATE,job_name, job_class, operation, status 
FROM USER_SCHEDULER_JOB_LOG j where j.LOG_DATE >= to_char(sysdate,'YYYY/MM/DD') order by j.LOG_DATE desc
;
スポンサーリンク