スケジューラによるタスクの自動化

  • リソースマネージャのコンポーネント
    • リソース・コンシューマ・グループ:ユーザを優先度ごとにまとめたもの
    • リソース・プラン:コンシュマーグループごとのリソース(主にCPU)の使用割合を指定している
  • スケジューラのコンポーネント
    • プログラム:実際に働く人(実行可能ファイルストアドプロシージャPL/SQLブロックも指定可)
    • ジョブ:(引数の)プログラムを(引数の)指定時刻になったら実行する人
    • ジョブクラス:ジョブのカテゴライズ。リソースコンシューマグループと結び付けられる
    • スケジュール:実行間隔(2時間に1回 等)に名前をつけたもの
    • ウィンドウ:時間枠(0:00〜6:00 等)に名前をつけたもの。スケジュールと結びつくと、ウィンドウがOPENのときのみスケジュールが有効になる。さらに、リソースプラントも結び付けられる。ややこしや。
    • ウィンドウ・グループ:複数のウィンドウをまとめたもの。NIGHTウィンドウとWEEKENDウィンドウをまとめてMAINTENANCEウィンドウグループにするみたいに。
  • スケジューラ関係をいじるのに必要な権限
    • プログラム、ジョブ、スケジュール:作った人のもの(CREATE JOB権限が必要)
    • ジョブクラス、ウィンドウ、ウィンドウグループ:SYSスキーマ(MANAGE SCHEDULER権限またはSCHEDULER_ADMINロールを付与して)
  • スケジューラで使えるカレンダ式
    • FREQ=MONTHLY;BYDAY=2FRI 毎月第2週金曜日(こういう細かい設定はEMでは不可能)
  • ロギング設定(ジョブまたはジョブクラス)
    • DBMS_SCHEDULER.LOGGING_OFF:ロギングしない
    • DBMS_SCHEDULER.LOGGING_RUNS:実行ごとに詳細ログ記録
    • DBMS_SCHEDULER.LOGGING_FULL:実行だけではなく、無効・有効・切替・作成なども記録する
  • 有効/無効が設定できるもの
    • プログラム
    • ウィンドウ
    • ウィンドウ・グループ
    • ジョブ
  • DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEプロシージャ
    • ATTRIBUTEパラメータに設定できる値
      • グローバルレベル:MAX_JOB_SLAVE_PROCESSES、DEFAULT_TIMEZONE、LOG_HISTORY
      • コンポーネントレベル:JOB_PRIORITY、MAX_FAILURES、LOGGING_LEVEL
  • ジョブログのパージ
    • EMの「ジョブ」ページ
    • DBMS_SCHEDULER.PRUGE_LOGプロシージャ
      • EXECUTE DBMS_SCHEDULER.PURGE_LOG(log_history => 5,which_log => 'JOB_LOG')
  • ジョブログの確認
    • DBA_SCHEDULER_JOB_LOG
    • DBA_SCHEDULER_JOB_RUN_DETAILS(実行時間はこっち)
  • その他スケジューラ関連
    • DBA_SCHEDULER_JOBS:作成済みのジョブオブジェクトに関する定義情報
    • DBA_SCHEDULER_SCHEDULES:作成済みのスケジュールオブジェクトに関する定義情報