Résolution des erreurs avec l'outil de partage de données

Ce chapitre fournit des conseils sur les problèmes qui ralentissent les performances et sur la manière de les résoudre.

Rubriques :

Fonctionnalité de partage en direct - Performances lentes

Avec l'augmentation des ECPU, les performances de la fonctionnalité de partage en direct de l'outil de partage de données s'améliorent-elles lors de l'exécution de requêtes complexes ?

Non, ce n'est pas. Dans ce cas, vous devez configurer le degré de parallélisme (DOP) à l'aide de Data Studio pour améliorer les performances des requêtes complexes en cours d'exécution.

Configurer le degré de parallélisme (DOP) avec Data Studio

Lorsque la fonctionnalité de partage en direct de l'instance Database Actions s'exécute sur une valeur accrue d'ECPU, les performances des requêtes complexes en cours d'exécution ne sont pas améliorées par défaut.

Vous pouvez utiliser l'option DOP pour améliorer les performances des requêtes complexes en cours d'exécution. Le degré de parallélisme définit le nombre de processeurs utilisés pour exécuter une instruction unique, pour chaque exécution de plan parallèle. Cette section décrit la procédure de configuration de l'option de configuration degree of parallelism (DOP) dans la base de données AI autonome à l'aide de la fonctionnalité de partage en direct de Data Studio.

Dans cet exemple, vous allez utiliser la fonctionnalité de partage en direct et partager des tables d'une taille non compressée de 1 To.

Avant de commencer, voici quelques points que vous devez prendre en compte :
  • L'option permettant de configurer la valeur du degré de parallélisme ne peut être effectuée que par un élément admin.
Prérequis:
  • Connectez-vous à votre instance Database Actions en tant qu'administrateur et, sous Administration, sélectionnez Définir des règles Resource Management.
  • Notez la valeur de simultanéité et le DOP par défaut.
Pour configurer le degré de parallélisme à l'aide de Data Studio afin d'améliorer les performances des requêtes en cours d'exécution complexes, vous devez :
  • Créez un partage en tant que fournisseur.
  • Consommez Share en tant que consommateur et créez des requêtes externes sur vos partages pour enregistrer la durée d'exécution des requêtes.
  • Augmentez les ECPU à une valeur supérieure à la valeur actuelle en tant que fournisseur et consommateur et enregistrez le temps d'exécution de la requête.
  • Configurez la valeur DOP pour le groupe de destinataires MEDIUM.
  • Consommez le même partage et enregistrez la durée d'exécution de la requête de la même table.

Remarques :

Vous devez configurer le nombre ECPU et la valeur DOP en tant que fournisseur disposant des privilèges ADMIN.
Dans la fenêtre d'accueil Database Actions, cliquez sur Sélecteur et sélectionnez l'outil Partage de données dans la suite d'outils Data Studio.
  1. Créez un partage en tant que fournisseur.
    1. Cliquez sur Fournir des partages et sélectionnez +Créer un partage.
    2. Dans l'assistant Créer un partage, entrez le nom du partage dans le champ Nom de l'onglet Général. Par exemple : TEST.



      Dans le champ Description, entrez la description des données que vous partagez. Ce champ est optionnel.

      Sélectionnez Suivant pour accéder à l'onglet Détails de publication.

    3. Dans l'onglet Publier les tables de détails de l'assistant, sélectionnez Partager les données en DIRECT à l'aide de la connexion directe.



      Cliquez sur Suivant.

    4. Dans l'onglet Sélectionner des tables de l'assistant, sélectionnez le schéma dans le menu déroulant, puis faites glisser la table CUSTOMER à partir des tables disponibles.



      Remarques :

      Dans cet exemple, nous partageons une table unique nommée Customer de grande taille.

      Cliquez sur Suivant pour accéder à l'onglet Destinataires de l'assistant Créer un partage.

    5. Dans l'onglet Destinataires de l'assistant Créer un partage, sélectionnez MY_COMPARTMENT dans la liste déroulante.

    6. Sélectionnez Créer pour créer le partage.



  2. Consommez Share en tant que consommateur et créez des requêtes externes sur vos partages pour enregistrer la durée d'exécution des requêtes.
    1. Une fois que vous avez créé le partage en tant que fournisseur, vous utilisez les données partagées par le fournisseur.

      Pour plus d'informations, reportez-vous à Consommer le partage.

    2. Connectez-vous en tant que consommateur pour vous abonner au fournisseur de partage de données et accéder aux données de votre partage.
    3. Sur la page Fournisseur et consommateur de l'outil de partage de données, cliquez sur la mosaïque CONSUME SHARE pour afficher la page Consommer le partage.
    4. Cliquez sur la liste déroulante S'abonner au fournisseur de partage, puis sur l'option S'abonner au fournisseur de partage en direct.



    5. Sous Détails du fournisseur de partage, sélectionnez le nom du fournisseur. Dans cet exemple, TPUSER est le nom du fournisseur.



    6. Dans le panneau Ajouter des partages de la page de l'assistant S'abonner au partage Paramètres du fournisseur, cliquez sur TEST dans la section Partages disponibles, puis cliquez sur l'icône (>).



    7. L'outil ajoute le partage à la section Partages sélectionnés. Cliquez sur S'abonner.
    8. Un message d'information sur la création d'un fournisseur de partage TPUSER s'affiche. Vous êtes dirigé vers la page Charger les données avec l'onglet Partager sélectionné.



    9. Développez le noeud de partage de données TESTSHARE pour afficher les objets qu'il contient. Glissez-déplacez la table partagée TPUSER.CUSTOMER pour l'ajouter au travail de chargement de données.
    10. La table partagée est ajoutée au travail de liaison de données. Lorsque vous exécutez ce travail, une vue CUSTOMER est créée sur la table CUSTOMER qui a été partagée avec vous.
    11. Cliquez sur Démarrer. Une boîte de dialogue Lien de démarrage à partir de la banque cloud apparaît. Cliquez sur Exécuter. Une fois le travail terminé, une icône de lien s'affiche. La vue CUSTOMER est créée.
    12. Cliquez sur la bannière Database Actions | Data Share. Dans la fenêtre de lancement Database Actions |, cliquez sur l'onglet Développement, puis sur l'onglet SQL pour afficher la feuille de calcul SQL.



    13. Glissez-déplacez la table CUSTOMER vers la zone de feuille de calcul SQL.
    14. Une boîte de dialogue affiche les types d'insertion disponibles.
    15. Cliquez sur Sélectionner, puis sur Appliquer.





    16. Cliquez sur Exécuter. Vous pouvez afficher la requête générée automatiquement affichée dans la feuille de calcul.



    17. Notez le temps d'exécution de la requête dans le champ Temps d'exécution affiché sous l'onglet Résultat de la requête.
  3. Augmentez les ECPU en tant que fournisseur et consommateur et enregistrez le temps d'exécution de la requête.
    1. Augmentez les ECPU de votre instance Autonomous AI Database en tant que fournisseur et consommateur à partir de votre console OCI.

      Remarques :

      Assurez-vous que vous n'avez pas activé le redimensionnement automatique.

      Dans cet exemple, nous avons augmenté le nombre d'ECPU à 32. Vous pouvez augmenter le nombre d'ECPU à la valeur de votre choix.

    2. Répétez l'utilisation du même partage CUSTOMER et calculez le temps d'exécution de la requête. Aucune modification ne sera apportée à l'heure d'interrogation de la table.
  4. Configurez la valeur DOP pour le groupe de destinataires MEDIUM.
    1. Connectez-vous à votre instance d'actions de base de données en tant que consommateur avec le privilège ADMIN.
    2. Cliquez sur Sélecteur, puis sous Administration, sélectionnez Définir les règles Resource Management.

    3. Réduisez la limite de simultanéité du groupe de consommateurs de ressources MEDIUM à 8 et cliquez sur Enregistrer les modifications. La réduction de la limite de concomitance augmente le degré de parallélisme.



    Remarques :

    La limite de concomitance que vous avez définie à cette étape doit être inférieure à la valeur par défaut que vous avez indiquée dans le prérequis.
  5. Etape de suivi : après avoir configuré l'option de degré de parallélisme, répétez le processus de consommation du partage, en créant des requêtes externes sur vos partages pour enregistrer le temps d'exécution des requêtes.

    La valeur du temps d'exécution des requêtes a diminué.

L'amélioration des performances des mêmes requêtes SQL complexes se produit immédiatement sans redémarrer le serveur.

Echec de la tentative de requête de table partagée

Problème : la tentative d'interrogation d'une table partagée échoue avec une erreur indiquant des fonctionnalités de table Delta non prises en charge.

Cause probable : la table partagée utilise la fonction Vecteurs de suppression, qui est une fonction Delta Lake. Le consommateur de partage delta de la base de données d'IA autonome ne prend pas en charge les vecteurs de suppression.

Résolution : demandez au fournisseur de supprimer DV de la table.

HTTP 403 non autorisé en raison de la liste d'autorisation IP distante

Problème : l'accès aux données partagées ou le téléchargement des données distantes échoue avec une erreur HTTP 403 - Unauthorized.

Cause probable : le service distant, par exemple Azure Blob Storage ou une autre adresse externe, est configuré avec une liste d'autorisation d'adresses IP source qui n'inclut pas l'adresse IP sortante publique utilisée par Autonomous AI Database.

Remarques :

N'utilisez pas la requête suivante pour identifier l'adresse IP sortante :

SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual;

Cette requête renvoie l'adresse IP du client pour la session en cours, et non l'adresse IP sortante vue par le service externe.

Résolution : identifiez l'adresse IP sortante de la base de données Autonomous AI en émettant une demande HTTPS vers une adresse publique qui renvoie l'adresse IP de l'appelant. Ensuite, demandez à l'administrateur de service distant d'ajouter cette adresse IP à la liste d'autorisation.

  1. Accordez l'accès à l'adresse de test.

    BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host       => 'httpbin.org',
        lower_port => 443,
        upper_port => 443,
        ace        => xs$ace_type(
                        privilege_list => xs$name_list('http'),
                        principal_name => USER,
                        principal_type => xs_acl.ptype_db));
    END;
    /
  2. Interrogez l'adresse à partir de Autonomous AI Database.

    SET SERVEROUTPUT ON
    
    DECLARE
      resp UTL_HTTP.resp;
      line VARCHAR2(32767);
    BEGIN
      resp := UTL_HTTP.begin_request('https://httpbin.org/ip');
      resp := UTL_HTTP.get_response(resp);
      UTL_HTTP.read_line(resp, line, TRUE);
      DBMS_OUTPUT.put_line('Autonomous Database outbound IP = ' || line);
      UTL_HTTP.end_response(resp);
    END;
    /
    
    La réponse contient l'adresse IP publique vue par le service externe. Exemple :
    {{{"origin":"150.136.133.92"}}}
  3. Ajoutez l'adresse IP à la liste d'autorisation distante.

    Mettez à jour le pare-feu, les règles réseau de compte de stockage ou la liste d'autorisation côté partenaire pour inclure l'adresse IP.

Une fois la liste d'autorisation mise à jour, réessayez l'opération d'accès aux données ou de partage de données.