スケジューラ・ジョブのユーザー定義通知ハンドラ
スケジューラ・ジョブ通知ハンドラ・プロシージャを追加すると、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
値を指定できます。Eメール通知を構成するか、スケジューラ・ジョブの通知ハンドラを作成できます。
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;
/
親トピック: スケジューラ・ジョブのユーザー定義通知ハンドラ