2023年10月16日月曜日

Oracle APEXをインストールすると作成されるDBMS_SCHEDULERジョブの開始時刻について

オラクル・データベースにOracle APEXをインストールすると、複数のDBMS_SCHEDULERジョブが作成されます。

作成されるDBMS_SCHEDULERジョブの一覧は、Oracle APEX管理ガイドの付録Aに記載されています。

Oracle APEX管理ガイド リリース 23.1
A. DBMS_SCHEDULERジョブ

いくつかのジョブは、毎日午前1時または午前2時に実行されるようにスケジュールされています。ローカルの環境のオラクル・データベースにOracle APEXをインストールする場合、データベースのタイムゾーンは通常日本時間(JST)になっています。Autonomous Databaseはそれとは異なり、通常はUTCでインスタンスが作成されます。

それぞれの環境で、Oracle APEXが作成したDBMS_SCHEDULERジョブの開始時間を確認します。

確認はSQL Developer Webのスケジューリングから行います。

ローカルにインストールした環境です。オラクル・データベースが稼働しているOSの環境としてJSTが設定され、オラクル・データベースはそのタイムゾーンで動作しています。


ユーザーのプリファレンスを開き、タイムゾーンとしてローカル・タイムゾーン(Asia/Tokyo (UTC+09:00))が設定されていることを確認します。


スケジューリングを開きます。フィルタ条件ORACLE_APEXを与え、一覧する対象をOracle APEXが作成したジョブに限定します。


ジョブORACLE_APEX_BACKUP午前2時ORACLE_APEX_DAILY_MAINTENANCE午前1時ORACLE_APEX_DAILY_METRICS午前2時ORACLE_APEX_DICTIONARY_CACHE午前1時ORACLE_APEX_TASK_PURGE午前2時にスケジュールされていることが確認できます。

おおむねマニュアルに記載のある時刻にジョブが開始します。ただし、ORACLE_APEX_DAILY_METRICSはマニュアルに記載がありません。マニュアルへの更新漏れでしょう。

Autonomous Databaseでのジョブを確認します。確認手順はローカルの環境と同じです。


先ほどのジョブが9時間進んだ時刻に開始されるようになっています。UTCの午前1時に開始するジョブは日本時間に午前10時に開始し、UTCで午前2時に開始するジョブは日本時間の午前11時に開始します。

履歴のレポートやチャートを開くと、これらのジョブでどの程度の負荷が発生しているかを確認できます。


チャートの表示例です。


処理が忙しい時にこれらのメンテナンス・ジョブが動作しないように開始時刻を変更したり、節約のためにデータベースを停止している時間帯にメンテナンス・ジョブが動作することがないように開始時刻を調整するといった検討は必要かもしれません。