Pacchetto DBMS_CLOUD_NOTIFICATION

Il pacchetto DBMS_CLOUD_NOTIFICATION consente di inviare messaggi o l'output di una query SQL a un provider.

DBMS_CLOUD_NOTIFICATION Panoramica

Descrive il pacchetto DBMS_CLOUD_NOTIFICATION.

I provider supportati con DBMS_CLOUD_NOTIFICATION sono: Email, Microsoft Teams, OCI Notifications (ONS) e Slack.

Quando si utilizza il servizio Notifiche OCI con il package DBMS_CLOUD_NOTIFICATION, è supportata solo la procedura DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE (la procedura DBMS_CLOUD_NOTIFICATION.SEND_DATA non è supportata)

Riepilogo dei sottoprogrammi DBMS_CLOUD_NOTIFICATION

Questa tabella contiene un riepilogo dei sottoprogrammi inclusi nel pacchetto.

Programma secondario descrizione;

SEND_DATA Procedura

Inviare l'output della query SQL a un provider.

SEND_MESSAGE Procedura

Invia un messaggio di testo a un provider.

SEND_DATA Procedura

La procedura SEND_DATA invia i risultati della query specificata a un provider.

Sintassi

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

Parametri

Parametro descrizione;

provider

Specifica il provider.

I valori validi sono: 'email', 'msteams' e 'slack'

Questo parametro è obbligatorio.

credential_name

Il nome dell'oggetto credenziale per accedere al provider.

Per il provider di posta elettronica, la credenziale è il nome della credenziale del mittente approvato SMTP che contiene il nome utente e la password.

Per il provider msteams, la credenziale è il nome della credenziale.

Per il provider Slack, il nome utente della credenziale deve essere "SLACK_TOKEN" e password è il token bot Slack.

Questo parametro è obbligatorio.

query

Specifica la query SQL da eseguire. I risultati vengono inviati al provider.

Questo parametro è obbligatorio.

params

Specifica parametri specifici per provider in formato JSON.

Per il tipo di provider email, i parametri validi sono:

  • sender. Specifica l'ID e-mail del mittente approvato in un valore String.
  • smtp_host. Specifica il nome host SMTP in un valore String.
  • subject. Specifica l'oggetto dell'e-mail in un valore String. La dimensione massima è di 100 caratteri.
  • recipient. Specifica gli ID e-mail dei destinatari in un valore String. Utilizzare una virgola tra gli ID e-mail quando sono presenti più destinatari.
  • to_cc. Specifica gli ID e-mail che ricevono un CC dell'e-mail. È un valore String. Utilizzare una virgola tra gli ID e-mail quando sono presenti più destinatari CC.
  • to_bcc. Specifica gli ID e-mail che ricevono un Ccn dell'e-mail. È un valore String. Utilizzare una virgola tra gli ID e-mail quando sono presenti più destinatari Ccn.
  • message. Specifica il testo del messaggio in un valore String.
  • type. Specifica il formato di output in un valore String come CSV o JSON.
  • title. Specifica il titolo dell'allegato dell'output SQL in un valore String. Il titolo deve contenere solo lettere, cifre, caratteri di sottolineatura, trattini o punti come caratteri nel relativo valore poiché viene utilizzato per generare un nome file.

Per il tipo di provider msteams, i parametri validi sono:

  • tenant. Specifica l'ID tenant in formato String.
  • team. Specifica l'ID team in formato String.
  • channel. Specifica l'ID canale in formato String.
  • title. Specifica il titolo del file in formato String. La dimensione massima è di 50 caratteri.
  • type. Specifica il formato di output in un valore String. I valori validi sono CSV o JSON.

Per il tipo di provider slack, i parametri validi sono:

  • channel. Specifica l'ID canale in un valore String. 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".
  • type. Specifica il formato di output in un valore String. I valori validi sono CSV o JSON.

Questo parametro è obbligatorio.

Note per uso

  • Utilizzare la procedura DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username, password) per creare l'oggetto credenziale.

    Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.

  • Per il provider email, tenere presente quanto riportato di seguito.

    • L'utente richiede un endpoint di connessione SMTP per il server di consegna tramite e-mail per ottenere smtp_host. L'utente richiede inoltre che un mittente approvato SMTP e le relative credenziali vengano autenticate con il server di consegna tramite e-mail per ottenere credential_name. È necessario configurare la connessione SMTP e generare e approvare le credenziali SMTP.

    • La dimensione massima dei messaggi supportata quando si utilizza DBMS_CLOUD_NOTIFICATION.SEND_DATA con il provider email è di 32k byte.

    • È possibile utilizzare DBMS_CLOUD_NOTIFICATION solo per le notifiche di posta elettronica con Autonomous Database versione 19.21 e successive.

  • Per il provider msteams, l'utente richiede l'applicazione Microsoft Teams e un bot configurato al suo interno. L'applicazione deve essere pubblicata nell'organizzazione e installata dopo aver ottenuto l'approvazione dall'amministratore dal centro di amministrazione. L'utente richiede inoltre l'accesso per l'autorizzazione Files.ReadWrite.All e ChannelSettings.Read.All per l'API Graph dal proprio portale Azure. Per generare il token richiesto, l'utente richiede bot_id nel nome utente e bot_secret nella password.

    La dimensione massima del file supportata quando si utilizza DBMS_CLOUD_NOTIFICATION.SEND_DATA per Microsoft Teams è di 4 MB.

  • Per il provider slack, il valore username può essere qualsiasi stringa valida e password è il token bot Slack.

Esempi

Inviare l'output SQL con il 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;
/

Inviare l'output SQL con il 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;
/
 

Inviare l'output SQL con il 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;
/ 

SEND_MESSAGE Procedura

La procedura invia un messaggio di testo a un provider.

Sintassi

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

Parametri

Parametro descrizione;

provider

Specifica il provider.

I valori validi sono: 'email', 'msteams', 'slack' e 'oci'.

Questo parametro è obbligatorio.

credential_name

Il nome dell'oggetto credenziale per accedere al provider.

  • Provider email: la credenziale è il nome della credenziale del mittente approvato SMTP che contiene il nome utente e la password.

  • Provider msteams: la credenziale deve contenere la chiave bot_id e la chiave bot_secret sia in username che in password.

  • Provider slack: la credenziale username deve essere "SLACK_TOKEN" e password è il token bot Slack.

  • Provider oci: la credenziale è una credenziale basata sulla chiave di firma Oracle Cloud Infrastructure valida o una credenziale principale della risorsa.

Questo parametro è obbligatorio.

Utilizzare la procedura DBMS_CLOUD.CREATE_CREDENTIAL per creare l'oggetto credenziale. Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure.

message

Specifica il testo del messaggio

Questo parametro è obbligatorio.

params

Specifica parametri specifici per provider in formato JSON.

Per il tipo di provider email, i parametri validi sono:

  • sender: specifica l'ID e-mail del mittente approvato in un valore String.
  • smtp_host: specifica il nome host SMTP in un valore String.
  • subject: specifica l'oggetto dell'e-mail in un valore String. La dimensione massima è di 100 caratteri.
  • recipient: specifica gli ID e-mail dei destinatari in un valore String. Utilizzare una virgola tra gli ID e-mail quando sono presenti più destinatari.
  • to_cc: specifica gli ID e-mail che ricevono un CC dell'e-mail. Utilizzare una virgola tra gli ID e-mail quando sono presenti più destinatari CC.
  • to_bcc: specifica gli ID e-mail che ricevono un Ccn dell'e-mail. Utilizzare una virgola tra gli ID e-mail quando sono presenti più destinatari Ccn.

Per il tipo di provider msteams, il parametro valido è:

  • channel: specifica l'ID canale in un valore String.

Per il tipo di provider slack, il parametro valido è:

  • channel. Specifica l'ID canale in un valore String. Questo parametro è obbligatorio. 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 il provider OCI Notifications con il tipo oci, i parametri validi sono:

  • topic_ocid: specifica
  • title: specifica la riga dell'oggetto del messaggio.

Con il provider oci, sono disponibili endpoint diversi per un messaggio, in base alle sottoscrizioni. Il parametro title viene trattato in modo diverso per le diverse sottoscrizioni:

  • email: title specifica la riga dell'oggetto del messaggio.
  • Slack: il valore title non viene utilizzato. Se è incluso, il valore viene ignorato.

Nota uso per il provider e-mail

Per il provider email, l'utente richiede un endpoint di connessione SMTP per il server di consegna tramite e-mail per ottenere smtp_host. L'utente richiede inoltre che un mittente approvato SMTP e le relative credenziali vengano autenticate con il server di consegna tramite e-mail per ottenere credential_name. È necessario configurare la connessione SMTP e generare e approvare le credenziali SMTP.

Nota sull'uso per il provider Msteams

Per il provider msteams, l'utente richiede l'applicazione Microsoft Teams e un bot configurato al suo interno. L'applicazione deve essere pubblicata nell'organizzazione e installata dopo aver ottenuto l'approvazione dall'amministratore dal centro di amministrazione. L'utente richiede inoltre l'accesso per l'autorizzazione Files.ReadWrite.All e ChannelSettings.Read.All per l'API Graph dal proprio portale Azure. Per generare il token richiesto, l'utente richiede bot_id nel nome utente e bot_secret nella password.

Nota sull'uso per il provider Slack

Per il provider slack, il valore username può essere qualsiasi stringa valida e password è il token bot Slack.

Note sull'uso per le notifiche OCI del provider OCI

DBMS_CLOUD_NOTIFICATION supporta il provider di notifiche OCI. Per informazioni dettagliate sul provider di notifiche OCI, consulta la panoramica delle notifiche.

  • Per utilizzare il provider di notifiche OCI, è necessario effettuare le operazioni riportate di seguito.
    • Creare un argomento. Per informazioni dettagliate sulla creazione di un argomento, vedere Creazione di un argomento
    • Creare le sottoscrizioni richieste. Per informazioni dettagliate sulla creazione di una sottoscrizione, vedere Creazione di una sottoscrizione.
    • Dopo aver creato le sottoscrizioni, confermare le sottoscrizioni. I messaggi vengono pubblicati solo per le sottoscrizioni confermate. Per informazioni dettagliate sulla conferma delle sottoscrizioni, vedere Conferma di una sottoscrizione.
  • L'istanza di Autonomous Database, la credenziale, se si utilizzano le credenziali utente e l'argomento della sottoscrizione deve trovarsi tutti nella stessa area.
  • Vanno considerate le seguenti limitazioni:
    • Il limite di dimensione del messaggio per richiesta è di 64 KB. I messaggi che superano questa dimensione non possono essere inviati o elaborati all'interno di una singola richiesta.
    • Limite di frequenza di consegna dei messaggi: esistono limiti di frequenza di consegna dei messaggi diversi a seconda del protocollo utilizzato.
      • Protocollo email: il limite è di 10 messaggi al minuto per endpoint.

      Questa restrizione può influire sulla velocità con cui i messaggi possono essere trasmessi e ricevuti.

    • Limite transazioni al minuto (TPM) per tenancy: per questa operazione è previsto un limite TPM di 60 per argomento. Questo limite rappresenta il numero massimo di messaggi al minuto che possono essere elaborati o gestiti per un determinato argomento. Il superamento di questo limite può comportare la mancata elaborazione o l'elaborazione dei messaggi a una velocità inferiore.

Esempi

Inviare un messaggio di testo al provider 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;
/

Inviare un messaggio di testo con il 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',
        message         => 'text from new teams api',
        params          => json_object('channel'value 'C0....08'),'region'value 'india');
END;
/
 

Inviare un messaggio di testo con il provider 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;
/ 

Inviare un messaggio di testo con le notifiche OCI, digitare il provider 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;
/