機械翻訳について

DBMS_CLOUD_NOTIFICATIONパッケージ

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

DBMS_CLOUD_NOTIFICATION概要

DBMS_CLOUD_NOTIFICATIONパッケージについて説明します。

DBMS_CLOUD_NOTIFICATIONでサポートされるプロバイダは次のとおりです: 電子メール、Microsoft Teams、OCI通知(ONS)およびSlack。

DBMS_CLOUD_NOTIFICATIONパッケージで「OCI通知」サービスを使用する場合、DBMS_CLOUD_NOTIFICATION.SEND_MESSAGEプロシージャのみがサポートされます(DBMS_CLOUD_NOTIFICATION.SEND_DATAプロシージャはサポートされていません)

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 これは、String値にSMTPホスト名を指定します。
  • subject これは、電子メールの件名をString値で指定します。最大サイズは100文字です。
  • recipient これは、受信者の電子メールIDをString値で指定します。 複数の受信者が存在する場合は、電子メールID間にカンマを使用します。
  • to_cc これは、EメールのCCを受信するEメールIDを指定します。 String値です。 複数のCC受信者が存在する場合は、電子メールID間にカンマを使用します。
  • to_bcc これは、EメールのBCCを受信するEメール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 これは、String値のチャネルIDを指定します。 チャネルIDはチャネルの一意のIDで、チャネル名とは異なります。 Slackでは、チャネルの詳細を表示するときに、「情報」タブでチャネルIDを確認できます。
  • type これは、String値で出力形式を指定します。 有効な値はCSVまたはJSONです。

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

使用上のノート

  • DBMS_CLOUD.CREATE_CREDENTIAL (credential_name, username, password)プロシージャを使用して、資格証明オブジェクトを作成します。

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

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

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

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

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

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

SEND_MESSAGEプロシージャ

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

構文

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

パラメータ

パラメータ 説明

provider

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

有効な値は次のとおりです: ' email '、' msteams '、' slack 'および' oci '。

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

credential_name

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

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

  • msteamsプロバイダ: 資格証明には、usernamepasswordの両方にbot_idおよびbot_secretキーが含まれている必要があります。

  • slackプロバイダ: 資格証明のusername"SLACK_TOKEN"で、passwordはSlackボット・トークンである必要があります。

  • ociプロバイダ: 資格証明は、有効なOracle Cloud Infrastructure署名キー・ベースの資格証明またはリソース・プリンシパル資格証明のいずれかです。

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

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

message

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

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

params

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

プロバイダ・タイプemailの場合、有効なパラメータは:

  • sender: 承認済送信者のEメールIDをString値で指定します。
  • smtp_host: SMTPホスト名をString値で指定します。
  • subject: 電子メールの件名をString値で指定します。 最大サイズは100文字です。
  • recipient: String値で受信者の電子メールIDを指定します。 複数の受信者が存在する場合は、電子メールID間にカンマを使用します。
  • to_cc: EメールのCCを受信するEメールIDを指定します。 複数のCC受信者が存在する場合は、電子メールID間にカンマを使用します。
  • to_bcc: EメールのBCCを受信するEメールIDを指定します。 複数のBCC受信者が存在する場合は、電子メールID間にカンマを使用します。

プロバイダ・タイプmsteamsの場合、有効なパラメータは:

  • channel: チャネルIDをString値で指定します。

プロバイダ・タイプslackの場合、有効なパラメータは:

  • channel チャネルIDをString値で指定します。 このパラメータは必須です。 チャネルIDはチャネルの一意のIDで、チャネル名とは異なります。 Slackでは、チャネルの詳細を表示するときに、「情報」タブでチャネルIDを確認できます。

タイプがociのプロバイダ「OCI通知」の場合、有効なパラメータは次のとおりです:

  • topic_ocid: 指定
  • title: メッセージの件名を指定します。

ociプロバイダでは、サブスクリプションに基づいて、メッセージに対して使用可能なエンドポイントが異なります。 titleパラメータは、サブスクリプションごとに異なる方法で処理されます:

  • email: titleは、メッセージの件名を指定します。
  • Slack: title値は使用されません。 含まれている場合、値は無視されます。

Eメール・プロバイダの使用上のノート

emailプロバイダの場合、ユーザーは、Email Deliveryサーバーがsmtp_hostを取得するためにSMTP接続エンドポイントが必要です。 ユーザーは、credential_nameを取得するためにEmail Deliveryサーバーで認証するために、SMTP承認済送信者とその資格証明も必要です。 SMTP接続を構成し、SMTP資格証明を生成して承認する必要があります。

Msteamsプロバイダの使用上の注意

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

Slackプロバイダの使用上のノート

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

OCIプロバイダの使用上のノート「OCI通知」

DBMS_CLOUD_NOTIFICATIONは、「OCI通知」プロバイダをサポートします。 「OCI通知」プロバイダの詳細は、「通知の概要」を参照してください。

  • 「OCI通知」プロバイダを使用するには、次を実行する必要があります:
    • トピックの作成 トピックの作成の詳細は、「トピックの作成」を参照してください
    • 必要なサブスクリプションを作成します。 サブスクリプションの作成の詳細は、「サブスクリプションの作成」を参照してください。
    • サブスクリプションを作成したら、サブスクリプションを確認します。 メッセージは、確認済サブスクリプションにのみ公開されます。 サブスクリプションの確認の詳細は、「サブスクリプションの確認」を参照してください。
  • Autonomous Databaseインスタンス、資格証明(ユーザー資格証明を使用している場合)およびサブスクリプション・トピックはすべて同じリージョンに配置する必要があります。
  • 次の制限に注意してください。
    • メッセージ・サイズ制限: リクエスト当たりのメッセージ・サイズ制限は64KBです。 このサイズを超えるメッセージは、単一のリクエスト内で送信または処理できません。
    • メッセージ配信率制限: 使用されるプロトコルに応じて、異なるメッセージ配信率の制限があります。
      • emailプロトコル: 制限は、エンドポイント当たり1分当たり10メッセージです。

      この制限は、メッセージの送信および受信速度に影響を与える可能性があります。

    • トランザクション/分(TPM)/テナンシ制限: この操作のトピックごとにTPM制限は60です。 この制限は、特定のトピックに対して処理または処理できる1分当たりのメッセージの最大数を表します。 この制限を超えると、メッセージの処理または処理速度が遅くなる可能性があります。

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;
/ 

「OCI通知」でテキスト・メッセージを送信し、ociプロバイダを入力します:


BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'oci',
      credential_name  => 'OCI_CRED',
      message          => 'Text message for you.',      
      params           => json_object('topic_ocid'  value 'oci********pa',   
      'title'  value 'Title for message subject' ));
END;
/ 

BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'oci',
      credential_name  => 'OCI$RESOURCE_PRINCIPAL',
      message          => 'Text message for you.',      
      params           => json_object('topic_ocid'  value 'oci********pa',   
      'title'  value 'Title for message subject' ));
END;
/