Gérer les répertoires
Autonomous Database sur une infrastructure Exadata dédiée vous permet de créer des répertoires dans votre base de données. Vous pouvez y stocker des fichiers, comme dans un système de fichiers du système d'exploitation. Cette possibilité de stocker des fichiers est particulièrement utile lors de l'exportation et de l'importation de données.
Rubriques connexes
Supprimer un répertoire
Utilisez la commande de base de données DROP DIRECTORY
pour supprimer un objet de répertoire.
Par exemple, la commande suivante supprime l'objet de répertoire de base de données staging
:
DROP DIRECTORY staging;
La commande DROP DIRECTORY
ne supprime pas les fichiers du répertoire. Pour supprimer le répertoire et les fichiers qu'il contient, utilisez d'abord la procédure DBMS_CLOUD.DELETE_FILE
pour supprimer les fichiers. Voir Procédure DELETE_FILE pour plus d'informations.
Pour supprimer un répertoire, vous devez disposer du privilège système DROP ANY DIRECTORY
. L'utilisateur ADMIN dispose du privilège système DROP ANY DIRECTORY
. L'utilisateur ADMIN peut accorder le privilège système DROP ANY DIRECTORY
à d'autres utilisateurs.
Pour plus d'informations, voir DROP DIRECTORY dans Informations de référence sur le langage SQL pour Oracle Database 19c ou Informations de référence sur le langage SQL pour Oracle Database 23ai.
Note :
-
Si vous souhaitez simplement supprimer le répertoire et que vous ne supprimez pas les fichiers qu'il contient, après avoir supprimé le répertoire, vous pouvez afficher tous les fichiers du système de fichiers, y compris les fichiers du répertoire que vous avez supprimé, comme suit :
CREATE OR REPLACE DIRECTORY ROOT_DIR AS '';
Listez ensuite le contenu de
ROOT_DIR
à l'aide de la commande suivante :SELECT * FROM DBMS_CLOUD.LIST_FILES('ROOT_DIR');
Pour exécuter
DBMS_CLOUD.LIST_FILES
avec un utilisateur autre qu'ADMIN, vous devez accorder à cet utilisateur les droits de lecture sur le répertoire. Voir Fonction LIST_FILES pour plus d'informations. -
La commande
DROP DIRECTORY
ne supprime pas le répertoire du système de fichiers sous-jacent. Autonomous Database gère le répertoire sous-jacent du système de fichiers; les utilisateurs ne suppriment pas le répertoire du système de fichiers.
Lister le contenu d'un répertoire
Utilisez la fonction DBMS_CLOUD.LIST_FILES
pour lister le contenu d'un répertoire.
Par exemple, pour lister le contenu du répertoire stage
, exécutez l'interrogation suivante :
SELECT * FROM DBMS_CLOUD.LIST_FILES
('STAGE');
Pour exécuter DBMS_CLOUD.LIST_FILES
avec un utilisateur autre qu'ADMIN, vous devez accorder à cet utilisateur les droits de lecture sur le répertoire. Voir Fonction LIST_FILES pour plus d'informations.
Copier des fichiers entre le stockage d'objets en nuage et un répertoire
Utilisez la procédure DBMS_CLOUD.PUT_OBJECT
pour copier un fichier d'un répertoire vers le stockage d'objets en nuage. Utilisez la procédure DBMS_CLOUD.GET_OBJECT
pour copier un fichier du stockage d'objets en nuage vers un répertoire.
Par exemple, pour copier un fichier du stockage d'objets en nuage vers le répertoire stage
, exécutez la commande suivante :
BEGIN
DBMS_CLOUD.GET_OBJECT(
credential_name => 'DEF_CRED_NAME',
object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/cwallet.sso',
directory_name => 'STAGE');
END;
/
Dans cet exemple, object_uri
est un URI Swift d'Oracle Cloud Infrastructure qui spécifie le fichier cwallet.sso
dans le seau mybucket
de la région us-phoenix-1
(idthydc0kinr
est l'espace de noms du stockage d'objets dans lequel réside le seau). Pour plus d'informations sur les formats d'URI pris en charge, voir Formats d'URI du service de stockage d'objets en nuage.
Pour exécuter DBMS_CLOUD.GET_OBJECT
avec un utilisateur autre qu'ADMIN, vous devez accorder à cet utilisateur les droits d'écriture sur le répertoire.
Pour exécuter DBMS_CLOUD.PUT_OBJECT
avec un utilisateur autre qu'ADMIN, vous devez accorder à cet utilisateur les droits de lecture sur le répertoire.
Pour plus d'informations, voir Procédure GET_OBJECT et Procédure PUT_OBJECT.