DBMS_CLOUD_NOTIFICATION-Package

Mit dem Package DBMS_CLOUD_NOTIFICATION können Sie Nachrichten oder die Ausgabe einer SQL-Abfrage an einen Provider senden.

DBMS_CLOUD_NOTIFICATION - Überblick

Beschreibt das Package DBMS_CLOUD_NOTIFICATION.

Die unterstützten Provider mit DBMS_CLOUD_NOTIFICATION sind: E-Mail, Microsoft Teams, OCI Notifications (ONS) und Slack.

Wenn Sie den OCI Notifications-Service mit dem Package DBMS_CLOUD_NOTIFICATION verwenden, wird nur die Prozedur DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE unterstützt (die Prozedur DBMS_CLOUD_NOTIFICATION.SEND_DATA wird nicht unterstützt)

Zusammenfassung der DBMS_CLOUD_NOTIFICATION-Unterprogramme

In dieser Tabelle werden die im Package enthaltenen Unterprogramme zusammengefasst.

Unterprogramm Beschreibung

Prozedur SEND_DATA

Ausgabe der SQL-Abfrage an einen Provider senden

Prozedur SEND_MESSAGE

Textnachricht an einen Provider senden.

Prozedur SEND_DATA

Die Prozedur SEND_DATA sendet die Ergebnisse der angegebenen Abfrage an einen Provider.

Syntax

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

Parameter

Parameter Beschreibung

provider

Gibt den Provider an.

Gültige Werte sind: email, msteams und slack

Dieser Parameter ist erforderlich.

credential_name

Name des Zugangsdatenobjekts für den Zugriff auf den Provider.

Für den E-Mail-Provider sind die Zugangsdaten der Zugangsdaten des SMTP-genehmigten Absenders, der seinen Benutzernamen und sein Kennwort enthält.

Für den msteams-Provider sind die Zugangsdaten der Name der Zugangsdaten.

Für den Slack-Provider muss der Benutzername der Zugangsdaten "SLACK_TOKEN" lauten, und password ist das Slack-Bottoken.

Dieser Parameter ist erforderlich.

query

Gibt die auszuführende SQL-Abfrage an. Ergebnisse werden an den Mitarbeiter gesendet.

Dieser Parameter ist erforderlich.

params

Gibt bestimmte Parameter für die provider im JSON-Format an.

Für den Providertyp email sind folgende Parameter gültig:

  • sender. Gibt die E-Mail-ID des genehmigten Absenders in einem String-Wert an.
  • smtp_host. Gibt den SMTP-Hostnamen in einem String-Wert an.
  • subject. Gibt den Betreff der E-Mail in einem String-Wert an. Die maximale Größe beträgt 100 Zeichen.
  • recipient. Gibt die E-Mail-IDs der Empfänger in einem String-Wert an. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere Empfänger vorhanden sind.
  • to_cc. Gibt die E-Mail-IDs an, die eine Kopie der E-Mail erhalten. Dies ist ein String-Wert. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere CC-Empfänger vorhanden sind.
  • to_bcc. Gibt die E-Mail-IDs an, die einen BCC der E-Mail erhalten. Dies ist ein String-Wert. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere BCC-Empfänger vorhanden sind.
  • message. Gibt den Nachrichtentext in einem String-Wert an.
  • type. Gibt das Ausgabeformat in einem String-Wert als CSV- oder JSON-Datei an.
  • title. Gibt den Titel des Anhangs der SQL-Ausgabe in einem String-Wert an. Der Titel darf nur Buchstaben, Ziffern, Unterstriche, Bindestriche oder Punkte als Zeichen in seinem Wert enthalten, da er zur Generierung eines Dateinamens verwendet wird.

Für den Providertyp msteams sind folgende Parameter gültig:

  • tenant. Gibt die Mandanten-ID im Format String an.
  • team. Gibt die Team-ID im Format String an.
  • channel. Gibt die Kanal-ID im Format String an.
  • title. Gibt den Titel der Datei im Format String an. Die maximale Größe beträgt 50 Zeichen.
  • type. Gibt das Ausgabeformat in einem String-Wert an. Gültige Werte sind CSV oder JSON.

Für den Providertyp slack sind folgende Parameter gültig:

  • channel. Gibt die Kanal-ID in einem String-Wert an. Die Kanal-ID ist eine eindeutige ID für einen Kanal und unterscheidet sich vom Kanalnamen. Wenn Sie in Slack Kanaldetails anzeigen, finden Sie die Kanal-ID auf der Registerkarte "Info".
  • type. Gibt das Ausgabeformat in einem String-Wert an. Gültige Werte sind CSV oder JSON.

Dieser Parameter ist erforderlich.

Hinweise zur Verwendung

  • Verwenden Sie die Prozedur DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username, password), um das Zugangsdatenobjekt zu erstellen.

    Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  • Beachten Sie für den Provider email Folgendes:

    • Der Benutzer benötigt einen SMTP-Verbindungsendpunkt, damit der Email Delivery-Server smtp_host abrufen kann. Der Benutzer benötigt außerdem einen SMTP-genehmigten Absender und seine Zugangsdaten, um sich beim Email Delivery-Server zu authentifizieren, um die credential_name zu erhalten. Die SMTP-Verbindung muss konfiguriert sein, und die SMTP-Zugangsdaten müssen generiert und genehmigt werden.

    • Die maximale Nachrichtengröße, die bei der Verwendung von DBMS_CLOUD_NOTIFICATION.SEND_DATA mit dem email-Provider unterstützt wird, beträgt 32k Byte.

    • Sie können DBMS_CLOUD_NOTIFICATION nur für E-Mail-Benachrichtigungen mit Autonomous Database Version 19.21 und höher verwenden.

  • Für den Provider msteams benötigt der Benutzer die Microsoft Teams-App und einen darin konfigurierten Bot. Die App muss in der Organisation veröffentlicht und installiert werden, nachdem die Genehmigung vom Admin Center eingeholt wurde. Der Benutzer benötigt außerdem über das Azure-Portal Zugriff auf die Berechtigungen Files.ReadWrite.All und ChannelSettings.Read.All für die Graph-API. Um das erforderliche Token zu generieren, benötigt der Benutzer bot_id im Benutzernamen und bot_secret im Kennwort.

    Die maximale Dateigröße, die bei der Verwendung von DBMS_CLOUD_NOTIFICATION.SEND_DATA für Microsoft Teams unterstützt wird, beträgt 4 MB.

  • Für den Provider slack kann der Wert username eine beliebige gültige Zeichenfolge sein, und password ist das Slack-Bottoken.

Beispiele

Senden Sie SQL-Ausgabe mit dem Provider email:

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

Senden Sie SQL-Ausgabe mit dem Provider 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',
        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;
/
 

Senden Sie SQL-Ausgabe mit dem Provider slack:

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

Prozedur SEND_MESSAGE

Die Prozedur sendet eine Textnachricht an einen Provider.

Syntax

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

Parameter

Parameter Beschreibung

provider

Gibt den Provider an.

Gültige Werte sind: 'email', 'msteams', 'slack' und 'oci'.

Dieser Parameter ist erforderlich.

credential_name

Name des Zugangsdatenobjekts für den Zugriff auf den Provider.

  • email-Provider: Die Zugangsdaten sind der Name der Zugangsdaten des SMTP-genehmigten Absenders, der seinen Benutzernamen und sein Kennwort enthält.

  • msteams-Provider: Die Zugangsdaten müssen den Schlüssel bot_id und den Schlüssel bot_secret sowohl in username als auch in password enthalten.

  • slack-Provider: Die Zugangsdaten username müssen "SLACK_TOKEN" und password das Slack-Bottoken sein.

  • oci-Provider: Die Zugangsdaten sind entweder gültige, auf dem Oracle Cloud Infrastructure-Signaturschlüssel basierende Zugangsdaten oder Resource Principal-Zugangsdaten.

Dieser Parameter ist erforderlich.

Verwenden Sie die Prozedur DBMS_CLOUD.CREATE_CREDENTIAL, um das Zugangsdatenobjekt zu erstellen. Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

message

Gibt den Meldungstext an.

Dieser Parameter ist erforderlich.

params

Gibt bestimmte Parameter für die provider im JSON-Format an.

Für den Providertyp email sind folgende Parameter gültig:

  • sender: Gibt die E-Mail-ID des genehmigten Absenders in einem String-Wert an.
  • smtp_host: Gibt den SMTP-Hostnamen in einem String-Wert an.
  • subject: Gibt den Betreff der E-Mail in einem String-Wert an. Die maximale Größe beträgt 100 Zeichen.
  • recipient: Gibt die E-Mail-IDs der Empfänger in einem String-Wert an. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere Empfänger vorhanden sind.
  • to_cc: Gibt die E-Mail-IDs an, die einen CC der E-Mail erhalten. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere CC-Empfänger vorhanden sind.
  • to_bcc: Gibt die E-Mail-IDs an, die einen BCC der E-Mail erhalten. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere BCC-Empfänger vorhanden sind.

Für den Providertyp msteams ist der gültige Parameter:

  • channel: Gibt die Kanal-ID in einem String-Wert an.

Für den Providertyp slack ist der gültige Parameter:

  • channel. Gibt die Kanal-ID in einem String-Wert an. Dieser Parameter ist obligatorisch. Die Kanal-ID ist eine eindeutige ID für einen Kanal und unterscheidet sich vom Kanalnamen. Wenn Sie in Slack Kanaldetails anzeigen, finden Sie die Kanal-ID auf der Registerkarte "Info".

Für den Provider OCI Notifications mit dem Typ oci sind folgende Parameter gültig:

  • topic_ocid: Gibt an
  • title: Gibt die Betreffzeile der Nachricht an.

Beim oci-Provider gibt es verschiedene mögliche Endpunkte für eine Nachricht, basierend auf den Abonnements. Der Parameter title wird für verschiedene Abonnements unterschiedlich behandelt:

  • E-Mail: title gibt die Betreffzeile der Nachricht an.
  • Slack: Der Wert title wird nicht verwendet. Wenn sie enthalten ist, wird der Wert ignoriert.

Verwendungshinweis für E-Mail-Provider

Für den Provider email benötigt der Benutzer einen SMTP-Verbindungsendpunkt, damit der Email Delivery-Server smtp_host abrufen kann. Der Benutzer benötigt außerdem einen SMTP-genehmigten Absender und seine Zugangsdaten, um sich beim Email Delivery-Server zu authentifizieren, um die credential_name zu erhalten. SMTP-Verbindung muss konfiguriert sein, und SMTP-Zugangsdaten müssen generiert und genehmigt werden.

Verwendungshinweis für den Msteams-Mitarbeiter

Für den Provider msteams benötigt der Benutzer die Microsoft Teams-App und einen darin konfigurierten Bot. Die App muss in der Organisation veröffentlicht und installiert werden, nachdem die Genehmigung vom Admin Center eingeholt wurde. Der Benutzer benötigt außerdem über das Azure-Portal Zugriff auf die Berechtigungen Files.ReadWrite.All und ChannelSettings.Read.All für die Graph-API. Um das erforderliche Token zu generieren, benötigt der Benutzer bot_id im Benutzernamen und bot_secret im Kennwort.

Verwendungshinweis für den Slack-Provider

Für den Provider slack kann der Wert username eine beliebige gültige Zeichenfolge sein, und password ist das Slack-Bottoken.

Nutzungshinweise für OCI-Provider-OCI-Benachrichtigungen

Die DBMS_CLOUD_NOTIFICATION unterstützt den OCI-Benachrichtigungsprovider. Einzelheiten zum OCI-Benachrichtigungsprovider finden Sie unter Überblick über Notifications.

  • Um den OCI Notifications-Provider zu verwenden, müssen Sie Folgendes tun:
    • Thema erstellen. Weitere Informationen zum Erstellen von Themen finden Sie unter Themen erstellen.
    • Erstellen Sie die erforderlichen Abonnements. Weitere Informationen zum Erstellen eines Abonnements finden Sie unter Abonnement erstellen.
    • Nachdem Sie die Abonnements erstellt haben, bestätigen Sie die Abonnements. Nachrichten werden nur für bestätigte Abonnements veröffentlicht. Einzelheiten zur Bestätigung von Abonnements finden Sie unter Abonnement bestätigen.
  • Die Autonomous Database-Instanz, die Zugangsdaten, wenn Sie Benutzerzugangsdaten verwenden, und das Abonnementthema müssen sich alle in derselben Region befinden.
  • Dabei gelten die folgenden Einschränkungen.
    • Grenzwert für Nachrichtengröße: Die maximale Nachrichtengröße pro Anforderung beträgt 64 KB. Nachrichten, die diese Größe überschreiten, können nicht innerhalb einer einzigen Anforderung gesendet oder verarbeitet werden.
    • Ratenlimit für die Nachrichtenzustellung: Je nach verwendetem Protokoll gibt es unterschiedliche Ratenlimits für die Nachrichtenzustellung.
      • email-Protokoll: Das Limit beträgt 10 Nachrichten pro Minute pro Endpunkt.

      Diese Einschränkung kann sich auf die Geschwindigkeit auswirken, mit der Nachrichten übertragen und empfangen werden können.

    • Transaktionslimit pro Minute (TPM) pro Mandant: Für diesen Vorgang gibt es ein TPM-Limit von 60 pro Thema. Dieses Limit gibt die maximale Anzahl von Nachrichten pro Minute an, die für ein bestimmtes Thema verarbeitet oder verarbeitet werden können. Eine Überschreitung dieses Limits kann dazu führen, dass Nachrichten nicht langsamer verarbeitet oder verarbeitet werden.

Beispiele

Senden Sie eine Textnachricht mit dem email-Provider:

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

Senden Sie eine Textnachricht mit dem msteams-Provider:

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

Senden Sie eine Textnachricht mit dem slack-Provider:

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

Senden Sie eine Textnachricht mit OCI Notifications, und geben Sie den oci-Provider ein:


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