スケジューラ・ジョブのユーザー定義通知ハンドラ
スケジューラ・ジョブ通知ハンドラ・プロシージャを追加すると、Autonomous Databaseで実行されているスケジュール済または自動化されたジョブをモニターできます。
スケジューラ・ジョブのユーザー定義通知ハンドラについて
データベース・スケジューラでは、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パラメータに任意の文字列値を指定できます。