Améliorer le rendement des interrogations avec la mémoire cache de table externe

Dans Autonomous Database sur une infrastructure Exadata dédiée, vous pouvez utiliser la mémoire cache de table externe pour mettre en mémoire cache les données des tables externes de votre base de données.

Le cache de tables externes est créé en tant qu'objet de schéma dans votre base de données, qui dispose d'un espace physique similaire à la façon dont les tables et les index sont stockés dans des fichiers de données. Lorsque vous créez un cache de table externe, une nouvelle table est créée dans votre schéma. Les limites de quota d'espace définies pour votre schéma s'appliquent également au cache de table externe.

Rubriques connexes

À propos de la mémoire cache de table externe dans Autonomous Database

Une mémoire cache de table externe est une zone de stockage dans votre base de données Autonomous Database qui stocke les données d'une table externe.

Les données externes ne sont pas gérées par la base de données. Toutefois, vous pouvez utiliser les tables externes pour interroger les données en dehors de la base. Les interrogations sur les tables externes ne seront pas aussi rapides que les interrogations sur les tables de base de données, car chaque fois que vous accédez aux données, elles doivent être extraites des fichiers externes stockés dans le magasin d'objets.

La fonction de mémoire cache de table externe vous permet de mettre en mémoire cache les données fréquemment consultées à partir de tables externes dans votre base de données Autonomous Database, sans avoir à modifier vos applications qui accèdent aux données, ce qui permet un accès plus rapide aux tables externes.

Voici quelques-uns des avantages de l'utilisation du cache de tables externes :
  • Performance améliorée : les interrogations sont plusieurs fois plus rapides pour les données externes fréquemment consultées. C'est la solution idéale pour les tableaux de bord, les rapports et les outils d'analyse qui accèdent régulièrement aux mêmes données.

  • 100 % transparent : le mécanisme de mise en mémoire cache est entièrement transparent. Les applications peuvent bénéficier d'une vitesse améliorée sans aucune modification de leurs interrogations, tableaux de bord ou applications.

  • Coût réduit du nuage : Dans une application multinuage, la mise en mémoire cache réduit le besoin d'extractions répétées de données externes à partir d'un stockage distant, ce qui réduit les frais de trafic sortant associés à l'accès aux données entre les régions ou les nuages.

Vous pouvez créer une mémoire cache de table externe pour les tables partitionnées et non partitionnées créées dans les types de fichier suivants :
  • Parquet

  • ORC

  • AVRO

  • Tables Iceberg

Pour plus d'informations, voir Interroger les données externes.

Conditions requises

Répertorie les préalables à la création de la mémoire cache de table externe.

  • Vous devez disposer du privilège EXECUTE sur l'ensemble DBMS_EXT_TABLE_CACHE. Notez que vous ne pouvez créer un cache de table externe que dans votre propre schéma et pour les tables externes que vous possédez.

  • Un quota d'espace approprié doit être affecté à votre schéma pour garantir une capacité de stockage suffisante pour les données de la mémoire cache.

  • Vous devez disposer de données d'identification pour accéder aux fichiers de table externe stockés dans le magasin d'objets. Vous n'avez pas besoin de créer des données d'identification si vous activez les données d'identification du principal de ressource pour accéder au service de stockage d'objets pour Oracle Cloud Infrastructure.

Limitations

Répertorie les notes et restrictions importantes concernant l'utilisation du cache de table externe dans une base de données Autonomous Database.

  • Vous ne pouvez créer un cache de table externe que dans votre propre schéma et pour les tables externes que vous possédez.

  • Un cache de table externe ne peut contenir que des fichiers provenant d'une seule table externe.

  • Vous ne pouvez pas accorder de privilèges sur une mémoire cache de table externe et vous ne pouvez accéder qu'aux données de la mémoire cache de table externe dont vous êtes responsable.

  • Lorsqu'un fichier est supprimé du magasin d'objets, les données correspondantes dans le cache sont marquées comme non valides et ne peuvent pas être consultées.

Créer une mémoire cache de table externe

Exécutez DBMS_EXT_TABLE_CACHE.CREATE_CACHE pour créer une mémoire cache de table externe.

Lorsque le cache est créé, il est initialement vide et activé pour l'alimentation. La taille du cache augmente chaque fois qu'un fichier est ajouté, en fonction des limites de quota d'espace définies pour le schéma, jusqu'à ce qu'il atteigne les limites affectées. Pour plus d'informations, voir Définir les préférences de dimensionnement facultatives pour la mémoire cache de table externe.

  1. Utilisez DBMS_EXT_TABLE_CACHE.CREATE_CACHE pour créer une mémoire cache de table externe pour votre schéma. Par exemple :
    BEGIN
        DBMS_EXT_TABLE_CACHE.CREATE_CACHE (      
          owner          => 'SALES',
          table_name     => 'STORE_SALES',
          partition_type => 'PATH');                                                                 
    END;                                                                 
    /
    

    Cela crée une mémoire cache pour la table STORE_SALES dans le schéma SALES. STORE_SALES est une table externe pointant vers des données stockées dans le magasin d'objets.

    Le paramètre owner spécifie le nom du schéma. Cet exemple crée une mémoire cache de table externe pour l'utilisateur SALES.

    Le paramètre partition_type spécifie la méthode de partitionnement à utiliser pour la mémoire cache de table externe. Cet exemple partitionne la mémoire cache à l'aide de la colonne FILE$PATH. FILE$PATH est une colonne invisible qui spécifie le texte du chemin d'accès au fichier jusqu'au début du nom de l'objet.

  2. Lorsque vous créez pour la première fois un cache de table externe, ses métadonnées sont stockées dans le dictionnaire de données, mais aucun espace n'est affecté aux données du cache. Vous pouvez interroger la vue USER_EXTERNAL_TAB_CACHES pour vérifier la création de la mémoire cache.
    SELECT external_table_name, cached, disabled 
      FROM user_external_tab_caches;

    Pour plus d'informations, voir Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES.

    Utilisez la procédure DBMS_EXT_TABLE_CACHE.VALIDATE pour valider une mémoire cache de table externe. Une erreur est signalée si la table externe référencée est introuvable dans la base de données.

    Par exemple :
    BEGIN
      DBMS_EXT_TABLE_CACHE.VALIDATE (
        owner         => 'SALES', 
        table_name    => 'STORE_SALES',
        raise_errors  => TRUE);
    END;
    /

    Pour plus d'informations, voir Procédure VALIDATE.

Alimenter les fichiers dans la mémoire cache de table externe

Affiche des exemples d'alimentation de fichiers dans la mémoire cache de table externe.

Après avoir créé un cache, vous pouvez alimenter les fichiers dans le cache. L'alimentation des fichiers charge le contenu des fichiers de table externe indiqués dans le cache. Vous pouvez choisir d'alimenter tous les fichiers à partir d'une table, d'un pourcentage spécifique de la table ou de spécifier une condition de filtre pour limiter les fichiers à alimenter. Par exemple, vous pouvez filtrer les fichiers en fonction de leur nom ou d'un intervalle de dates.

Selon le quota d'espace affecté au schéma, Oracle tente d'alimenter les fichiers dans la mémoire cache. Si la limite de quota affectée est atteinte, Oracle arrête l'alimentation des fichiers, sauf si l'espace requis est alloué.

La mémoire cache de la table externe ne s'actualise pas automatiquement. Pour mettre à jour la mémoire cache lorsqu'un fichier du magasin d'objets est modifié, vous devez réalimenter le fichier.

Lorsqu'un fichier est supprimé du magasin d'objets, les données mises en cache correspondantes deviennent immédiatement non valides et ne peuvent pas être extraites.

Ajouter une table à la mémoire cache de table externe

Utilisez DBMS_EXT_TABLE_CACHE.ADD_TABLE pour alimenter une table entière ou un certain pourcentage de la table externe dans la mémoire cache.

Exemples

BEGIN
  DBMS_EXT_TABLE_CACHE.ADD_TABLE (
    owner         => 'SALES', 
    table_name    => 'STORE_SALES');
END;
/

Cet exemple tente d'alimenter la table STORE_SALES dans la mémoire cache, en ignorant tous les fichiers existants qui ont déjà été alimentés.

BEGIN
  DBMS_EXT_TABLE_CACHE.ADD_TABLE (
    owner         => 'SALES', 
    table_name    => 'STORE_SALES',
    percent_files => 80);
END;
/

Cet exemple tente d'alimenter 80 % de la table STORE_SALES dans la mémoire cache, en ignorant tous les fichiers existants qui ont déjà été alimentés.

Le paramètre percent_files est facultatif. Si vous ne spécifiez pas ce paramètre, toute la table est alimentée dans la mémoire cache.

Pour plus d'informations, voir ProcédureADD_TABLE.

Ajouter des fichiers à la mémoire cache de table externe

Vous pouvez utiliser les procédures suivantes pour ajouter un ou plusieurs fichiers au cache de table externe :
  • ADD_FILE : Pour ajouter un seul fichier dans la mémoire cache.

  • ADD_BY_LIKE : Pour ajouter un ou plusieurs fichiers spécifiés en fonction des filtres de chemin spécifiés.

  • ADD_LATEST_FILES : Pour ajouter un ou plusieurs fichiers en fonction de l'intervalle de temps spécifié.

Exemples

Utilisez la procédure DBMS_EXT_TABLE_CACHE.ADD_FILE pour alimenter un seul fichier dans la mémoire cache de la table externe. Par exemple :
BEGIN
  DBMS_EXT_TABLE_CACHE.ADD_FILE (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    file_url     => 'https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet'
);
END;
/

Cet exemple charge les données du fichier salesdata.parquet dans la mémoire cache.

Cet exemple ignore l'alimentation du fichier dans le cache si le fichier spécifié existe dans le cache et n'a pas été modifié depuis la dernière mise en cache du fichier.

Pour plus d'informations, voir ProcédureADD_FILE.

Utilisez la procédure DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE pour alimenter un ou plusieurs fichiers dans la mémoire cache de la table externe. Par exemple :
BEGIN
  DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet",
                      "https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata1.parquet"]'
);
END;
/

Cet exemple charge les données des fichiers salesdata.parquet et salesdata1.parquet dans la mémoire cache, en ignorant tous les fichiers existants qui ont déjà été alimentés.

BEGIN
  DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data1.parquet",
                      "https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data2.parquet"]',
    esc_char     => '#',
    force        => TRUE);
END;
/

Cet exemple charge les fichiers sales_data1.parquet et sales_data2.parquet dans la mémoire cache.

Dans cet exemple, le caractère '#' est défini en tant que caractère d'échappement. Le caractère '_' suivant '#' est traité comme un trait de soulignement littéral, et non comme un caractère générique correspondant à un seul caractère.

Pour plus d'informations, voir ProcédureADD_BY_LIKE.

Utilisez la procédure DBMS_EXT_TABLE_CACHE.ADD_LATEST_FILES pour alimenter dans la mémoire cache de la table externe un ou plusieurs fichiers basés sur la date de la dernière modification. Par exemple :
BEGIN
  DBMS_EXT_TABLE_CACHE.ADD_LATEST_FILES (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    since        => INTERVAL '7' DAY,
    max_files    => 5,
    force        => TRUE);
END;
/

Le paramètre since spécifie l'intervalle de temps; seuls les fichiers modifiés au cours des sept (7) derniers jours peuvent être alimentés dans la mémoire cache.

Le paramètre max_files limite le nombre de fichiers pouvant être alimentés dans la mémoire cache. Cet exemple ne charge que cinq (5) fichiers.

Le paramètre force force le remplacement des fichiers spécifiés dans la mémoire cache même si les fichiers n'ont pas été modifiés.

Pour plus d'informations, voir ProcédureADD_LATEST_FILES.

Interrogez les vues suivantes du dictionnaire de données pour répertorier les fichiers mis en cache dans le cache de tables externes :

Supprimer des fichiers de la mémoire cache de table externe

Affiche des exemples pour supprimer des fichiers de la mémoire cache de table externe.

Vous pouvez supprimer tous les fichiers du cache ou spécifier des conditions de filtre pour supprimer un ou plusieurs fichiers du cache. Par exemple, vous pouvez filtrer les fichiers par leur nom ou en fonction d'un intervalle de temps spécifique.

Effacer la mémoire cache de table externe

Utilisez DBMS_EXT_TABLE_CACHE.CLEAR pour supprimer tous les fichiers de la mémoire cache de table externe. Par exemple :

BEGIN
  DBMS_EXT_TABLE_CACHE.CLEAR (
    owner         => 'SALES', 
    table_name    => 'STORE_SALES');
END;
/

Cet exemple supprime tous les fichiers de la mémoire cache STORE_SALES et libère tout l'espace utilisé par les fichiers supprimés.

Pour plus d'informations, voir Procédure de nettoyage.

Supprimer des fichiers de la mémoire cache de table externe

Vous pouvez utiliser les procédures suivantes pour supprimer un ou plusieurs fichiers du cache de tables externes :
  • DROP_FILE : Pour supprimer un seul fichier de la mémoire cache.

  • DROP_BY_LIKE : Pour supprimer un ou plusieurs fichiers de la mémoire cache en fonction des filtres de chemin spécifiés.

  • RETIRE_FILES : Pour supprimer un ou plusieurs fichiers de la mémoire cache en fonction de l'intervalle spécifié.

Exemples

Utilisez DBMS_EXT_TABLE_CACHE.DROP_FILE pour supprimer un fichier de la mémoire cache de la table externe. Par exemple :

BEGIN
  DBMS_EXT_TABLE_CACHE.DROP_FILE (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    file_url     => 'https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet'
);
END;
/

Cet exemple supprime le fichier salesdata.parquet de la mémoire cache et libère tout l'espace utilisé par le fichier supprimé.

Pour plus d'informations, voir ProcédureDROP_FILE.

Utilisez DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE pour supprimer un ou plusieurs fichiers en fonction du paramètre path_filters. Par exemple :

BEGIN
  DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet",
                      "https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata1.parquet"]'
);
END;
/

Cet exemple supprime les fichiers salesdata.parquet et salesdata1.parquet de la mémoire cache et libère tout l'espace utilisé par les fichiers supprimés.

BEGIN
  DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data1.parquet",
                      "https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data1.parquet"]'
);
END;
/

Cet exemple supprime les fichiers sales#_data1 et sales#_data2 de la mémoire cache et libère tout l'espace utilisé par les fichiers supprimés.

Dans cet exemple, le caractère '#' est défini en tant que caractère d'échappement. Le caractère '_' suivant '#' est traité comme un trait de soulignement littéral, et non comme un caractère générique correspondant à un seul caractère.

Pour plus d'informations, voir ProcédureDROP_BY_LIKE.

Utilisez DBMS_EXT_TABLE_CACHE.RETIRE_FILES pour supprimer un ou plusieurs fichiers en fonction de l'intervalle spécifié. Par exemple :

BEGIN
 DBMS_EXT_TABLE_CACHE.RETIRE_FILES (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    before       => INTERVAL '30' DAY);
END;
/

Cet exemple supprime les fichiers qui datent de plus de trente (30) jours du cache et libère tout l'espace utilisé par les fichiers supprimés.

Pour plus d'informations, voir ProcédureRETIRE_FILES.

Les exemples ci-dessus suppriment un ou plusieurs fichiers du cache tout en conservant le cache. Vous pouvez charger à nouveau les fichiers dans le cache si nécessaire. Pour plus d'informations, voir Alimenter les fichiers dans la mémoire cache de table externe.

Désactiver et activer la mémoire cache de table externe

Affiche des exemples pour désactiver et activer la mémoire cache de table externe.

Exécutez DBMS_EXT_TABLE_CACHE.DISABLE pour désactiver la mémoire cache de table externe à partir de la base de données. La désactivation d'une mémoire cache ne supprime pas les données de la mémoire cache; elle est marquée DISABLED et l'optimiseur ne peut pas utiliser la mémoire cache pour les réécritures d'interrogation.

Exemple

BEGIN
    DBMS_EXT_TABLE_CACHE.DISABLE (      
      owner          => 'SALES',
      table_name     => 'STORE_SALES');                                                                 
END;                                                                 
/

Cet exemple désactive la mémoire cache STORE_SALES.

Pour plus d'informations, voir Procédure DISABLE.

Après avoir désactivé une mémoire cache de table externe, utilisez DBMS_EXT_TABLE_CACHE.ENABLE pour activer la mémoire cache.

Exemple :
BEGIN
  DBMS_EXT_TABLE_CACHE.ENABLE (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES'
 );
END;
/

Cet exemple active la mémoire cache STORE_SALES.

Pour plus d'informations, voir Procédure ENABLE.

Supprimer la mémoire cache de table externe

Affiche un exemple de suppression de la mémoire cache de table externe.

Exécutez DBMS_EXT_TABLE_CACHE.DROP_CACHE pour supprimer une mémoire cache de table externe. La procédure DBMS_EXT_TABLE_CACHE.DROP_CACHE supprime la mémoire cache de table externe spécifiée de la base de données et libère l'espace de stockage associé à la mémoire cache.

Exemple :

BEGIN
    DBMS_EXT_TABLE_CACHE.DROP_CACHE (      
      owner          => 'SALES',
      table_name     => 'STORE_SALES');                                                             
END;                                                                 
/

Cet exemple supprime la mémoire cache STORE_SALES du schéma SALES.

La suppression d'un cache supprime ses métadonnées du dictionnaire de données et supprime toutes ses données mises en cache.

Pour plus d'informations, voir ProcédureDROP_CACHE.

Interrogez la vue USER_EXTERNAL_TAB_CACHES pour vérifier que la mémoire cache a été supprimée. Par exemple :
SELECT external_table_name, cached
  FROM user_external_tab_caches;

Pour plus d'informations, voir Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES.

Voir les informations sur la mémoire cache de table externe

Autonomous Database fournit des vues qui vous permettent de surveiller la mémoire cache de table externe.

Voir Description

Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES

Fournit des informations sur tous les caches de tables externes de la base de données ou sur les caches de tables externes d'un utilisateur.

ALL_EXTERNAL_TAB_CACHE_LOCATIONS

Fournit des informations sur les fichiers du stockage en nuage accessibles à l'utilisateur courant et appartenant à des tables externes mises en cache.

USER_EXTERNAL_TAB_CACHE_LOCATIONS

Fournit des informations sur les fichiers du stockage en nuage appartenant à l'utilisateur courant et appartenant à des tables externes mises en cache. Cette vue n'affiche pas la colonne OWNER.

Définir les préférences de dimensionnement facultatives pour la mémoire cache de table externe

Vous pouvez utiliser la procédure DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY pour définir les préférences de dimensionnement et les limites de quota d'espace dans la mémoire cache de table externe.

Par défaut, la mémoire cache de table externe est désactivée pour un utilisateur. Pour activer et créer la mémoire cache de table externe, utilisez la procédure DBMS_EXT_TABLE_CACHE.CREATE_CACHE. Le cache est créé dans votre schéma par défaut et hérite des limites de quota d'espace définies pour votre schéma. Toutefois, vous pouvez également utiliser la procédure DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY pour définir des quotas d'espace pour la mémoire cache de table externe. Vous utilisez les paramètres PROPERTY_NAME et PROPERTY_VALUE de la procédure DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY pour définir les limites de quota d'espace.

Le paramètre PROPERTY_NAME accepte les valeurs MAX_CACHE_SIZE et MAX_CACHE_PERCENT. La propriété MAX_CACHE_SIZE spécifie la taille totale de la mémoire cache externe en octets. La propriété MAX_CACHE_PERCENT spécifie la taille totale de la mémoire cache externe en tant que pourcentage du quota de l'utilisateur spécifié.

Avant de définir les propriétés de la taille du cache, notez l'ordre de priorité suivant :
  • Lorsque MAX_CACHE_SIZE, MAX_CACHE_PERCENT et le quota d'espace sont définis, MAX_CACHE_PERCENT a préséance sur MAX_CACHE_SIZE.

  • Lorsque seul MAX_CACHE_SIZE est défini et que MAX_CACHE_PERCENT ou le quota d'espace n'est pas défini, MAX_CACHE_SIZE a préséance.

  • Lorsque seul le quota d'espace est défini et que MAX_CACHE_SIZE et MAX_CACHE_PERCENT ne sont pas définis, le quota de taille de mémoire cache est par défaut égal à 10 % du quota de schéma total.

  • Lorsque MAX_CACHE_SIZE, MAX_CACHE_PERCENT ou le quota d'espace n'est pas défini, le quota d'espace de mémoire cache prend par défaut la valeur UNLIMITED.

Exemples

BEGIN
    DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY (
    property_name  => 'MAX_CACHE_PERCENT',          
    property_value => 50,                   
    owner          => 'SALES');                                                                
END;                                                                 
/

Cet exemple règle la préférence de mise en mémoire cache à MAX_CACHE_PERCENT pour le schéma SALES.

La valeur property_value est de 50 %, ce qui indique que le quota d'espace de mémoire cache pour le schéma SALES est un maximum de 50 % du quota d'espace total défini pour SALES.

BEGIN
    DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY (
    owner          => 'SALES',   
    property_name  => 'MAX_CACHE_SIZE',          
    property_value => 5368709120);                                                                
END;                                                                 
/

Cet exemple règle la préférence de mise en mémoire cache à MAX_CACHE_SIZE pour le schéma SALES.

property_value est 5368709120, qui spécifie que la taille maximale de la mémoire cache pour le schéma SALES est de 5 Go au maximum.

Pour plus d'informations, voir Procédure SET_USER_PROPERTY et Procédure CREATE_CACHE.

Utilisez DBMS_EXT_TABLE_CACHE.GET_USER_PROPERTY pour extraire les propriétés de taille de mémoire cache.

Exemple :

SET SERVEROUTPUT ON
    DECLARE
    max_cache_sz NUMBER,
    BEGIN
    max_cache_sz := DBMS_EXT_TABLE_CACHE.GET_USER_PROPERTY (
        property_name       => 'MAX_CACHE_SIZE',         
        owner               => 'SALES');                                                                
END;                                                                 
/

Pour plus d'informations, voir Fonction GET_USER_PROPERTY.

Colonnes de métadonnées de table externe

Les métadonnées de la table externe vous aident à déterminer d'où proviennent les données lorsque vous effectuez une interrogation.

Les tables externes que vous créez avec DBMS_CLOUD.CREATE_EXTERNAL_TABLE, DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE ou DBMS_CLOUD.CREATE_HYBRID_PART_TABLE incluent deux colonnes invisibles file$path et file$name. Ces colonnes permettent d'identifier le fichier d'où provient un enregistrement.

  • file$path : Spécifie le texte du chemin d'accès au fichier jusqu'au début du nom de l'objet.

  • file$name : Spécifie le nom de l'objet, y compris tout le texte qui suit le dernier "/".

Par exemple :

SELECT genre_id, name, file$name, file$path FROM ext_genre
     WHERE rownum <= 2;

genre_id      name        file$name     file$path
--------      ---------   -----------   ----------------------
1             Action      genre.csv     https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_gold/o/genre
2             Adventure   genre.csv     https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_gold/o/genre

Voir Colonnes invisibles pour plus d'informations sur les colonnes invisibles.