スケジューラ・ジョブのユーザー定義通知ハンドラ
スケジューラ・ジョブ通知ハンドラ・プロシージャを追加すると、Autonomous Databaseで実行されているスケジュール済ジョブまたは自動ジョブをモニターできます。
- スケジューラ・ジョブのユーザー定義通知ハンドラについて
データベース・スケジューラでは、カスタム・コードを使用してHTTPまたはRESTエンドポイントをコールし、Autonomous Databaseインスタンスでのスケジューラ・ジョブのモニタリングを改善できるジョブ通知ハンドラ・プロシージャがサポートされています。 - ジョブ通知ハンドラ・プロシージャの作成
ジョブ通知ハンドラを作成するステップを提供します。 - ジョブ・ハンドラ通知プロシージャの登録
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
プロシージャを使用して、JOB_NOTIFICATION_HANDLER
属性値を設定し、ジョブ・ハンドラ通知プロシージャを登録します。 - ジョブ・ハンドラ通知プロシージャのトリガー
ユーザー定義のジョブ通知ハンドラ・プロシージャをトリガーするには、DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION
プロシージャをコールする必要があります。 - ジョブ・ハンドラ通知プロシージャの登録解除
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
を使用して、ジョブ・ハンドラ通知プロシージャの登録を解除します。
親トピック: 開発
スケジューラ・ジョブのユーザー定義通知ハンドラについて
データベース・スケジューラでは、Autonomous Databaseインスタンスでのスケジューラ・ジョブのモニタリングを改善するために、カスタム・コードを使用してHTTPまたはRESTエンドポイントをコールできるジョブ通知ハンドラ・プロシージャがサポートされています。
ハンドラ・プロシージャは、ジョブ所有者の名前、クラス名、イベント・タイプ、タイムスタンプなど、ジョブに関連するすべての情報をJSON形式で受信します。情報に基づいて、ハンドラ・プロシージャは必要なアクションを実行します。
Oracle Schedulerの詳細は、DBMS_SCHEDULERを参照してください。
スケジューラ・ジョブのユーザー定義通知ハンドラの構成は、次のステップで構成されます。
-
「ジョブ通知ハンドラ・プロシージャの作成」の説明に従って、ジョブ通知ハンドラ・プロシージャを作成します。
-
「ジョブ・ハンドラ通知プロシージャの登録」の説明に従って、データベースのジョブ通知ハンドラ・プロシージャを登録します。
-
「ジョブ・ハンドラ通知プロシージャのトリガー」の説明に従って、ジョブ通知ハンドラ・プロシージャをトリガーします。
-
「ジョブ・ハンドラ通知プロシージャの登録解除」の説明に従って、データベースのジョブ通知ハンドラ・プロシージャを登録解除します。
親トピック: スケジューラ・ジョブのユーザー定義通知ハンドラ
ジョブ・ハンドラ通知プロシージャの登録
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
プロシージャを使用して、JOB_NOTIFICATION_HANDLER
属性値を設定し、ジョブ・ハンドラ通知プロシージャを登録します。
JOB_NOTIFICATION_HANDLER
属性は、使用するジョブ・ハンドラ通知プロシージャを指定します。
-
ADMINユーザーとしてログインするか、
MANAGE SCHEDULER
権限を持ちます。 -
ハンドラ・プロシージャに対する
EXECUTE
権限またはEXECUTE ANY PROCEDURE
システム権限があること。
JOB_NOTIFICATION_HANDLER
属性とEMAIL_SERVER
属性は相互に排他的です。SET_SCHEDULER_ATTRIBUTE
プロシージャのATTRIBUTE
パラメータには、一度にJOB_NOTIFICATION_HANDLER
値またはEMAIL_SERVER
値を指定できます。電子メール通知を構成するか、スケジューラ・ジョブの通知ハンドラを作成できます。
EMAIL_SERVER
とJOB_NOTIFICATION_HANDLER
の両方のグローバル属性を設定しようとすると、ORA-27488
エラーが発生します。
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
プロシージャを実行して、ジョブ・ハンドラ通知プロシージャを登録します。
BEGIN
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE('job_notification_handler','ADMIN.SEND_NOTIFICATION');
END;
/
この例では、ADMIN.SEND_NOTIFICATION
プロシージャをデータベースのジョブ・ハンドラ通知プロシージャとして登録します。
詳細は、SET_SCHEDULER_ATTRIBUTEプロシージャを参照してください。
次のコマンドを実行して、ジョブ通知ハンドラを確認します。
SELECT value FROM dba_scheduler_global_attribute WHERE attribute_name='JOB_NOTIFICATION_HANDLER';
VALUE
---------------
"ADMIN"."SEND_NOTIFICATION"
詳細は、DBA_SCHEDULER_GLOBAL_ATTRIBUTEを参照してください。
EXECUTE
権限を割り当てて、他のユーザーがジョブ通知ハンドラを使用できるようにする必要があります。たとえば、次のとおりです。
GRANT EXECUTE ON ADMIN.SEND_NOTIFICATION To DWUSER;
ジョブ・ハンドラ通知プロシージャに対する権限がない場合は、ORA-27476 ("\"%s\".\"%s\" does not exist")
またはORA-27486 ("insufficient privileges")
エラーがスローされます。
親トピック: スケジューラ・ジョブのユーザー定義通知ハンドラ
ジョブ・ハンドラ通知プロシージャのトリガー
ユーザー定義ジョブ通知ハンドラ・プロシージャをトリガーするには、DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION
プロシージャをコールする必要があります。
DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION
のオーバーロード・フォームを使用すると、ジョブ通知ハンドラ・プロシージャをトリガーして通知を送信できます。ただし、ジョブ通知ハンドラ・プロシージャを登録しても、これらの通知は電子メールの形式で送信されません。したがって、パラメータSUBJECT
およびBODY
はオプションです。RECIPIENT
パラメータは引き続き必須です。このオーバーロードされた形式のプロシージャは電子メール通知を送信しないため、RECIPIENT
パラメータに任意の文字列値を指定できます。
親トピック: スケジューラ・ジョブのユーザー定義通知ハンドラ
ジョブ・ハンドラ通知プロシージャの登録解除
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
を使用して、ジョブ・ハンドラ通知プロシージャを登録解除します。
MANAGE SCHEDULER
権限を持っている必要があります。
ジョブ・ハンドラ通知プロシージャの登録を解除する例:
BEGIN
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE ('job_notification_handler','');
END;
/
親トピック: スケジューラ・ジョブのユーザー定義通知ハンドラ