Gestion des répertoires
Autonomous Database on Dedicated Exadata Infrastructure permet de créer des répertoires dans votre base de données, dans lesquels vous pouvez stocker des fichiers, comme dans un système de fichiers de système d'exploitation. Cette capacité de stockage de fichiers est particulièrement utile lors de l'export et de l'import de données.
Rubriques connexes
Suppression (DROP) d'un répertoire
Utilisez la commande DROP DIRECTORY
de base de données 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. Si vous voulez supprimer le répertoire et les fichiers qu'il contient, utilisez d'abord la procédure DBMS_CLOUD.DELETE_FILE
pour supprimer les fichiers. Pour plus d'informations, reportez-vous à Procédure DELETE_FILE.
Pour supprimer un répertoire, vous devez disposer du privilège système DROP ANY DIRECTORY
. Le privilège système DROP ANY DIRECTORY
est accordé à l'utilisateur ADMIN. L'utilisateur ADMIN peut accorder le privilège système DROP ANY DIRECTORY
à d'autres utilisateurs.
Pour plus d'informations, reportez-vous à DROP DIRECTORY dans Référence du langage SQL Oracle Database 19c ou Référence du langage SQL Oracle Database 23ai.
Remarques :
-
Si vous voulez simplement supprimer le répertoire sans enlever ses fichiers, après la suppression du répertoire, vous pouvez visualiser tous les fichiers dans le système de fichiers, y compris ceux qui se trouvaient dans le répertoire supprimé, comme suit :
CREATE OR REPLACE DIRECTORY ROOT_DIR AS '';
Répertoriez 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 lui accorder des privilèges de lecture sur le répertoire. Pour plus d'informations, reportez-vous à Fonction LIST_FILES. -
La commande
DROP DIRECTORY
n'enlève pas le répertoire de système de fichiers sous-jacent. Autonomous Database gère le répertoire de système de fichiers sous-jacent. Les utilisateurs n'enlèvent pas le répertoire de système de fichiers.
Liste du contenu d'un répertoire
Utilisez la fonction DBMS_CLOUD.LIST_FILES
pour répertorier le contenu d'un répertoire.
Par exemple, pour répertorier le contenu du répertoire stage
, exécutez la requête suivante :
SELECT * FROM DBMS_CLOUD.LIST_FILES
('STAGE');
Pour exécuter DBMS_CLOUD.LIST_FILES
avec un utilisateur autre qu'ADMIN, vous devez lui accorder des privilèges de lecture sur le répertoire. Pour plus d'informations, reportez-vous à Fonction LIST_FILES.
Copie de fichiers entre le stockage d'objet cloud et un répertoire
Utilisez la procédure DBMS_CLOUD.PUT_OBJECT
pour copier un fichier d'un répertoire vers le stockage d'objet cloud. Utilisez la procédure DBMS_CLOUD.GET_OBJECT
pour copier un fichier du stockage d'objet cloud vers un répertoire.
Par exemple, pour copier un fichier du stockage d'objet cloud 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 Oracle Cloud Infrastructure qui indique le fichier cwallet.sso
dans le bucket mybucket
de la région us-phoenix-1
. (idthydc0kinr
est l'espace de noms du stockage d'objet dans lequel le bucket réside.) Pour plus d'informations sur les formats d'URI pris en charge, reportez-vous à Formats d'URI de stockage d'objet cloud.
Pour exécuter DBMS_CLOUD.GET_OBJECT
avec un utilisateur autre qu'ADMIN, vous devez accorder à cet utilisateur des privilèges d'écriture sur le répertoire.
Pour exécuter DBMS_CLOUD.PUT_OBJECT
avec un utilisateur autre qu'ADMIN, vous devez accorder à cet utilisateur des privilèges de lecture sur le répertoire.
Pour plus d'informations, reportez-vous à Procédure GET_OBJECT et à Procédure PUT_OBJECT.