Attacher un stockage de fichiers externe à une base de données autonome sur une infrastructure Exadata dédiée

Vous pouvez attacher un stockage de fichiers externe déployé dans Oracle Cloud Infrastructure ou sur place à votre Autonomous Database, à condition que la base de données et le système de fichiers se trouvent dans le même réseau privé. Autonomous Database sur une infrastructure Exadata dédiée prend en charge NFSv4, par défaut.

Cela vous permet de charger des données à partir du stockage de fichiers OCI dans votre réseau en nuage virtuel (VCN) ou dans tout autre système de fichiers réseau dans des centres de données sur place.

La prise en charge du stockage de fichiers externe vous permet d'effectuer les opérations suivantes :
  • Connectez-vous à une instance Autonomous Database à partir d'une application existante et utilisez le système de fichiers pour charger et décharger des données.
  • Analyser des données provenant de différentes sources dans une base de données Autonomous Database.
  • Accès sécurisé aux données d'une base de données Autonomous Database à partir des systèmes de fichiers d'un centre de données sur place ou de réseaux en nuage virtuels privés.

Exigences relatives au stockage de fichiers externe

Pour accéder aux données d'une base de données Autonomous Database à partir du système de fichiers dans :
  • Centre de données sur place : Configurez FastConnect ou un RPV site à site pour vous connecter au centre de données sur place. Pour plus d'informations, voir FastConnect et RPV site à site.

  • Oracle Cloud Infrastructure
    • Créer des règles de sécurité de réseau en nuage virtuel (VCN) pour l'accès au service de stockage de fichiers pour OCI (FSS) : Pour pouvoir monter un stockage de fichiers, vous devez configurer des règles de sécurité pour autoriser le trafic vers la carte VNIC de la cible de montage à l'aide de protocoles et de ports spécifiques. Les règles de sécurité autorisent le trafic des éléments suivants :
      • Protocole utilitaire rpcbind ONC RPC (Open Network Computing Remote Procedure Call)
      • Protocole NFS (Network File System)
      • Protocole NFS (MOUNT)
      • Protocole NLM (Network Lock Manager)

      Pour plus de détails, voir Configuration de règles de sécurité de réseau VCN pour le service de stockage de fichiers.

    • Créer un système de fichiers dans le service FSS pour OCI : Créez un système de fichiers à l'aide de la console OCI. Lors de la configuration des détails de la cible de montage pour le système de fichiers, sélectionnez le VCN et le sous-réseau privé du VCN dans lequel votre base de données est déployée, et indiquez un nom d'hôte pour générer automatiquement un nom de domaine complet. Voir Création de systèmes de fichiers pour plus d'informations.
    • Obtenir le nom de domaine complet pour la cible de montage : Consultez les détails de la cible de montage de votre système de fichiers à partir de la console OCI, comme décrit sous Pour voir les détails d'une cible de montage afin d'obtenir son nom de domaine complet.

Joindre un système de fichiers externe

Utilisez DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM pour attacher un système de fichiers à un répertoire dans Autonomous Database.

Note :

La procédure DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM peut uniquement attacher un service de stockage de fichiers privé aux bases de données qui se trouvent sur des points d'extrémité privés.
  1. Créez un répertoire ou utilisez un répertoire existant pour attacher le système de fichiers externe dans Autonomous Database. Vous devez disposer du privilège WRITE sur l'objet de répertoire de votre instance Autonomous Database pour attacher un système de fichiers à un emplacement de répertoire dans la base de données.

    Par exemple, la commande suivante crée le répertoire de base de données nommé FSS_DIR et le répertoire du système de fichiers fss :
    CREATE DIRECTORY FSS_DIR AS ‘fss’;

    Voir Créer un répertoire pour plus d'informations.

  2. Exécutez DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM pour attacher un système de fichiers à un répertoire dans votre base de données Autonomous Database. Pour exécuter cette procédure, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur DBMS_CLOUD_ADMIN.

    • Par défaut, DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM utilise NFSv3. Toutefois, vous pouvez choisir d'utiliser explicitement le paramètre params et spécifier nfs_version avec la valeur 3 pour spécifier NFSv3.

      BEGIN
      DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (
          file_system_name      => 'FSS',
          file_system_location  => 'myhost.sub000445.myvcn.oraclevcn.com:/results',
          directory_name        => 'FSS_DIR',  
          description           => 'Source FSS for sales data'                                   
      );END;                                                                          
      /
    • Pour utiliser NFSv4, incluez le paramètre params avec DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM et spécifiez nfs_version avec la valeur 4 pour spécifier NFSv4.

      BEGIN
        DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (
          file_system_name => 'FSS',
          file_system_location => 'myhost.sub000445.myvcn.oraclevcn.com:/results',
          directory_name => 'FSS_DIR',
          description => 'Source FSS for sales data',
          params => JSON_OBJECT('nfs_version' value 4)
        );
      END;
      /

    Cet exemple associe le système de fichiers réseau spécifié dans le paramètre file_system_name à Autonomous Database.

    Le paramètre file_system_location spécifie l'emplacement du système de fichiers. La valeur que vous fournissez avec file_system_location est constituée d'un nom de domaine complet et d'un chemin d'accès au fichier sous la forme : FQDN:file_path. Par exemple :

      • FQDN : myhost.sub000445.myvcn.oraclevcn.com
      • Chemin du fichier : /results

    Le paramètre directory_name spécifie le nom du répertoire dans Autonomous Database où vous voulez attacher le système de fichiers. Il s'agit du répertoire que vous avez créé à l'étape 1 ou d'un autre répertoire que vous avez créé précédemment.

    Le paramètre description spécifie la description de la tâche.

Notes sur l'utilisation de DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM :
  • Le service de stockage de fichiers pour Oracle Cloud Infrastructure utilise la version 3 de NFS pour le partage. Voir Aperçu du service de stockage de fichiers pour plus d'informations.

  • Si vous l'associez à des systèmes de stockage de fichiers non Oracle Cloud Infrastructure, la procédure prend en charge NFSv3 et NFSv4.
  • Si vous avez un serveur NFS attaché qui utilise NFSv3 et que la version NFS est mise à jour à NFSv4 dans le serveur NFS, vous devez exécuter DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM, puis DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (à l'aide du paramètre params avec nfs_version réglé à 4. Cette opération associe NFS au protocole de mise en correspondance afin qu'Autonomous Database puisse accéder au serveur NFSv4. Sans le détachement, puis le rattachement, le serveur NFS sera inaccessible et vous verrez peut-être une erreur telle que : "Protocol not supported".

Voir Procédure ATTACH_FILE_SYSTEM pour plus d'informations.

Interrogation DBA_CLOUD_FILE_SYSTEMS

Après avoir attaché un système de fichiers, vous pouvez interroger la vue DBA_CLOUD_FILE_SYSTEMS pour extraire les informations sur le système de fichiers joint.

Par exemple :
SELECT file_system_name, file_system_location, directory_path                      
   FROM dba_cloud_file_systems
   WHERE file_system_name = 'FSS';

Cette interrogation retourne des détails pour le nom du système de fichiers FSS. Pour plus d'informations, voir DBMS_CLOUD_FILE_SYSTEMS View.

Avec un système de fichiers joint, vous pouvez lire et écrire dans les fichiers d'un système de fichiers joint à l'aide de toute API PL/SQL qui accepte un nom de répertoire. Par exemple, vous pouvez utiliser l'une des méthodes suivantes pour utiliser un répertoire FSS attaché :

  • Ensemble UTL_FILE.

  • utilitaires d'exportation et d'importation Data Pump.

  • API DBMS_CLOUD qui fonctionnent avec des répertoires tels que DBMS_CLOUD.LIST_FILES et DBMS_CLOUD.PUT_OBJECT.

Exemple illustrant l'écriture d'un fichier dans un système de fichiers joint à l'aide de UTL_FILE :
DECLARE
  l_file         UTL_FILE.FILE_TYPE;
  l_location     VARCHAR2(100) := 'FSS_DIR';
  l_filename     VARCHAR2(100) := 'test.csv';
BEGIN
  -- Open the file.
  l_file := UTL_FILE.FOPEN(l_location, l_filename, 'w');
   
  UTL_FILE.PUT(l_file, 'Scott, male, 1000');
 
  -- Close the file.
  UTL_FILE.FCLOSE(l_file);
END;
/
Exemple montrant une lecture d'un fichier dans un système de fichiers joint à l'aide de UTL_FILE :
DECLARE
  l_file         UTL_FILE.FILE_TYPE;
  l_location     VARCHAR2(100) := 'FSS_DIR';
  l_filename     VARCHAR2(100) := 'test.csv';
  l_text         VARCHAR2(32767);
BEGIN
  -- Open the file.
  l_file := UTL_FILE.FOPEN(l_location, l_filename, 'r');
 
  UTL_FILE.GET_LINE(l_file, l_text, 32767);
 
  -- Close the file.
  UTL_FILE.FCLOSE(l_file);
END;
/
Exemple montrant des fichiers de liste sur un système de fichiers joint à l'aide de DBMS_CLOUD.LIST_FILES :
SELECT object_name FROM DBMS_CLOUD.LIST_FILES('FSS_DIR');

DBMS_CLOUD_FILE_SYSTEMS Voir

La vue DBA_CLOUD_FILE_SYSTEMS répertorie les informations sur le système de fichiers externe attaché à un emplacement de répertoire dans la base de données.
Colonne Type de données Description
FILE_SYSTEM_NAME VARCHAR2(128) Nom du système de fichiers
FILE_SYSTEM_LOCATION VARCHAR2(4000) Emplacement du système de fichiers
DIRECTORY_NAME VARCHAR2(128) Nom du répertoire joint
DIRECTORY_PATH VARCHAR2(4000) Chemin du répertoire attaché
NFS_VERSION NUMBER La version NFS
DESCRIPTION VARCHAR2(4000) Valeur fournie pour le paramètre de description lorsque vous exécutez DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM
CREATION_TIME TIMESTAMP(6) WITH TIME ZONE Horodatage de création
UPDATE_TIME TIMESTAMP(6) WITH TIME ZONE Mettre à jour l'heure

Détacher le système de fichiers externe

Utilisez la procédure DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM pour détacher un système de fichiers d'un répertoire dans Autonomous Database.

Note :

La procédure DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM ne peut détacher un service de stockage de fichiers privé que des bases de données situées sur des points d'extrémité privés.

Vous devez disposer du privilège WRITE sur l'objet de répertoire pour détacher un système de fichiers d'un emplacement de répertoire.

Exécutez la procédure DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM pour détacher un système de fichiers d'un emplacement de répertoire dans Autonomous Database. Pour exécuter cette procédure, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur DBMS_CLOUD_ADMIN.
BEGIN
  DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM (
    file_system_name      => 'FSS'                                       
  );END;                                                                          
/    

Cet exemple détache le système de fichiers réseau spécifié dans le paramètre file_system_name d'Autonomous Database. Vous devez fournir une valeur pour ce paramètre. Les informations sur ce système de fichiers sont supprimées de la vue DBA_CLOUD_FILE_SYSTEMS.

Voir Procédure DETACH_FILE_SYSTEM pour plus d'informations.