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 ;

