Invia notifiche Slack da Autonomous Database su un'infrastruttura Exadata dedicata

È possibile configurare Slack per l'invio di messaggi, avvisi o output di una query da Autonomous Database sull'infrastruttura Exadata dedicata a un canale Slack utilizzando il package DBMS_CLOUD_NOTIFICATION.

Argomenti correlati

Preparati a inviare notifiche Slack da Autonomous Database

Per inviare notifiche Slack, è necessario configurare l'applicazione Slack in modo che riceva messaggi da Autonomous Database. Successivamente, creare una credenziale da utilizzare con le procedure DBMS_CLOUD_NOTIFICATION per inviare notifiche Slack da Autonomous Database.

Per utilizzare Slack con le procedure DBMS_CLOUD_NOTIFICATION, procedere come segue.

  1. Creare l'app Slack.

    L'applicazione Slack viene installata in un'area di lavoro Slack, che a sua volta dispone di canali in cui è possibile inviare messaggi. Per il token bot dell'applicazione Slack devono essere definiti i seguenti ambiti di autorizzazione:

    channels:read
    chat:write
    files:write

    Per informazioni sull'impostazione di un'applicazione Slack, vedere Creazione di un'applicazione.

  2. Chiedere all'amministratore di Slack di aggiungere l'applicazione Slack ai canali ai quali DBMS_CLOUD_NOTIFICATION può inviare il messaggio tramite l'opzione "Integrazioni" nel canale.

    Per ulteriori informazioni, vedere Impostazione di base dell'applicazione.

  3. Individuare il token bot dell'applicazione disponibile nella pagina specifica dell'applicazione Slack, in https://app.slack.com.

    Per ulteriori informazioni, vedere Impostazione di base dell'applicazione.

  4. In Exadata Cloud@Customer, configurare le impostazioni del proxy HTTP nell'ambiente in uso per consentire al database di accedere a Slack. Per informazioni sull'impostazione delle impostazioni del proxy HTTP durante la creazione di un'infrastruttura Exadata Cloud@Customer, vedere Uso della console per eseguire il provisioning di Exadata Database Service su Cloud@Customer.

    Nota

    La configurazione di rete, incluso il proxy HTTP, può essere modificata solo fino a quando lo stato dell'infrastruttura Exadata non è Richiede attivazione. Una volta attivato, non è possibile modificare tali impostazioni.

    Per impostare un proxy HTTP per un'infrastruttura Exadata già fornita, sottomettere una richiesta di servizio (SR) in My Oracle Support. Per informazioni dettagliate, vedere Create a Service Request in My Oracle Support.

  5. Creare un oggetto credenziali per accedere all'applicazione Slack da Autonomous Database.

    Suggerimento

    Se non è possibile utilizzare correttamente la procedura CREATE_CREDENTIAL, consultare l'utente ADMIN per concedere l'accesso di esecuzione sui package DBMS_CLOUD.

    Il nome utente della credenziale è SLACK_TOKEN e la password è il token bot.

    Ad esempio:

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

    Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.

  6. Configurare il controllo dell'accesso per consentire all'utente di accedere ai servizi di rete esterni (Slack).
    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. Se si sta inviando SQL, configurare il controllo dell'accesso per consentire l'invio dell'output con DBMS_CLOUD_NOTIFICATION.SEND_DATA.
    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;

    Per ulteriori informazioni, vedere Configuring Access Control for External Network Services nel manuale Oracle Database 19c Security Guide o Oracle Database 23ai Security Guide.

Inviare messaggi a un canale Slack

Dopo aver creato l'oggetto delle credenziali Slack come descritto in Prepara a inviare notifiche Slack da Autonomous Database, è possibile utilizzare la procedura DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE per inviare un messaggio a un canale Slack.
Esempio:
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;
/ 

Utilizzare il parametro params per specificare il canale Slack.

  • channel: specifica l'ID del canale.

    L'ID canale è un ID univoco per un canale ed è diverso dal nome del canale. In Slack, quando si visualizzano i dettagli del canale, è possibile trovare l'ID canale nella scheda "Informazioni". Per ulteriori informazioni, vedere Come trovare l'ID team Slack e l'ID canale Slack.

Per ulteriori informazioni, vedere SEND_MESSAGE Procedura.

Invia risultati query a un canale Slack

Dopo aver creato l'oggetto delle credenziali Slack come descritto in Prepara a inviare notifiche Slack da Autonomous Database, è possibile utilizzare la procedura DBMS_CLOUD_NOTIFICATION.SEND_DATA per inviare l'output di una query a un canale Slack.
Esempio:
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;
/

Utilizzare il parametro params per specificare il canale Slack e il tipo di dati:

  • channel: specifica l'ID del canale.

    L'ID canale è un ID univoco per un canale ed è diverso dal nome del canale. In Slack, quando si visualizzano i dettagli del canale, è possibile trovare l'ID canale nella scheda "Informazioni". Per ulteriori informazioni, vedere Come trovare l'ID team Slack e l'ID canale Slack.

  • type: specifica il tipo di output. I valori validi sono: 'csv' o 'json'.

Per ulteriori informazioni, vedere SEND_DATA Procedura.