DBMS_CLOUD_NOTIFICATIONパッケージ

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

DBMS_CLOUD_NOTIFICATION概要

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

サポートされるプロバイダは、電子メール、Microsoft TeamsおよびSlackです。

DBMS_CLOUD_NOTIFICATIONサブプログラムの概要

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

サブプログラム 説明

SEND_DATAプロシージャ

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

SEND_MESSAGEプロシージャ

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

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

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

電子メール・プロバイダの場合、資格証明は、そのユーザー名とパスワードを含む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.EメールのCCを受信するEメールIDを指定します。これはString値です。複数のCC受信者がいる場合は、EメールIDの間にカンマを使用します。
  • to_bcc.EメールのBCCを受信するEメールIDを指定します。これはString値です。複数のBCC受信者がいる場合は、電子メールIDの間にカンマを使用します。
  • message.これは、メッセージ・テキストをString値で指定します。
  • type.これは、CSVまたはJSONとしてString値の出力形式を指定します。
  • title.これは、SQL出力の添付のタイトルをString値で指定します。タイトルには、ファイル名の生成に使用されるため、文字、数字、アンダースコア、ハイフンまたはドットのみをその値に含める必要があります。

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

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

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

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

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

使用上のノート

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

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

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

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

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

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

  • msteamsプロバイダの場合、ユーザーはMicrosoft Teamsアプリケーションとそれに構成されているボットを必要とします。管理センターから管理者からの承認を取得した後、アプリケーションを組織に公開し、インストールする必要があります。また、ユーザーは、Azure Portalからグラフ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;
/ 

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

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

電子メール・プロバイダの場合、資格証明は、そのユーザー名とパスワードを含むSMTP承認送信者の資格証明の名前です。

msteamsプロバイダの場合、資格証明には、ユーザー名およびパスワードの両方にbot_idおよびbot_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.EメールのCCを受信するEメールIDを指定します。複数のCC受信者がいる場合は、EメールIDの間にカンマを使用します。
  • to_bcc.EメールのBCCを受信するEメールIDを指定します。複数のBCC受信者がいる場合は、電子メールIDの間にカンマを使用します。
プロバイダ・タイプmsteamsの場合、有効なパラメータは次のとおりです。
  • channel.String値のチャネルIDを指定します。
プロバイダ・タイプslackの場合、有効なパラメータは次のとおりです。
  • channel.String値のチャネルIDを指定します。

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

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

使用上のノート

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

  • emailプロバイダの場合、ユーザーは電子メール配信サーバーのSMTP接続エンドポイントでsmtp_hostを取得する必要があります。また、ユーザーは、credential_nameを取得するために、電子メール配信サーバーとの認証にSMTP承認済送信者とその資格証明が必要です。SMTP接続を構成し、SMTP資格証明を生成して承認する必要があります。
  • msteamsプロバイダの場合、ユーザーはMicrosoft Teamsアプリケーションとそれに構成されているボットを必要とします。管理センターから管理者からの承認を取得した後、アプリケーションを組織に公開し、インストールする必要があります。また、ユーザーは、Azure Portalからグラフ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;
/