DBMS_CLOUD_NOTIFICATION-Package

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

Voraussetzungen

Eine ausgehende Konnektivität muss von Ihrem Flottenadministrator mit einem NAT-Gateway konfiguriert worden sein, wie unten beschrieben:
  • Erstellen Sie ein NAT-Gateway im virtuellen Cloud-Netzwerk (VCN), in dem sich Ihre Autonomous Database-Ressourcen befinden, indem Sie die Anweisungen unter NAT-Gateway erstellen in der Oracle Cloud Infrastructure-Dokumentation befolgen.
  • Nachdem Sie das NAT-Gateway erstellt haben, fügen Sie eine Routingregel und eine Egress-Sicherheitsregel zu jedem Subnetz (im VCN) hinzu, in dem sich Autonomous Database-Ressourcen befinden. So können diese Ressourcen mit dem Gateway einen Public Key aus Ihrer Azure AD-Instanz abrufen:
    1. Gehen Sie zur Seite Subnetzdetails für das Subnetz.
    2. Klicken Sie auf der Registerkarte Informationen zum Subnetz auf den Namen der Routentabelle des Subnetzes, um die Seite Routentabellendetails anzuzeigen.
    3. Prüfen Sie in der Tabelle der vorhandenen Routingregeln, ob bereits eine Regel mit den folgenden Eigenschaften vorhanden ist:
      • Zielort: 0.0.0.0/0
      • Zieltyp: NAT-Gateway
      • Ziel: Der Name des NAT-Gateway, das Sie gerade im VCN erstellt haben

      Wenn keine solche Regel vorhanden ist, klicken Sie auf Routenregeln hinzufügen, und fügen Sie eine Routingregel mit diesen Eigenschaften hinzu.

    4. Zurück zur Seite Subnetzdetails für das Subnetz.
    5. Klicken Sie in der Tabelle Sicherheitslisten des Subnetzes auf den Namen der Sicherheitsliste des Subnetzes, um die Seite Sicherheitslistendetails anzuzeigen.
    6. Klicken Sie im Seitenmenü unter Ressourcen auf Egress-Regeln.
    7. Prüfen Sie in der Tabelle der vorhandenen Ausgangsregeln, ob bereits eine Regel mit den folgenden Eigenschaften vorhanden ist:
      • Zieltyp: CIDR
      • Zielort: 0.0.0.0/0
      • IP-Protokoll: TCP
      • Quellportbereich: 443
      • Ziel-Portbereich: Alle

      Wenn keine derartige Regel vorhanden ist, klicken Sie auf Egress-Regeln hinzufügen, und fügen Sie eine Egress-Regel mit diesen Eigenschaften hinzu.

Die HTTP-Proxyeinstellungen in Ihrer Umgebung müssen es der Datenbank ermöglichen, auf den Cloud-Serviceprovider zuzugreifen.

Diese Einstellungen werden vom Flottenadministrator beim Erstellen der Exadata Cloud@Customer-Infrastruktur definiert, wie unter Exadata Database Service on Cloud@Customer mit der Konsole bereitstellen beschrieben.

Hinweis:

Die Netzwerkkonfiguration einschließlich des HTTP-Proxys kann nur bearbeitet werden, bis sich die Exadata-Infrastruktur im Status Aktivierung erforderlich befindet. Sobald sie aktiviert ist, können Sie diese Einstellungen nicht mehr bearbeiten.

Für die Einrichtung eines HTTP-Proxys für eine bereits bereitgestellte Exadata-Infrastruktur ist eine Serviceanfrage (SR) in My Oracle Support erforderlich. Weitere Informationen finden Sie unter Serviceanfrage in My Oracle Support erstellen.

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 klinischen Mitarbeiter 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 Name der Zugangsdaten des SMTP-genehmigten Absenders, der seinen Benutzernamen und sein Kennwort enthält.

Für den msteams-Provider ist der Berechtigungsnachweis der Name des Berechtigungsnachweises.

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

Dieser Parameter ist erforderlich.

query

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

Dieser Parameter ist erforderlich.

params

Gibt bestimmte Parameter für 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 ein CC der E-Mail erhalten. Es handelt sich um einen 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. Es handelt sich um einen String-Wert. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere BCC-Empfänger vorhanden sind.
  • message. Gibt den Meldungstext 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.

Verwendungshinweise

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.

  • Für den email-Provider benötigt der Benutzer einen SMTP-Verbindungsendpunkt für den Email Delivery-Server, um smtp_host abzurufen. Der Benutzer benötigt außerdem einen SMTP-genehmigten Absender und seine Zugangsdaten, um sich beim Email Delivery-Server zu authentifizieren und die credential_name abzurufen. SMTP-Verbindung muss konfiguriert sein, und SMTP-Zugangsdaten müssen generiert und genehmigt werden.
  • Für den msteams-Provider erfordert 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 auch Zugriff auf die Berechtigungen Files.ReadWrite.All und ChannelSettings.Read.All für die Diagramm-API über sein Azure-Portal. 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 slack-Provider kann der Wert username eine beliebige gültige Zeichenfolge sein, und password ist das Slack-Bottoken.

Beispiel

SQL-Ausgabe mit dem email-Provider senden:

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

SQL-Ausgabe mit dem msteams-Provider senden:

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

SQL-Ausgabe mit dem slack-Provider senden:

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

Das Verfahren sendet eine Textnachricht an einen klinischen Mitarbeiter.

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" 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 Name der Zugangsdaten des SMTP-genehmigten Absenders, der seinen Benutzernamen und sein Kennwort enthält.

Für den msteams-Provider müssen die Zugangsdaten den Schlüssel bot_id und bot_secret sowohl im Benutzernamen als auch im Kennwort enthalten.

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

Dieser Parameter ist erforderlich.

message

Gibt den Meldungstext an.

Dieser Parameter ist erforderlich.

params

Gibt bestimmte Parameter für 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 ein 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.

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".

Dieser Parameter ist erforderlich.

Verwendungshinweise

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.

  • Für den email-Provider benötigt der Benutzer einen SMTP-Verbindungsendpunkt für den Email Delivery-Server, um smtp_host abzurufen. Der Benutzer benötigt außerdem einen SMTP-genehmigten Absender und seine Zugangsdaten, um sich beim Email Delivery-Server zu authentifizieren und die credential_name abzurufen. SMTP-Verbindung muss konfiguriert sein, und SMTP-Zugangsdaten müssen generiert und genehmigt werden.
  • Für den msteams-Provider erfordert 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 auch Zugriff auf die Berechtigungen Files.ReadWrite.All und ChannelSettings.Read.All für die Diagramm-API über sein Azure-Portal. Um das erforderliche Token zu generieren, benötigt der Benutzer bot_id im Benutzernamen und bot_secret im Kennwort.
  • Für den slack-Provider kann der Wert username eine beliebige gültige Zeichenfolge sein, und password ist das Slack-Bottoken.

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

Textnachricht mit dem msteams-Provider senden:

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

Textnachricht mit dem slack-Provider senden:

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