スケジューラ・ジョブのユーザー定義通知ハンドラ
スケジューラ・ジョブ通知ハンドラ・プロシージャを追加すると、Autonomous Databaseで実行されているスケジュール済または自動化されたジョブをモニターできます。
- スケジューラ・ジョブのユーザー定義通知ハンドラについて
データベース・スケジューラでは、Autonomous Databaseインスタンスのスケジューラ・ジョブのモニタリングを改善するために、カスタム・コードを使用してHTTPまたはRESTエンドポイントをコールできるジョブ通知ハンドラ・プロシージャがサポートされています。 - ジョブ通知ハンドラ・プロシージャの作成
ジョブ通知ハンドラを作成するステップを示します。 - ジョブ・ハンドラ通知の登録プロシージャ
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 ANY PROCEDURE
システム権限に対するEXECUTE
権限を持ちます。
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;
/
親トピック: スケジューラ・ジョブのユーザー定義通知ハンドラ