Opérations en masse pour les fichiers dans le nuage

L'ensemble PL/SQL DBMS_CLOUD offre une prise en charge de l'exécution en parallèle pour les activités de chargement, de téléchargement, de copie et de transfert de fichiers en masse, ce qui simplifie l'expérience utilisateur et offre une performance optimale pour les opérations de fichiers en masse.

L'ensemble DBMS_CLOUD prend en charge le chargement et le déchargement des fichiers dans les services en nuage suivants :

  • Service de stockage d'objets pour Oracle Cloud Infrastructure

  • Stockage Azure Blob ou stockage Azure Data Lake

  • Amazon S3

  • Compatible avec Amazon S3, y compris Wasabi Hot Cloud Storage

  • Google Cloud Storage

Pour plus d'informations, voir Formats d'URI de fichier de paquetage DBMS_CLOUD.

À propos des opérations de fichier en masse

Les opérations de fichier en masse DBMS_CLOUD prennent en charge le téléchargement et le chargement de fichiers sur Autonomous AI Database, notamment la prise en charge de la copie, du déplacement et de la suppression de fichiers dans les magasins d'objets en nuage, au sein du même fournisseur de magasin d'objets ou entre des fournisseurs de magasin d'objets.

Les opérations de fichiers en masse prennent en charge le parallélisme et fournissent des performances optimales pour le chargement, le téléchargement, la copie et le déplacement des fichiers. Le parallélisme pour les opérations de fichiers en masse est géré en spécifiant une priorité pour une opération. Les priorités soutenues sont les suivantes :

  • HIGH : Utilisez le nombre d'UC de l'instance de base de données du service d'intelligence artificielle autonome pour déterminer le nombre de fichiers parallèles traités.
  • MEDIUM : Utilisez la limite d'accès simultané pour le service Medium pour déterminer le parallélisme.
  • LOW : Traiter les fichiers dans l'ordre des numéros de série (sans accès simultané).

L'exécution d'opérations en masse avec une priorité plus élevée utilise davantage de ressources de base de données et les opérations sont plus rapides lorsque le parallélisme peut accélérer l'opération. Une priorité inférieure consomme moins de ressources de base de données et les opérations prennent plus de temps lorsque le parallélisme peut accélérer les opérations. Lorsque les opérations en masse impliquent un petit nombre de fichiers contenant peu de données, la spécification d'une priorité supérieure peut ne pas modifier les performances.

Pour augmenter le parallélisme pour les opérations de fichier en masse, utilisez la priorité HIGH et augmentez le nombre d'UC affectées à votre instance de base de données d'IA autonome. Le nombre maximal d'opérations de fichier concurrent prises en charge est limité à 64 pour les opérations de fichier en masse.

La priorité par défaut est MEDIUM, qui spécifie que les opérations de fichiers en masse utilisent la limite d'accès simultané définie pour le groupe de consommateurs de ressources MEDIUM. Pour plus d'informations, voir Gérer les accès simultanés et les priorités sur la base de données d'IA autonome.

Voir DBMS_CLOUD pour la gestion des fichiers en masse pour plus de détails sur l'utilisation du paramètre format pour spécifier priority avec des opérations de fichier en masse.

Copier des fichiers en masse dans le stockage d'objets en nuage

Utilisez la procédure DBMS_CLOUD.BULK_COPY pour copier en masse des fichiers d'un seau ou d'un dossier du magasin d'objets vers un autre seau ou dossier.

  1. Créez un objet de données d'identification pour accéder à l'emplacement source.

    Le nom des données d'identification sources, tel que spécifié avec le paramètre source_credential_name, est également utilisé par défaut comme données d'identification pour l'emplacement cible.

    Pour plus d'informations, voir ProcédureCREATE_CREDENTIAL.

  2. Lorsque la source et la cible se trouvent dans des magasins d'objets distincts ou ont des comptes différents avec le même fournisseur de services en nuage, créez des données d'identification pour accéder à l'emplacement cible et incluez le paramètre target_credential_name.
  3. Exécutez la procédure DBMS_CLOUD.BULK_COPY pour copier des fichiers en parallèle à partir d'un seau ou d'un dossier du magasin d'objets vers un autre seau ou dossier qui peut concerner des fournisseurs, des comptes et des seaux en nuage. Pour exécuter la procédure, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur DBMS_CLOUD.
    BEGIN 
    DBMS_CLOUD.BULK_COPY (
          source_credential_name => 'OCI_CRED',
          source_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
          target_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
          format                 => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
    );
    END;
    /

    Cet exemple copie en masse des fichiers d'un seau d'Oracle Cloud Infrastructure Object Storage vers un autre.

    Pour plus d'informations, voir ProcédureBULK_COPY.

    Pour plus d'informations, voir Formats d'URI DBMS_CLOUD.

Par exemple, utilisez DBMS_CLOUD.BULK_COPY pour copier des fichiers d'Amazon S3 vers Oracle Cloud Infrastructure Object Storage.

BEGIN
DBMS_CLOUD.BULK_COPY(      
      source_credential_name  => 'AWS_CRED',
      source_location_uri     => 'https://bucketname.s3-us-west-2.amazonaws.com/',
      target_credential_name  => 'OCI_CRED',
      target_location_uri     => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
      format                  =>  JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/

Déplacer des fichiers en masse dans le stockage d'objets en nuage

Utilisez la procédure DBMS_CLOUD.BULK_MOVE pour déplacer en masse des fichiers d'un emplacement de stockage d'objets en nuage à un autre.

La première étape du déplacement des fichiers consiste à les copier vers l'emplacement cible. Une fois les fichiers copiés, ils sont supprimés de l'emplacement source.

Les fichiers sont renommés plutôt que copiés si le magasin d'objets permet de renommer les opérations entre les emplacements source et cible.

  1. Créez un objet de données d'identification pour accéder à l'emplacement source.

    Le nom des données d'identification sources, tel que spécifié avec le paramètre source_credential_name, est également utilisé par défaut comme données d'identification pour l'emplacement cible.

    Pour plus d'informations, voir ProcédureCREATE_CREDENTIAL.

  2. Lorsque la source et la cible se trouvent dans des magasins d'objets distincts ou ont des comptes différents avec le même fournisseur de services en nuage, créez des données d'identification pour accéder à l'emplacement cible et incluez le paramètre target_credential_name.
  3. Exécutez la procédure DBMS_CLOUD.BULK_MOVE pour déplacer en masse des fichiers d'un emplacement de stockage d'objets en nuage à un autre. Pour exécuter la procédure, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur DBMS_CLOUD.
    BEGIN 
    DBMS_CLOUD.BULK_MOVE (    
         source_credential_name => 'OCI_CRED',
         source_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
         target_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
         format                 => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKMOVE')
    );
    END;
    /

    Cet exemple déplace en masse des fichiers d'un emplacement Oracle Cloud Infrastructure Object Storage vers un autre.

    Pour plus d'informations, voir ProcédureBULK_MOVE.

    Pour plus d'informations, voir Formats d'URI DBMS_CLOUD.

Par exemple, utilisez DBMS_CLOUD.BULK_MOVE pour déplacer des fichiers d'Amazon S3 vers Oracle Cloud Infrastructure Object Storage.

BEGIN
DBMS_CLOUD.BULK_MOVE(      
      source_credential_name  => 'AWS_CRED',
      source_location_uri     => 'https://bucketname.s3-us-west-2.amazonaws.com/',
      target_credential_name  => 'OCI_CRED',
      target_location_uri     => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
      format                  =>  JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/

Télécharger des fichiers en masse à partir du stockage d'objets en nuage

Utilisez la procédure DBMS_CLOUD.BULK_DOWNLOAD pour télécharger en masse des fichiers à partir de l'emplacement du magasin d'objets en nuage vers l'objet de répertoire dans une base de données d'intelligence artificielle autonome.

  1. Créez des données d'identification pour accéder au service de stockage d'objets en nuage.

    Le nom des données d'identification est spécifié avec le paramètre credential_name.

    Pour plus d'informations, voir ProcédureCREATE_CREDENTIAL.

  2. Exécutez la procédure DBMS_CLOUD.BULK_DOWNLOAD pour télécharger des fichiers dans un répertoire Autonomous Database à partir du service de stockage d'objets en nuage. Pour exécuter la procédure, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur DBMS_CLOUD.
    BEGIN
    DBMS_CLOUD.BULK_DOWNLOAD (
         credential_name => 'OCI_CRED',
         location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
         directory_name  => 'BULK_TEST',
         format          => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
     );
    END;
    /

    Cet exemple télécharge en masse des fichiers à partir de l'URI d'emplacement du magasin d'objets Oracle Cloud Infrastructure vers l'objet de répertoire dans une base de données d'intelligence artificielle autonome.

    Note

    Pour écrire les fichiers dans l'objet de répertoire cible, vous devez disposer du privilège WRITE sur l'objet de répertoire.

    Pour plus d'informations, voir ProcédureBULK_DOWNLOAD.

    Pour plus d'informations, voir Formats d'URI DBMS_CLOUD.

Charger des fichiers en masse vers le stockage d'objets en nuage

Utilisez la procédure DBMS_CLOUD.BULK_UPLOAD pour charger en masse des fichiers à partir d'un objet de répertoire dans la base de données vers un emplacement de magasin d'objets en nuage.

  1. Créez des données d'identification pour accéder au service de stockage d'objets en nuage.

    Le nom des données d'identification est spécifié avec le paramètre credential_name.

    Pour plus d'informations, voir ProcédureCREATE_CREDENTIAL.

  2. Exécutez la procédure DBMS_CLOUD.BULK_UPLOAD pour copier des fichiers dans le stockage d'objets en nuage à partir d'un répertoire de base de données sur votre instance de base de données du service d'intelligence artificielle autonome. Pour exécuter la procédure, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur DBMS_CLOUD.
    BEGIN
    DBMS_CLOUD.BULK_UPLOAD (    
         credential_name => 'OCI_CRED',
         location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
         directory_name  => 'BULK_TEST',
         format          => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKUPLOAD')
     );
    END;
    /

    Cet exemple de chargement en masse de fichiers à partir d'un objet de répertoire, comme spécifié avec le paramètre directory_name, vers l'URI d'emplacement du magasin d'objets Oracle Cloud Infrastructure.

    Note

    Pour lire les fichiers sources dans l'objet de répertoire, vous devez disposer du privilège READ sur l'objet de répertoire.

    Pour plus d'informations, voir ProcédureBULK_UPLOAD.

Supprimer en masse des fichiers du stockage d'objets en nuage

Utilisez la procédure DBMS_CLOUD.BULK_DELETE pour supprimer en masse des fichiers du stockage d'objets en nuage.

  1. Créez des données d'identification pour accéder au service de stockage d'objets en nuage.

    Le nom des données d'identification est spécifié avec le paramètre credential_name.

    credential_name peut être NULL pour un URI de seau public ou préauthentifié ou pré-signé.

    Pour plus d'informations, voir ProcédureCREATE_CREDENTIAL.

  2. Exécutez la procédure DBMS_CLOUD.BULK_DELETE pour supprimer des fichiers du magasin d'objets en nuage. Pour exécuter la procédure, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur DBMS_CLOUD.
    BEGIN
    DBMS_CLOUD.BULK_DELETE (    
         credential_name => 'OCI_CRED',
         location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
         format          => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKDEL')
    );
    END;
    /

    Cet exemple supprime en masse des fichiers du magasin d'objets Oracle Cloud Infrastructure.

    Voir Procédure BULK_DELETE pour plus d'informations.

    Pour plus d'informations, voir Formats d'URI DBMS_CLOUD.

Surveiller et dépanner les chargements de fichiers en masse

Toutes les opérations de chargement de données DBMS_CLOUD sont enregistrées dans les vues dba_load_operations et user_load_operations.

Vous pouvez utiliser les vues suivantes pour surveiller et dépanner les chargements de fichiers en masse :

  • dba_load_operations : Affiche toutes les opérations de chargement.

  • user_load_operations : Affiche les opérations de chargement de votre schéma.

Interrogez ces vues pour voir des informations sur les opérations de fichiers en masse en cours et terminées. Par exemple, l'énoncé SELECT suivant avec un prédicat de clause WHERE sur TYPE affiche les opérations DOWNLOAD :


SELECT owner_name, type, status, start_time, update_time, status_table, rows_loaded 
   FROM user_load_operations WHERE type = 'DOWNLOAD';

OWNER_NAME TYPE     STATUS    START_TIME               UPDATE_TIME              STATUS_TABLE ROWS_LOADED 
---------- -------- --------- ------------------------ ------------------------ ------------ ----------- 
"ADMIN"    DOWNLOAD COMPLETED 2022-10-17T20:42:19.498Z 2022-10-17T20:42:21.054Z DWN$2_STATUS           4 
"ADMIN"    DOWNLOAD FAILED    2022-10-17T20:40:54.348Z 2022-10-17T20:40:55.679Z DWN$1_STATUS             

La colonne STATUS_TABLE affiche le nom de la table que vous pouvez interroger pour consulter les informations de journalisation détaillées pour l'opération de téléchargement en masse. Exemple :

DESCRIBE DWN$2_STATUS
Name          Null?    Type                        
------------- -------- --------------------------- 
ID            NOT NULL NUMBER                      
NAME                   VARCHAR2(4000)              
BYTES                  NUMBER                      
CHECKSUM               VARCHAR2(128)               
LAST_MODIFIED          TIMESTAMP(6) WITH TIME ZONE 
STATUS                 VARCHAR2(30)                
ERROR_CODE             NUMBER                      
ERROR_MESSAGE          VARCHAR2(4000)              
START_TIME             TIMESTAMP(6) WITH TIME ZONE 
END_TIME               TIMESTAMP(6) WITH TIME ZONE 
SID                    NUMBER                      
SERIAL#                NUMBER                      
ROWS_LOADED            NUMBER                      

SELECT id, name, bytes, status, error_message, start_time, end_time FROM DWN$2_STATUS;
ID NAME       BYTES STATUS    ERROR_MESSAGE START_TIME               END_TIME                 
-- ---------- ----- --------- ------------- ------------------------ ------------------------ 
 1 trees.txt     58 COMPLETED               2022-10-17T20:42:19.998Z 2022-10-17T20:42:20.421Z 
 2 trees1.txt    58 COMPLETED               2022-10-17T20:42:20.425Z 2022-10-17T20:42:20.533Z 
 3 trees2.txt    58 COMPLETED               2022-10-17T20:42:20.535Z 2022-10-17T20:42:20.894Z 
 4 trees3.txt    58 COMPLETED               2022-10-17T20:42:20.896Z 2022-10-17T20:42:21.043Z

La table de statut affiche chaque nom de fichier et son statut pour l'opération en masse.

Le numéro et le message d'erreur pertinents sont enregistrés dans la table d'état en cas d'échec d'une opération sur un fichier spécifique.

Pour les opérations terminées, le temps nécessaire pour chaque opération peut être calculé à l'aide des heures START_TIME et END_TIME indiquées.

La colonne STATUS de l'opération de fichier peut avoir l'une des valeurs suivantes :

Statut du fichier Description

COMPLETED

L'opération de fichier a réussi.

FAILED

Échec de l'opération de fichier. Une nouvelle tentative peut être effectuée deux fois.

PENDING

L'opération de fichier n'a pas encore démarré.

RUNNING

L'opération de fichier est actuellement en cours.

SKIPPED

Opération de fichier ignorée.

Si une opération de fichier échoue après deux tentatives, l'opération en masse est marquée comme ayant échoué et une erreur est générée. Exemple :

ORA-20003: Operation failed, please query table DOWNLOAD$2_STATUS for error details

Lorsque vous utilisez une opération de fichier en masse DBMS_CLOUD, des options de paramètre format contrôlent les tables de statut :

  • logretention : Spécifie une valeur entière qui détermine la durée en jours pendant laquelle la table de statuts est conservée. La valeur par défaut est de 2 jours.

  • logprefix : Spécifie une valeur de chaîne qui détermine le préfixe de nom de la table de statut d'opération en masse.

    Chaque opération en masse a sa propre valeur par défaut pour l'option logprefix :

    Procédure Valeur par défaut pour logprefix
    DBMS_CLOUD.BULK_COPY COPYOBJ
    DBMS_CLOUD.BULK_DELETE DELETE
    DBMS_CLOUD.BULK_DOWNLOAD DOWNLOAD
    DBMS_CLOUD.BULK_MOVE MOVE
    DBMS_CLOUD.BULK_UPLOAD UPLOAD

Voir Procédure DELETE_ALL_OPERATIONS pour plus d'informations sur la suppression de la table user_load_operations.

Notes pour les opérations de fichier en masse

Fournit des notes pour les données d'identification que vous utilisez avec les opérations de fichier en masse.

  • Vous pouvez spécifier des principaux comme paramètre credential_name, source_credential_name ou target_credential_name pour accéder aux ressources en nuage en toute sécurité sans stocker les données d'identification d'utilisateur. Les principaux pris en charge sont les suivants :

    • Principaux de ressource d'Oracle Cloud Infrastructure
    • Noms de ressource Amazon AWS (ARN)
    • Principal de service Azure
    • Compte de service Google

    Pour plus d'informations, voir Configurer les politiques et les rôles pour accéder aux ressources.

  • credential_name, source_credential_name ou target_credential_name peut être NULL pour l'URI de seau public, préauthentifié ou pré-signé.