Oracleで定期実行ジョブを生成する方法
Oracleデータベースにはスケジュール機能が搭載されていませんが、Oracle Job Schedulerを使用して同様の機能を実現できます。以下に、Oracleデータベースでスケジュールを作成する手順を示します。
- まず、ジョブの属性を定義するジョブクラスを作成する必要があります。ジョブクラスは次のステートメントを使用して作成できます:
BEGIN
DBMS_SCHEDULER.CREATE_JOB_CLASS(
job_class_name => 'my_job_class',
comments => 'My job class'
);
END;
/
- さあいよいよジョブを作成してみましょう。以下の文章を使ってジョブを作成できます。
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'my_job',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN my_procedure; END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=HOURLY; INTERVAL=1;',
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => 'My job'
);
END;
/
この例では、ジョブは my_procedure という名前のストアドプロシジャをコールする PL/SQL ブロックです。ジョブは現在の時刻に開始され、1 時間ごとに繰り返して実行されます。
- ジョブを起動する: ジョブを作成した後は、ジョブを実行するためにスケジューラーを起動する必要があります。スケジューラーは次の文を使用して起動できます。
BEGIN
DBMS_SCHEDULER.START_SCHEDULER();
END;
/
上記のステップでOracleデータベースにスケジュールしたジョブを作成できます。関連するDBMS_SCHEDULERサブプログラムを使用してジョブのプロパティを管理して変更できます(ジョブの実行時間の変更、繰り返し間隔など)。