Package DBMS_CLOUD_NOTIFICATION
Le package DBMS_CLOUD_NOTIFICATION vous permet d'envoyer des messages ou la sortie d'une requête SQL à un fournisseur.
Les fournisseurs pris en charge avec DBMS_CLOUD_NOTIFICATION sont les suivants : Email, Microsoft Teams, OCI Notifications (ONS) et Slack.
Lorsque vous utilisez le service OCI Notifications avec le package DBMS_CLOUD_NOTIFICATION, seule la procédure DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE est prise en charge (la procédure DBMS_CLOUD_NOTIFICATION.SEND_DATA n'est pas prise en charge).
Prérequis
L'administrateur de parc doit avoir configuré une connectivité sortante à l'aide d'une passerelle NAT, comme décrit ci-dessous :
-
Créez une passerelle NAT dans le réseau cloud virtuel (VCN) où résident vos ressources de base de données Autonomous AI en suivant les instructions de la section Création d'une passerelle NAT dans la documentation Oracle Cloud Infrastructure.
-
Après avoir créé la passerelle NAT, ajoutez une règle de routage et une règle de sécurité sortante à chaque sous-réseau (dans le VCN) où résident les ressources de base de données Autonomous AI afin que ces ressources puissent utiliser la passerelle pour obtenir une clé publique à partir de votre instance Azure AD :
-
Accédez à la page Détails du sous-réseau correspondante.
-
Dans l'onglet Information sur le sous-réseau, cliquez sur le nom de la table de acheminement du sous‑réseau pour afficher la page Détails de la table de acheminement correspondante.
-
Dans la table des règles de acheminement existantes, vérifiez s'il existe déjà une règle avec les caractéristiques suivantes :
-
Destination : 0.0.0.0/0
-
Type de cible : passerelle NAT
-
Cible : nom de la passerelle NAT que vous venez de créer dans le VCN
Si une telle règle n'existe pas, cliquez sur Ajouter des règles de routage et ajoutez une règle de routage possédant ces caractéristiques.
-
-
Revenez à la page Détails du sous-réseau du sous-réseau.
-
Dans la table Listes de sécurité du sous‑réseau, cliquez sur le nom de la liste des sécurité du sous-réseau pour afficher sa page Détails de la liste.
-
Dans le menu latéral, sous Ressources, cliquez sur Règles sortantes.
-
Dans la table des règles sortantes existantes, vérifiez s'il existe déjà une règle avec les caractéristiques suivantes :
-
Type de destination : CIDR
-
Destination :0.0.0.0/0
-
Protocole IP : TCP
-
Plage de ports source:443
-
Plage de ports de Destination : Tout
Si une telle règle n'existe pas, cliquez sur Ajouter des règles sortantes et ajoutez une règle possédant ces caractéristiques.
-
-
Les paramètres de proxy HTTP de votre environnement doivent autoriser la base de données à accéder au fournisseur de service cloud.
Ces paramètres sont définis par l'administrateur de parc lors de la création de l'infrastructure Exadata Cloud@Customer, comme décrit dans Utilisation de la console pour provisionner Exadata Database Service on Cloud@Customer.
Remarque : la configuration réseau, y compris le proxy HTTP, ne peut être modifiée que jusqu'à ce que l'infrastructure Exadata présente l'état Activation requise. Une fois activé, vous ne pouvez plus modifier ces paramètres.
La configuration d'un proxy HTTP pour une infrastructure Exadata déjà provisionnée nécessite une demande de service dans My Oracle Support. Pour plus de détails, reportez-vous à Création d'une demande d'assistance dans My Oracle Support.
Récapitulatif des sous-programmes DBMS_CLOUD_NOTIFICATION
Ce tableau récapitule les sous-programmes inclus dans le package.
| Sous-programme | Description |
|---|---|
| Procédure SEND_DATA | Envoyer la sortie de requête SQL à un fournisseur. |
| Procédure SEND_MESSAGE | Envoyer un message texte à un fournisseur. |
Procédure SEND_DATA
La procédure SEND_DATA envoie les résultats de la requête indiquée à un fournisseur.
Syntaxe
DBMS_CLOUD_NOTIFICATION.SEND_DATA(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
query IN CLOB,
params IN CLOB
);
Paramètres
| Paramètre | Description |
|---|---|
provider |
Spécifie le fournisseur. Les valeurs valides sont : ' Ce paramètre est obligatoire. |
credential_name |
Nom de l'objet d'informations d'identification permettant d'accéder au fournisseur. Pour le fournisseur de messagerie, les informations d'identification sont le nom des informations d'identification de l'expéditeur SMTP approuvé qui contient son nom utilisateur et son mot de passe. Pour le fournisseur msteams, les informations d'identification sont le nom des informations d'identification. Pour le fournisseur Slack, le nom utilisateur des informations d'identification doit être Ce paramètre est obligatoire. |
query |
Indique la requête SQL à exécuter. Les résultats sont envoyés au fournisseur. Ce paramètre est obligatoire. |
params |
Spécifie des paramètres spécifiques pour Pour le type de fournisseur
Pour le type de fournisseur
Pour le type de fournisseur
Ce paramètre est obligatoire. |
Remarques sur l'utilisation
Utilisez la procédure DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username et password) pour créer l'objet d'informations d'identification. Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.
-
Pour le fournisseur
email, l'utilisateur requiert une adresse de connexion SMTP pour que le serveur Email Delivery obtiennesmtp_host. L'utilisateur a également besoin d'un expéditeur SMTP approuvé et de ses informations d'identification pour s'authentifier auprès du serveur Email Delivery afin d'obtenircredential_name. La connexion SMTP doit être configurée et les informations d'identification SMTP doivent être générées et approuvées. -
Pour le fournisseur
msteams, l'utilisateur requiert l'application Microsoft Teams et un bot configuré dans celle-ci. L'application doit être publiée dans l'organisation et installée après avoir obtenu l'approbation de l'administrateur du centre d'administration. L'utilisateur doit également avoir accès aux droits d'accèsFiles.ReadWrite.AlletChannelSettings.Read.Allpour l'API Graph à partir de son portail Azure. Pour générer le jeton requis, l'utilisateur requiertbot_iddans le nom utilisateur etbot_secretdans le mot de passe. La taille de fichier maximale prise en charge lors de l'utilisation deDBMS_CLOUD_NOTIFICATION.SEND_DATApour Microsoft Teams est de 4 Mo. -
Pour le fournisseur
slack, la valeurusernamepeut être n'importe quelle chaîne valide etpasswordest le jeton de bot Slack.
Exemple
Envoyez la sortie SQL avec le fournisseur 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;
/
Envoyez la sortie SQL avec le fournisseur 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;
/
Envoyez la sortie SQL avec le fournisseur 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;
/
Procédure SEND_MESSAGE
La procédure envoie un message texte à un soignant.
Syntaxe
DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
message IN CLOB,
params IN CLOB
);
Paramètres
| Paramètre | Description |
|---|---|
provider |
Spécifie le fournisseur. Les valeurs valides sont les suivantes : ' Ce paramètre est obligatoire. |
credential_name |
Nom de l'objet d'informations d'identification permettant d'accéder au fournisseur. Pour le fournisseur de messagerie, les informations d'identification sont le nom des informations d'identification de l'expéditeur SMTP approuvé qui contient son nom utilisateur et son mot de passe. Pour le fournisseur msteams, les informations d'identification doivent contenir Pour le fournisseur Slack, le nom utilisateur des informations d'identification doit être Pour le fournisseur Ce paramètre est obligatoire. |
message |
Indique le texte du message. Ce paramètre est obligatoire. |
params |
Spécifie des paramètres spécifiques pour Pour le type de fournisseur
Pour le type de fournisseur
Pour le type de fournisseur
Pour le fournisseur OCI Notifications de type
Avec le fournisseur
L'ID de canal est un ID unique pour un canal et est différent du nom du canal. Dans Slack, lorsque vous affichez les détails du canal, vous pouvez trouver l'ID de canal dans l'onglet "A propos de". Ce paramètre est obligatoire. |
Remarques sur l'utilisation
Utilisez la procédure DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username et password) pour créer l'objet d'informations d'identification. Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.
-
Pour le fournisseur
email, l'utilisateur requiert une adresse de connexion SMTP pour que le serveur Email Delivery obtiennesmtp_host. L'utilisateur a également besoin d'un expéditeur SMTP approuvé et de ses informations d'identification pour s'authentifier auprès du serveur Email Delivery afin d'obtenircredential_name. La connexion SMTP doit être configurée et les informations d'identification SMTP doivent être générées et approuvées. -
Pour le fournisseur
msteams, l'utilisateur requiert l'application Microsoft Teams et un bot configuré dans celle-ci. L'application doit être publiée dans l'organisation et installée après avoir obtenu l'approbation de l'administrateur du centre d'administration. L'utilisateur doit également avoir accès aux droits d'accèsFiles.ReadWrite.AlletChannelSettings.Read.Allpour l'API Graph à partir de son portail Azure. Pour générer le jeton requis, l'utilisateur requiertbot_iddans le nom utilisateur etbot_secretdans le mot de passe. -
Pour le fournisseur
slack, la valeurusernamepeut être n'importe quelle chaîne valide etpasswordest le jeton de bot Slack. -
DBMS_CLOUD_NOTIFICATIONprend en charge le fournisseur OCI Notifications. Pour plus de détails sur le fournisseur OCI Notifications, reportez-vous à Présentation de Notifications.-
Pour utiliser le fournisseur OCI Notifications, vous devez effectuer les opérations suivantes :
-
Créer un sujet. Pour plus d'informations sur la création d'un sujet, reportez-vous à Création d'un sujet.
-
Créez les abonnements requis. Pour plus de détails sur la création d'un abonnement, reportez-vous à Création d'un abonnement.
-
Une fois les abonnements créés, confirmez-les. Les messages sont uniquement publiés sur des abonnements confirmés. Pour plus d'informations sur la confirmation des abonnements, reportez-vous à Confirmation d'un abonnement.
-
-
L'instance de base de données Autonomous AI, les informations d'identification (si vous utilisez des informations d'identification utilisateur) et le sujet d'abonnement doivent tous se trouver dans la même région.
-
Notez les limitations suivantes :
-
Limite de taille de message : la limite de taille de message par demande est de 64 ko. Les messages dépassant cette taille ne peuvent pas être envoyés ou traités dans une seule demande.
-
Limite du taux de distribution des messages : il existe différentes limites de taux de distribution des messages en fonction du protocole utilisé.
- Protocole
email: la limite est de 10 messages par minute et par adresse.
Cette restriction peut avoir un impact sur la vitesse à laquelle les messages peuvent être transmis et reçus.
- Protocole
-
Transactions par minute (TPM) par limite de location : il existe une limite de TPM de 60 par sujet pour cette opération. Cette limite représente le nombre maximal de messages par minute pouvant être traités ou traités pour un sujet donné. Si vous dépassez cette limite, les messages ne seront pas traités ou traités plus lentement.
-
-
Exemples
Envoyez un message texte avec le fournisseur 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;
/
Envoyez un message texte avec le fournisseur 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;
/
Envoyez un message texte avec le fournisseur 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;
/
Envoyez un message texte avec OCI Notifications, saisissez le fournisseur 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;
/