0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle APEX のジョブスケジュール(Scheduler)を徹底解説

0
Posted at

Oracle APEX のジョブスケジュール(Scheduler)を徹底解説

APEX_APPLICATION_AUTOMATION の使い方と PL/SQL 例付き

Oracle APEX には 定期的な処理(バッチジョブ)を自動実行するための仕組み「ジョブスケジュール」 が標準で備わっています。
月次レポート送信、毎日のデータ集計、メール通知、バックグラウンドタスクなど、業務アプリでは欠かせない機能です。

本記事では、Oracle APEX 24.1 を使用してジョブスケジュール(Automation)を作成・管理する方法を、実例付きで分かりやすく解説します。


1. APEX のジョブスケジュールとは?

Oracle APEX の自動化処理は次の 2 種類があります。

① APEX Automations(APEX_APPLICATION_AUTOMATION)

  • APEX 画面から GUI で作成
  • SQL, PL/SQL, メール送信、REST 呼び出しなど
  • APEX アプリ内で簡単に管理できる
  • ノーコード/ローコードで扱いやすい

② Oracle Database Scheduler(DBMS_SCHEDULER)

  • PL/SQL で作成
  • より高度で柔軟
  • OS 統合や外部ジョブにも対応
  • APEX Automations も内部的には scheduler job を使う

通常の APEX 開発では ① Automation を使うのが簡単でおすすめです。


2. Automation の作成方法(ステップバイステップ)

ここでは、毎日 1 回「在庫数量が少ない商品をメール通知する」Automation を例に説明します。

2.1 Automation の作成

  1. APEX アプリケーションを開く
  2. 左メニュー → 「自動化(Automation)」
  3. 「作成 Create」 をクリック
  4. 名称:
  5. スケジュール:
  • 毎日
  • 09:00 実行

3. トリガー(行ソース)の設定

Automation は「対象レコード」を SQL で取得することができます。

例:在庫が 10 以下の商品を取得

select product_id, product_name, stock_quantity
from products
where stock_quantity <= 10

この SQL を Automation の「ソース(Row Source)」に設定します。

4. アクション(処理)の追加

Automation に対して複数のアクションを追加できます。

4.1 メール通知アクション

「アクション追加」 → メール送信(Send Email)

設定 値
宛先 inventory@example.com
件名 "在庫警告:&PRODUCT_NAME."
本文 "在庫が少なくなっています(数量:&STOCK_QUANTITY.)"

Automation のパラメータ(例: &PRODUCT_NAME.)は、Row Source の列を意味します。

5. PL/SQL アクションを追加する

より複雑な処理を行いたい場合は "Execute PL/SQL Code" を追加します。

🧩 例:在庫履歴テーブルにログを記録する PL/SQL
declare
v_id number := :product_id;
v_stock number := :stock_quantity;
begin
insert into stock_history(product_id, stock_quantity, log_date)
values(v_id, v_stock, sysdate);
end;

Automation 内では Row Source のカラムは :COLUMN_NAME として参照できます。

6. Automation のテスト実行と監視

▶ テスト実行

Automation には "Run Now(今すぐ実行)" ボタンがあり、作成後すぐに動作確認できます。

6.1 実行ログの確認

APEX には Automation のログが標準で用意されています。

  • GUI で確認

  • アプリケーション → Automation → 対象 Automation → 実行履歴(Activity Log)

  • SQL で確認

  • 内部ビュー APEX_AUTOMATION_LOG を使用できます。

select automation_name,
       action_name,
       log_timestamp,
       status,
       message
from apex_automation_log
order by log_timestamp desc;

7. 自動化が動かないときのチェックリスト

症状 確認すべきポイント
Automation が実行されない Scheduler job が有効か?
メールが送れない SMTP 設定が正しいか?
Row Source が空 SQL の WHERE 条件を確認
PL/SQL エラー Automation のログに詳細が残る

8. DBMS_SCHEDULER を使った高度なジョブ作成(オプション)

GUI ではなく PL/SQL で job を作りたい場合は dbms_scheduler.create_job を使います。
🧠 例:毎日 0 時にテーブルを更新する


begin
    dbms_scheduler.create_job(
        job_name        => 'JOB_UPDATE_STOCK',
        job_type        => 'plsql_block',
        job_action      => 'begin update products set last_checked = sysdate; end;',
        start_date      => systimestamp,
        repeat_interval => 'freq=daily; byhour=0; byminute=0; bysecond=0;',
        enabled         => true
    );
end;
/

9. Automation と DBMS_SCHEDULER の違いまとめ

項目 Automation DBMS_SCHEDULER
実装 GUI ベース PL/SQL コード
監視 APEX 管理画面 DBA / SQL
柔軟性 中程度 非常に高い
初心者向け
APEX アイテム参照 可能 不可

✅ まとめ

本記事では Oracle APEX の ジョブスケジュール(Automation と Scheduler) について説明しました。

  • AutomationAutomation は GUI で簡単に作れ、業務向け定期処理に最適
  • Row Source を使うことで対象レコードごとに処理が可能
  • メール送信、PL/SQL、REST 呼び出しなど多様なアクションが設定可能
  • Scheduler を使えばデータベース標準の強力なバッチ処理も作成できる
  • APEX の Automation を活用すれば、アプリの自動化・効率化が大幅に向上します。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?