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 rationalise l'expérience utilisateur et offre une performance optimale pour les opérations de fichier en masse.
L'ensemble DBMS_CLOUD
prend en charge le chargement et le déchargement de fichiers dans les services en nuage suivants :
-
Service de stockage d'objets pour Oracle Cloud Infrastructure
-
Azure Blob Storage
-
Amazon S3
-
Google Cloud Storage
Pour plus d'informations, voir Formats d'URI des fichiers de l'ensemble DBMS_CLOUD.
Rubriques connexes
À propos des opérations de fichier en masse
DBMS_CLOUD
prennent en charge le téléchargement et le chargement de fichiers sur Autonomous Database, notamment la prise en charge de la copie, du déplacement et de la suppression de fichiers entre des 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 offrent des performances optimales pour le chargement, le téléchargement, la copie et le déplacement de 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 Autonomous Database pour déterminer le nombre de fichiers parallèles traités.MEDIUM
: Utilisez la limite d'accès simultané pour le service de taille moyenne pour déterminer le parallélisme.LOW
: Traiter les fichiers dans l'ordre des numéros de série (pas d'accès simultané).
L'exécution d'opérations en masse avec une priorité supérieure utilise plus de ressources de base de données et les opérations se terminent plus rapidement lorsque le parallélisme peut accélérer les opérations. 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, une priorité plus élevée peut ne pas modifier les performances.
Pour augmenter le parallélisme des opérations de fichier en masse, utilisez la priorité HIGH
et augmentez le nombre d'UC affectées à votre instance Autonomous Database. Le nombre maximal d'opérations de fichier concurrentes 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 fichier en masse utilisent la limite de concurrence définie pour le groupe de consommateurs MEDIUM.
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 les opérations de fichier en masse.
Dans les sous-programmes DBMS_CLOUD décrits ci-dessous, credential_name
, source_credential_name
ou target_credential_name
peuvent être NULL
pour l'URI de seau public, préauthentifié ou pré-signé.
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.
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
DBMS_CLOUD.BULK_MOVE
pour déplacer en masse des fichiers d'un emplacement de stockage d'objets en nuage vers 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.
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 depuis l'emplacement du magasin d'objets en nuage vers l'objet de répertoire dans une base de données Autonomous Database.
Chargement en masse de fichiers 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.
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.
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. Par 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 d'état 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 du temps START_TIME
et END_TIME
indiqués.
La colonne STATUS
de l'opération de fichier peut avoir l'une des valeurs suivantes :
Statut du fichier | Description |
---|---|
|
Opération de fichier terminée. |
|
Échec de l'opération de fichier. Une nouvelle tentative peut être tentée deux fois. |
|
L'opération de fichier n'a pas encore démarré. |
|
L'opération de fichier est en cours. |
|
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. Par 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
, il existe des options de paramètre format
qui contrôlent les tables de statut :
-
logretention
: Spécifie une valeur entière qui détermine la durée en jours de conservation de la table de statut. 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
.