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.

Prérequis

Une connectivité sortante doit avoir été configurée à l'aide d'une passerelle NAT, par l'administrateur de parc, comme décrit ci-dessous :
  • Créez une passerelle NAT dans le réseau cloud virtuel (VCN) où résident vos ressources Autonomous Database en suivant les instructions fournies dans 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) dans lesquelles résident les ressources Autonomous Database afin que ces ressources puissent utiliser la passerelle pour obtenir une clé publique à partir de votre instance Azure AD :
    1. Accédez à la page Détails du sous-réseau.
    2. Dans l'onglet Informations sur le sous-réseau, cliquez sur le nom de la table de routage du sous-réseau pour afficher la page Détails de la table de routage correspondante.
    3. Dans la table des règles de routage 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 possédant ces caractéristiques.

    4. Revenez à la page Détails du sous-réseau.
    5. Dans la table Listes de sécurité du sous-réseau, cliquez sur le nom de la liste de sécurité du sous-réseau pour afficher la page Détails de la liste de sécurité correspondante.
    6. Dans le menu latéral, sous Resources, cliquez sur Egress Rules.
    7. 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 présentant ces caractéristiques.

Les paramètres de proxy HTTP de votre environnement doivent permettre à la base de données d'accéder au fournisseur de services 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.

Remarques :

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 (SR) dans My Oracle Support. Pour plus d'informations, 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

SEND_DATA Procédure

Envoyer une sortie de requête SQL à un fournisseur.

SEND_MESSAGE Procédure

Envoyer un message texte à un soignant.

SEND_DATA Procédure

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 : 'email', 'msteams' et 'slack'

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 de l'expéditeur approuvé SMTP 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 "SLACK_TOKEN" et password est le jeton de bot Slack.

Ce paramètre est obligatoire.

query

Indique l'interrogation SQL à exécuter. Les résultats sont envoyés au soignant.

Ce paramètre est obligatoire.

params

Spécifie des paramètres spécifiques pour provider au format JSON.

Pour le type de fournisseur email, les paramètres valides sont les suivants :

  • sender. Indique l'ID courriel de l'expéditeur approuvé dans une valeur String.
  • smtp_host. Cela indique le nom d'hôte SMTP dans une valeur String.
  • subject. Indique l'objet du courriel dans une valeur String. La taille maximale est de 100 caractères.
  • recipient. Indique les ID de courriel des destinataires dans une valeur String. Utilisez une virgule entre les ID courriel lorsqu'il existe plusieurs destinataires.
  • to_cc. Indique les ID d'e-mail qui reçoivent une copie de l'e-mail. Il s'agit d'une valeur String. Utilisez une virgule entre les ID courriel lorsqu'il existe plusieurs destinataires en copie.
  • to_bcc. Indique les ID de courriel qui reçoivent une copie Cci du courriel. Il s'agit d'une valeur String. Utilisez une virgule entre les ID courriel lorsqu'il existe plusieurs destinataires en Cci.
  • message. Indique le texte du message dans une valeur String.
  • type. Indique le format de sortie dans une valeur String au format CSV ou JSON.
  • title. Indique le titre de l'attachement de la sortie SQL dans une valeur String. Le titre doit contenir uniquement des lettres, des chiffres, des traits de soulignement, des tirets ou des points en tant que caractères car il est utilisé pour générer un nom de fichier.

Pour le type de fournisseur msteams, les paramètres valides sont les suivants :

  • tenant. Cela indique l'ID de locataire au format String.
  • team. Cela indique l'ID d'équipe au format String.
  • channel. Indique l'ID de canal au format String.
  • title. Indique le titre du fichier au format String. La taille maximale est de 50 caractères.
  • type. Cela indique le format de sortie dans une valeur String. Les valeurs valides sont CSV ou JSON.

Pour le type de fournisseur slack, les paramètres valides sont les suivants :

  • channel. Cela indique l'ID de canal dans une valeur String. 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 "About".
  • type. Cela indique le format de sortie dans une valeur String. Les valeurs valides sont CSV ou JSON.

Ce paramètre est obligatoire.

Remarques sur l'utilisation

Utilisez la procédure DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username, 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 a besoin d'une adresse de connexion SMTP pour que le serveur Email Delivery obtienne smtp_host. L'utilisateur a également besoin d'un expéditeur approuvé SMTP et de ses informations d'identification pour s'authentifier auprès du serveur Email Delivery afin d'obtenir credential_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 a besoin de l'application Microsoft Teams et d'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 auprès du centre d'administration. L'utilisateur a également besoin d'accéder aux droits d'accès Files.ReadWrite.All et ChannelSettings.Read.All pour l'API Graph à partir de son portail Azure. Pour générer le jeton requis, l'utilisateur doit indiquer bot_id dans le nom utilisateur et bot_secret dans le mot de passe. La taille de fichier maximale prise en charge lors de l'utilisation de DBMS_CLOUD_NOTIFICATION.SEND_DATA pour Microsoft Teams est de 4 Mo.
  • Pour le fournisseur slack, la valeur username peut être n'importe quelle chaîne valide et password est 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;
/ 

SEND_MESSAGE Procédure

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 : 'email', 'msteams' et 'slack'

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 de l'expéditeur approuvé SMTP qui contient son nom utilisateur et son mot de passe.

Pour le fournisseur msteams, les informations d'identification doivent contenir la clé bot_id et la clé bot_secret dans le nom utilisateur et le mot de passe.

Pour le fournisseur Slack, le nom utilisateur des informations d'identification doit être "SLACK_TOKEN" et password est le jeton de bot Slack.

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 provider au format JSON.

Pour le type de fournisseur email, les paramètres valides sont les suivants :
  • sender. Indique l'ID courriel de l'expéditeur approuvé dans une valeur String.
  • smtp_host. Cela indique le nom d'hôte SMTP dans une valeur String.
  • subject. Cela indique l'objet du courriel dans une valeur String. La taille maximale est de 100 caractères.
  • recipient. Indique les ID de courriel des destinataires dans une valeur String. Utilisez une virgule entre les ID courriel lorsqu'il existe plusieurs destinataires.
  • to_cc. Indique les ID d'e-mail qui reçoivent une copie de l'e-mail. Utilisez une virgule entre les ID courriel lorsqu'il existe plusieurs destinataires en copie.
  • to_bcc. Indique les ID de courriel qui reçoivent une copie Cci du courriel. Utilisez une virgule entre les ID courriel lorsqu'il existe plusieurs destinataires en Cci.
Pour le type de fournisseur msteams, le paramètre valide est :
  • channel. Cela indique l'ID de canal dans une valeur String.
Pour le type de fournisseur slack, le paramètre valide est :
  • channel. Cela indique l'ID de canal dans une valeur String.

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

Ce paramètre est obligatoire.

Remarques sur l'utilisation

Utilisez la procédure DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username, 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 a besoin d'une adresse de connexion SMTP pour que le serveur Email Delivery obtienne smtp_host. L'utilisateur a également besoin d'un expéditeur approuvé SMTP et de ses informations d'identification pour s'authentifier auprès du serveur Email Delivery afin d'obtenir credential_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 a besoin de l'application Microsoft Teams et d'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 auprès du centre d'administration. L'utilisateur a également besoin d'accéder aux droits d'accès Files.ReadWrite.All et ChannelSettings.Read.All pour l'API Graph à partir de son portail Azure. Pour générer le jeton requis, l'utilisateur doit indiquer bot_id dans le nom utilisateur et bot_secret dans le mot de passe.
  • Pour le fournisseur slack, la valeur username peut être n'importe quelle chaîne valide et password est le jeton de bot Slack.

Exemples 

Envoyez un message texte au 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 au 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 au 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 Database.',
      params            => json_object('channel' value 'C0....08'));
END;
/