50 DBMS_CLOUD_NOTIFICATION

DBMS_CLOUD_NOTIFICATIONパッケージを使用すると、メッセージ、またはSQL問合せの出力をプロバイダに送信できます。

50.1 DBMS_CLOUD_NOTIFICATIONの概要

このシナリオでは、DBMS_CLOUD_NOTIFICATIONパッケージの設定と使用について説明します。

サポートされているプロバイダは、Email、Microsoft TeamsおよびSlackです。

50.2 DBMS_CLOUD_NOTIFICATIONサブプログラムの要約

この表は、このパッケージに含まれているサブプログラムの概要を示しています。

サブプログラム 説明

SEND_DATAプロシージャ

SQL問合せの出力をプロバイダに送信します。

SEND_MESSAGEプロシージャ

プロバイダにテキスト・メッセージを送信します。

50.2.1 SEND_DATAプロシージャ

SEND_DATAプロシージャは、指定された問合せの結果をプロバイダに送信します。

構文

DBMS_CLOUD_NOTIFICATION.SEND_DATA(
       provider           IN  VARCHAR2,
       credential_name    IN  VARCHAR2,
       query              IN  CLOB,
       params             IN  CLOB
 );

パラメータ

パラメータ 説明

provider

プロバイダを指定します。

有効な値は、'email'、'msteams'および'slack'です

このパラメータは必須です。

credential_name

プロバイダにアクセスするための資格証明オブジェクトの名前。

emailプロバイダの場合、この資格証明は、そのユーザー名およびパスワードを含むSMTP承認済送信者の資格証明の名前です。

msteamsプロバイダの場合、この資格証明は、この資格証明の名前です。

Slackプロバイダの場合、この資格証明のユーザー名は"SLACK_TOKEN"であり、passwordはSlackボット・トークンである必要があります。

このパラメータは必須です。

query

実行するSQL問合せを指定します。結果がプロバイダに送信されます。

このパラメータは必須です。

params

providerの特定のパラメータをJSON形式で指定します。

プロバイダ・タイプemailの場合、有効なパラメータは次のとおりです:

  • sender。これにより、承認済送信者の電子メールIDをString値で指定します。
  • smtp_host。これにより、SMTPホスト名をString値で指定します。
  • subject。これにより、電子メールの件名をString値で指定します。最大サイズは100文字です。
  • recipient。これにより、受信者の電子メールIDをString値で指定します。複数の受信者がいる場合は、電子メールID間にコンマを使用します。
  • to_cc。これにより、電子メールのCCを受信する電子メールIDを指定します。それはString値です。複数のCC受信者がいる場合は、電子メールID間にカンマを使用します。
  • to_bcc。これにより、電子メールのBCCを受信する電子メールIDを指定します。それはString値です。複数のBCC受信者がいる場合は、電子メールID間にカンマを使用します。
  • message。これにより、メッセージ・テキストをString値で指定します。
  • type。これにより、出力形式をString値でCSVまたはJSONとして指定します。
  • title。これにより、SQL出力の添付のタイトルをString値で指定します。このタイトルはファイル名の生成に使用されるため、その値には文字、数字、アンダースコア、ハイフンまたはドットのみを使用する必要があります。

プロバイダ・タイプmsteamsの場合、有効なパラメータは次のとおりです:

  • tenant。これにより、テナントIDをString形式で指定します。
  • team。これにより、チームIDをString形式で指定します。
  • channel。これにより、チャネルIDをString形式で指定します。
  • title。これにより、ファイルのタイトルをString形式で指定します。最大サイズは50文字です。
  • type。これにより、出力形式をString値で指定します。有効な値はCSVまたはJSONです。

プロバイダ・タイプslackの場合、有効なパラメータは次のとおりです:

  • channel。これにより、チャネルIDをString値で指定します。このチャネルIDはチャネルの一意のIDであり、チャネル名とは異なります。Slackでは、チャネルの詳細を表示すると、「About」タブでそのチャネルIDを確認できます。
  • type。これにより、出力形式をString値で指定します。有効な値はCSVまたはJSONです。

このパラメータは必須です。

使用上のノート

  • 資格証明オブジェクトを作成するには、プロシージャDBMS_CLOUD.CREATE_CREDENTIAL(credential_nameusernamepassword)を使用します。

    詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。

  • emailプロバイダの場合は、次の点に注意してください:

    • ユーザーは、smtp_hostを取得するために、電子メール配信サーバーのSMTP接続エンドポイントが必要です。ユーザーは、credential_nameを取得するために、SMTP承認済送信者と、電子メール配信サーバーでの認証のためのその資格証明も必要です。SMTP接続を構成する必要があり、SMTP資格証明を生成し承認を受ける必要があります。

    • emailプロバイダを指定してDBMS_CLOUD_NOTIFICATION.SEND_DATAを使用するときの、サポートされている最大メッセージ・サイズは32KBです。

    • DBMS_CLOUD_NOTIFICATIONは、Autonomous AI Databaseバージョン19.21以上でのメール通知にのみ使用できます。

  • msteamsプロバイダの場合、ユーザーは、Microsoft Teamsアプリケーションが必要であり、それにボットが構成されている必要があります。管理センターから管理者による承認を得た後、このアプリケーションを組織に公開し、インストールする必要があります。ユーザーは、Azure PortalからGraph APIのFiles.ReadWrite.All権限とChannelSettings.Read.All権限にアクセスする必要もあります。必要なトークンを生成するには、ユーザー名としてbot_id、パスワードとしてbot_secretが必要です。

    Microsoft Teams用にDBMS_CLOUD_NOTIFICATION.SEND_DATAを使用するときの、サポートされている最大ファイル・サイズは4MBです。

  • slackプロバイダの場合、usernameの値は任意の有効な文字列にでき、passwordはSlackボット・トークンです。

emailプロバイダを指定してSQL出力を送信します:

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'EMAIL_CRED',
    username        => 'username',
    password        => 'password');
END;
/

BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_DATA(
        provider        => 'email',
        credential_name => 'EMAIL_CRED',
        query           => 'SELECT tablespace_name FROM dba_tablespaces',
        params          => json_object('recipient' value  'mark@oracle.com, suresh@oracle.com',
                                       'to_cc'  value 'nicole@oracle.com1, jordan@oracle.com',
                                       'to_bcc' value 'manisha@oracle.com',
                                       'subject' value 'Test subject',
                                       'type' value 'json',
                                       'title' value 'mytitle',
                                       'message' value 'This is the message',
                                       'smtp_host' value 'smtp.email.example.com',
                                       'sender'    value  'approver_sender@oracle.com' )
   );
   END;
/

msteamsプロバイダを指定してSQL出力を送信します:

BEGIN     
    DBMS_CLOUD.CREATE_CREDENTIAL(credential_name => 'TEAMS_CRED',       
        username        => 'bot_id', 
        password        => 'bot_secret');
END;
/

BEGIN
     DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(provider => 'msteams',
        credential_name => 'TEAMS_CRED',
        query           => 'SELECT tablespace_name FROM dba_tablespaces',
        params          => json_object('tenant'value '5b743bc******c0286',
                                       'team'value '0ae401*********5d2bd',
                                       'channel'value '19%3a94be023*****%40thread.tacv2',
                                       'title'value 'today',
                                       'type'value 'csv'));
END;
/
 

slackプロバイダを指定してSQL出力を送信します:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'SLACK_CRED',
     username        => 'SLACK_TOKEN',
     password        => 'password');
END;
/
BEGIN
  DBMS_CLOUD_NOTIFICATION.SEND_DATA(
      provider        => 'slack',
      credential_name => 'SLACK_CRED',
      query           => 'SELECT username, account_status, expiry_date FROM USER_USERS WHERE rownum < 5',
      params          => json_object('channel' value 'C0....08','type' value 'csv'));
END;
/ 

50.2.2 SEND_MESSAGEプロシージャ

このプロシージャは、プロバイダにテキスト・メッセージを送信します。

構文

DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
       provider           IN  VARCHAR2,
       credential_name    IN  VARCHAR2,
       message            IN  CLOB,
       params             IN  CLOB
 );

パラメータ

パラメータ 説明

provider

プロバイダを指定します。

有効な値は、'email'、'msteams'および'slack'です

このパラメータは必須です。

credential_name

プロバイダにアクセスするための資格証明オブジェクトの名前。

emailプロバイダの場合、この資格証明は、そのユーザー名およびパスワードを含むSMTP承認済送信者の資格証明の名前です。

msteamsプロバイダの場合、この資格証明では、ユーザー名とパスワードの両方にbot_idbot_secretキーが含まれている必要があります。

Slackプロバイダの場合、この資格証明のユーザー名は"SLACK_TOKEN"であり、passwordはSlackボット・トークンである必要があります。

このパラメータは必須です。

message

メッセージ・テキストを指定します。

このパラメータは必須です。

params

providerの特定のパラメータをJSON形式で指定します。

プロバイダ・タイプemailの場合、有効なパラメータは次のとおりです:
  • sender。これにより、承認済送信者の電子メールIDをString値で指定します。
  • smtp_host。これにより、SMTPホスト名をString値で指定します。
  • subject。これにより、電子メールの件名をString値で指定します。最大サイズは100文字です。
  • recipient。これにより、受信者の電子メールIDをString値で指定します。複数の受信者がいる場合は、電子メールID間にコンマを使用します。
  • to_cc。これにより、電子メールのCCを受信する電子メールIDを指定します。複数のCC受信者がいる場合は、電子メールID間にカンマを使用します。
  • to_bcc。これにより、電子メールのBCCを受信する電子メールIDを指定します。複数のBCC受信者がいる場合は、電子メールID間にカンマを使用します。
プロバイダ・タイプがmsteamsの場合、有効なパラメータは次のとおりです:
  • channel。これにより、チャネルIDをString値で指定します。
プロバイダ・タイプがslackの場合、有効なパラメータは次のとおりです:
  • channel。これにより、チャネルIDをString値で指定します。

このチャネルIDはチャネルの一意のIDであり、チャネル名とは異なります。Slackでは、チャネルの詳細を表示すると、「About」タブでそのチャネルIDを確認できます。

このパラメータは必須です。

使用上のノート

資格証明オブジェクトを作成するには、プロシージャDBMS_CLOUD.CREATE_CREDENTIAL(credential_nameusernamepassword)を使用します。詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。

  • emailプロバイダの場合、ユーザーは、smtp_hostを取得するために、電子メール配信サーバーのSMTP接続エンドポイントが必要です。ユーザーは、credential_nameを取得するために、SMTP承認済送信者と、電子メール配信サーバーでの認証のためのその資格証明も必要です。SMTP接続を構成する必要があり、SMTP資格証明を生成し承認を受ける必要があります。
  • msteamsプロバイダの場合、ユーザーは、Microsoft Teamsアプリケーションが必要であり、それにボットが構成されている必要があります。管理センターから管理者による承認を得た後、このアプリケーションを組織に公開し、インストールする必要があります。ユーザーは、Azure PortalからGraph APIのFiles.ReadWrite.All権限とChannelSettings.Read.All権限にアクセスする必要もあります。必要なトークンを生成するには、ユーザー名としてbot_id、パスワードとしてbot_secretが必要です。
  • slackプロバイダの場合、usernameの値は任意の有効な文字列にでき、passwordはSlackボット・トークンです。

emailプロバイダを指定してテキスト・メッセージを送信します:

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'EMAIL_CRED',
    username        => 'username',
    password        => 'password');
END;
/

BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
        provider        => 'email',
        credential_name => 'EMAIL_CRED',
        message         => 'Subject content',
        params          => json_object('recipient' value  'mark@oracle.com, suresh@oracle.com',
                                       'to_cc'  value 'nicole@oracle.com, jordan@oracle.com',
                                       'to_bcc' value 'manisha@oracle.com',
                                       'subject' value 'Test subject',
                                       'smtp_host' value 'smtp.email.example.com',
                                       'sender'    value  'approver_sender@oracle.com' )
   );
   END;
/

msteamsプロバイダを指定してテキスト・メッセージを送信します:

BEGIN     
    DBMS_CLOUD.CREATE_CREDENTIAL(credential_name => 'TEAMS_CRED',       
        username        => 'bot_id', 
        password        => 'bot_secret');
END;
/

BEGIN
     DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
        provider        => 'msteams',
        credential_name => 'TEAMS_CRED',
        message         => 'text from new teams api',
        params          => json_object('channel'value 'C0....08'),'region'value 'india');
END;
/
 

slackプロバイダを指定してテキスト・メッセージを送信します:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'SLACK_CRED',
     username        => 'SLACK_TOKEN',
     password        => 'password');
END;
/
BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'slack',
      credential_name   => 'SLACK_CRED',
      message           => 'Send text from Autonomous Database.',
      params            => json_object('channel' value 'C0....08'));
END;
/