Pacchetto DBMS_CLOUD_NOTIFICATION

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

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 pacchetto DBMS_CLOUD_NOTIFICATION, è supportata solo la procedura DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE (la procedura DBMS_CLOUD_NOTIFICATION.SEND_DATA non è supportata).

Prerequisiti

Riepilogo dei sottoprogrammi DBMS_CLOUD_NOTIFICATION

Questa tabella riassume i sottoprogrammi inclusi nel pacchetto.

Sottoprogramma Descrizione
Procedura SEND_DATA Invia l'output della query SQL a un provider.
Procedura SEND_MESSAGE Invia un messaggio di testo a un provider.

Procedura SEND_DATA

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

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 di posta elettronica che ricevono un Ccn del messaggio di posta elettronica. È 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 in quanto 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 sull'uso

Per creare l'oggetto credenziale, utilizzare la procedura DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username e password). Per ulteriori informazioni, vedere Procedura CREDENTIAL.

Esempio

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

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

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

Procedura SEND_MESSAGE

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

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 deve contenere la chiave bot_id e bot_secret sia nel nome utente che nella password.

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

Per il provider oci, la credenziale è una credenziale valida basata sulla chiave di firma Oracle Cloud Infrastructure.

Questo parametro è obbligatorio.

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 di posta elettronica che ricevono un Ccn del messaggio di posta elettronica. 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.

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.

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

Questo parametro è obbligatorio.

Note sull'uso

Per creare l'oggetto credenziale, utilizzare la procedura DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username e password). Per ulteriori informazioni, vedere Procedura CREDENTIAL.

Esempi

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