Slack-Benachrichtigungen von Autonomous Database on Dedicated Exadata Infrastructure senden

Sie können Slack so konfigurieren, dass Nachrichten, Alerts oder Ausgaben einer Abfrage von Autonomous Database on Dedicated Exadata Infrastructure mit dem Package DBMS_CLOUD_NOTIFICATION an einen Slack-Kanal gesendet werden.

Slack-Benachrichtigungen von Autonomous Database senden vorbereiten

Um Slack-Benachrichtigungen zu senden, müssen Sie die Slack-Anwendung so konfigurieren, dass Nachrichten von Autonomous Database empfangen werden. Erstellen Sie als Nächstes Zugangsdaten, die mit den DBMS_CLOUD_NOTIFICATION-Prozeduren verwendet werden sollen, um Slack-Benachrichtigungen von Autonomous Database zu senden.

So verwenden Sie Slack mit DBMS_CLOUD_NOTIFICATION-Prozeduren:

  1. Slack-App erstellen

    Die Slack-App wird in einem Slack-Workspace installiert, der wiederum Kanäle enthält, über die Nachrichten gesendet werden können. Für das Bottoken der Slack-App müssen die folgenden Berechtigungsgeltungsbereiche definiert sein:

    channels:read
    chat:write
    files:write

    Informationen zum Einrichten einer Slack-App finden Sie unter App erstellen.

  2. Lassen Sie den Slack-Administrator die Slack-App zu den Kanälen hinzufügen, an die DBMS_CLOUD_NOTIFICATION Nachrichten über die Option "Integrationen" im Kanal senden kann.

    Weitere Informationen finden Sie unter Einrichtung der einfachen App.

  3. Suchen Sie das Bottoken der App, das auf der anwendungsspezifischen Slack-Seite unter https://app.slack.com verfügbar ist.

    Weitere Informationen finden Sie unter Einrichtung der einfachen App.

  4. Konfigurieren Sie in Exadata Cloud@Customer die HTTP-Proxyeinstellungen in Ihrer Umgebung, damit die Datenbank auf Slack zugreifen kann. Informationen zum Einrichten der HTTP-Proxyeinstellungen beim Erstellen einer Exadata Cloud@Customer-Infrastruktur finden Sie unter Exadata Database Service on Cloud@Customer mit der Konsole bereitstellen.

    Hinweis:

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

    Um einen HTTP-Proxy für eine bereits bereitgestellte Exadata-Infrastruktur einzurichten, leiten Sie eine Serviceanfrage in My Oracle Support weiter. Weitere Informationen finden Sie unter Serviceanfrage in My Oracle Support erstellen.

  5. Erstellen Sie ein Zugangsdatenobjekt, um über Autonomous Database auf die Slack-App zuzugreifen.

    Tipp:

    Wenn Sie die Prozedur CREATE_CREDENTIAL nicht erfolgreich verwenden können, wenden Sie sich an den ADMIN-Benutzer, um Ausführungszugriff auf DBMS_CLOUD-Packages zu erteilen.

    Der Benutzername der Zugangsdaten lautet SLACK_TOKEN, und das Kennwort ist das Bottoken.

    Beispiel:

    BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
         credential_name => 'SLACK_CRED',
         username    => 'SLACK_TOKEN',
         password    => 'xoxb-34....96-34....52-zW....cy');
    END;
    /

    Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  6. Konfigurieren Sie die Zugriffskontrolle, um den Benutzerzugriff auf externe Netzwerkservices (Slack) zuzulassen.
    BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
      host         => 'slack.com', 
      lower_port   => 443,
      upper_port   => 443,
      ace          => xs$ace_type(
          privilege_list => xs$name_list('http'),
          principal_name => example_invoking_user, 
          principal_type => xs_acl.ptype_db)); 
    END;
  7. Wenn Sie SQL senden, konfigurieren Sie die Zugriffskontrolle so, dass das Senden der Ausgabe mit DBMS_CLOUD_NOTIFICATION.SEND_DATA zulässig ist.
    BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
      host         => 'slack.com', 
      lower_port   => 443,
      upper_port   => 443,
      ace          => xs$ace_type(
          privilege_list => xs$name_list('http'),
          principal_name => example_invoking_user, 
          principal_type => xs_acl.ptype_db)); 
    END;

    Weitere Informationen finden Sie unter Configuring Access Control for External Network Services in der Oracle Database 19c Security Guide oder in der Oracle Database 23ai Security Guide.

Nachrichten an einen Slack-Kanal senden

Nachdem Sie das Slack-Zugangsdatenobjekt wie unter Senden von Slack-Benachrichtigungen aus Autonomous Database vorbereiten beschrieben erstellt haben, können Sie mit der Prozedur DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE eine Nachricht an einen Slack-Kanal senden.
Beispiel:
BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'slack',
      credential_name   => 'SLACK_CRED',
      message           => 'Alert from Autonomous Database...',
      params            => json_object('channel' value 'C0....08'));
END;
/ 

Verwenden Sie den Parameter params, um den Slack-Kanal anzugeben.

  • channel: Gibt die Kanal-ID 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". Weitere Informationen finden Sie unter So suchen Sie die Slack-Team-ID und die Slack-Kanal-ID.

Weitere Informationen finden Sie unter Prozedur SEND_MESSAGE.

Abfrageergebnisse an einen Slack-Kanal senden

Nachdem Sie das Slack-Zugangsdatenobjekt wie unter Slack-Benachrichtigungen aus Autonomous Database senden vorbereiten beschrieben erstellt haben, können Sie die Ausgabe einer Abfrage mit der Prozedur DBMS_CLOUD_NOTIFICATION.SEND_DATA an einen Slack-Kanal senden.
Beispiel:
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;
/

Verwenden Sie den Parameter params, um den Slack-Kanal und den Datentyp anzugeben:

  • channel: Gibt die Kanal-ID 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". Weitere Informationen finden Sie unter So suchen Sie die Slack-Team-ID und die Slack-Kanal-ID.

  • type: Gibt den Typ der Ausgabe an. Gültige Werte sind: "csv" oder "json".

Weitere Informationen finden Sie unter Prozedur SEND_DATA.