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
Una connettività in uscita deve essere stata configurata utilizzando un gateway NAT dall'amministratore della flotta, come descritto di seguito.
-
Creare un gateway NAT nella rete cloud virtuale (VCN) in cui risiedono le risorse di Autonomous AI Database seguendo le istruzioni in Crea un gateway NAT nella documentazione di Oracle Cloud Infrastructure.
-
Dopo aver creato il gateway NAT, aggiungere una regola di instradamento e una regola di sicurezza in uscita a ogni subnet (nella VCN) in cui risiedono le risorse di Autonomous AI Database in modo che queste risorse possano utilizzare il gateway per ottenere una chiave pubblica dall'istanza di Azure AD:
-
Andare alla pagina Dettagli subnet per la subnet.
-
Nella scheda Informazioni subnet fare clic sul nome della tabella di instradamento della subnet per visualizzare la relativa pagina Dettagli tabella di instradamento.
-
Nella tabella delle regole di instradamento esistenti, verificare se esiste già una regola con le seguenti caratteristiche:
-
Destinazione: 0.0.0.0/0
-
Tipo di destinazione: gateway NAT
-
Destinazione: il nome del gateway NAT appena creato nella VCN
Se tale regola non esiste, fare clic su Aggiungi regole di instradamento e aggiungere una regola di instradamento con queste caratteristiche.
-
-
Tornare alla pagina Dettagli subnet per la subnet.
-
Nella tabella Elenchi sicurezza della subnet fare clic sul nome della lista di sicurezza della subnet per visualizzare la relativa pagina Dettagli elenco di sicurezza.
-
Nel menu laterale, in Risorse, fare clic su Regole di uscita.
-
Nella tabella delle regole di uscita esistenti, verificare se esiste già una regola con le seguenti caratteristiche:
-
Tipo di destinazione:CIDR
-
Destinazione:0.0.0.0/0
-
Protocollo IP:TCP
-
Intervallo porte di origine:443
-
Intervallo porte di destinazione:Tutti
Se una regola di questo tipo non esiste, fare clic su Aggiungi regole di uscita e aggiungere una regola di uscita con queste caratteristiche.
-
-
Le impostazioni del proxy HTTP nell'ambiente devono consentire al database di accedere al provider di servizi cloud.
Queste impostazioni vengono definite dall'amministratore della flotta durante la creazione dell'infrastruttura Exadata Cloud@Customer, come descritto in 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 l'infrastruttura Exadata non è in stato Richiede attivazione. Una volta attivato, non è possibile modificare tali impostazioni.
L'impostazione di un proxy HTTP per un'infrastruttura Exadata già di cui è stato eseguito il provisioning richiede una richiesta di servizio (SR) in My Oracle Support. Per i dettagli, vedere Crea una richiesta di servizio in My Oracle Support.
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 ' 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 Questo parametro è obbligatorio. |
query |
Specifica la query SQL da eseguire. I risultati vengono inviati al provider. Questo parametro è obbligatorio. |
params |
Specifica parametri specifici per Per il tipo di provider
Per il tipo di provider
Per il tipo di provider
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.
-
Per il provider
email, l'utente richiede un endpoint di connessione SMTP per il server di consegna e-mail per otteneresmtp_host. L'utente richiede anche un mittente approvato SMTP e le relative credenziali per eseguire l'autenticazione con il server di consegna tramite e-mail per ottenerecredential_name. È necessario configurare la connessione SMTP e generare e approvare le credenziali SMTP. -
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 anche l'accesso per l'autorizzazioneFiles.ReadWrite.AlleChannelSettings.Read.Allper l'API Graph dal proprio portale Azure. Per generare il token richiesto, l'utente richiedebot_idnel nome utente ebot_secretnella password. La dimensione massima del file supportata quando si utilizzaDBMS_CLOUD_NOTIFICATION.SEND_DATAper Microsoft Teams è 4 MB. -
Per il provider
slack, il valoreusernamepuò essere qualsiasi stringa valida epasswordè il token bot Slack.
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: ' 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 Per il provider Slack, il nome utente della credenziale deve essere Per il provider Questo parametro è obbligatorio. |
message |
Specifica il testo del messaggio. Questo parametro è obbligatorio. |
params |
Specifica parametri specifici per Per il tipo di provider
Per il tipo di provider
Per il tipo di provider
Per il provider OCI Notifications con il tipo
Con il provider
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.
-
Per il provider
email, l'utente richiede un endpoint di connessione SMTP per il server di consegna e-mail per otteneresmtp_host. L'utente richiede anche un mittente approvato SMTP e le relative credenziali per eseguire l'autenticazione con il server di consegna tramite e-mail per ottenerecredential_name. È necessario configurare la connessione SMTP e generare e approvare le credenziali SMTP. -
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 anche l'accesso per l'autorizzazioneFiles.ReadWrite.AlleChannelSettings.Read.Allper l'API Graph dal proprio portale Azure. Per generare il token richiesto, l'utente richiedebot_idnel nome utente ebot_secretnella password. -
Per il provider
slack, il valoreusernamepuò essere qualsiasi stringa valida epasswordè il token bot Slack. -
DBMS_CLOUD_NOTIFICATIONsupporta il provider di notifiche OCI. Consulta la panoramica delle notifiche per i dettagli sul provider di notifiche OCI.-
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 AI Database, la credenziale (se si utilizzano le credenziali utente) e l'argomento di sottoscrizione devono 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.
- Protocollo
-
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 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;
/