Accès au réseau à partir d'Autonomous Database

Vous pouvez attacher un système de fichiers réseau à un emplacement de répertoire dans votre instance Autonomous Database.

Cela vous permet de charger des données à partir d'Oracle Cloud Infrastructure File Storage dans votre réseau cloud virtuel (VCN) ou de tout autre système de fichiers réseau dans des centres de données sur site. Selon la version du système de fichiers réseau auquel vous souhaitez accéder, NFSv3 et NFSv4 sont pris en charge.

La prise en charge du système de fichiers réseau vous permet d'effectuer les opérations suivantes :

  • Connectez-vous à une instance Autonomous Database à partir d'une application héritée et utilisez le système de fichiers pour charger et décharger des données.

  • Analysez les données de différentes sources dans une instance Autonomous Database.

  • Sécurisez l'accès aux données dans une instance Autonomous Database à partir des systèmes de fichiers dans un centre de données sur site ou des réseaux cloud virtuels privés.

Rubriques

Attachement d'un système de fichiers réseau à Autonomous Database

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

Avec un système de fichiers joint, vous pouvez charger des données à partir de l'un des éléments suivants :

Remarque

La procédure DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM peut uniquement attacher un service File Storage privé lorsque l'instance Autonomous Database se trouve sur une adresse privée.

Pour accéder aux données d'une instance Autonomous Database à partir des systèmes de fichiers d'un centre de données sur site, vous devez configurer FastConnect ou un VPN site à site pour vous connecter au centre de données sur site. Pour plus d'informations, reportez-vous à FastConnect et à VPN site à site.

  1. Créez un répertoire ou utilisez un répertoire existant pour attacher un système de fichiers réseau à votre instance Autonomous Database. Vous devez disposer du privilège WRITE sur l'objet de répertoire sur 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 de système de fichiers fss :

    CREATE DIRECTORY FSS_DIR AS 'fss';

    Pour plus d'informations, reportez-vous à Création d'un répertoire dans Autonomous Database.

  2. Exécutez DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM pour attacher un système de fichiers à un répertoire dans votre instance 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 :

      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 NFS for sales data'
      );
      END;
      /

      Vous pouvez éventuellement utiliser le paramètre params et indiquer nfs_version avec la valeur 3 pour indiquer NFSv3.

    • Pour utiliser NFSv4, incluez le paramètre params avec DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM et indiquez nfs_version avec la valeur 4 pour indiquer 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 NFS for sales data',
          params                => JSON_OBJECT('nfs_version' value 4)
      );
      END;
      /

    Ces exemples attachent le système de fichiers réseau indiqué dans le paramètre file_system_name à Autonomous Database.

    Le paramètre file_system_location indique l'emplacement du système de fichiers. La valeur que vous fournissez avec file_system_location se compose d'un nom de domaine qualifié complet et d'un chemin de fichier au format : FQDN:file_path.

    Par exemple :

    • FQDN : myhost.sub000445.myvcn.oraclevcn.com

      Pour Oracle Cloud Infrastructure File Storage, définissez le nom de domaine qualifié complet dans Afficher les options avancées lorsque vous créez un système de fichiers. Pour plus d'informations, reportez-vous à Création de systèmes de fichiers.

    • Chemin du fichier : /results

    Le paramètre directory_name indique le nom du répertoire dans l'instance Autonomous Database à laquelle 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 indique la description de la tâche.

    Le paramètre params est une valeur JSON qui indique un attribut supplémentaire nfs_version, dont la valeur peut être 3 ou 4 (NFSv3 ou NFSv4).

Une fois que vous avez joint un système de fichiers, vous pouvez interroger la vue DBA_CLOUD_FILE_SYSTEMS pour extraire des informations sur le système de fichiers joint.

Exemple :

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

Cette requête renvoie les détails du nom du système de fichiers FSS.

Pour plus d'informations, voir DBA_CLOUD_FILE_SYSTEMS Vue.

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

  • Package UTL_FILE.

  • Les utilitaires Data Pump Export et Data Pump Import.

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

Exemple montrant l'écriture d'un fichier sur un système de fichiers attaché à 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 illustrant la lecture d'un fichier sur un système de fichiers attaché à 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');

Remarques relatives à l'utilisation de DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM :

  • Oracle Cloud Infrastructure File Storage utilise NFSv3 pour le partage. Pour plus d'informations, reportez-vous à Présentation de File Storage.

  • Si vous l'attachez à des systèmes autres qu'Oracle Cloud Infrastructure File Storage, la procédure prend en charge NFSv3 et NFSv4.

  • Si vous disposez d'un serveur NFS attaché qui utilise NFSv3 et que la version NFS est mise à jour vers 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 défini sur 4). Cette opération attache NFS avec le protocole correspondant afin qu'Autonomous Database puisse accéder au serveur NFSv4. Sans détachement puis rattachement, le serveur NFS sera inaccessible et vous risquez de voir une erreur telle que : "Protocol not supported".

Détachement d'un système de fichiers réseau à partir d'Autonomous Database

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

Remarque

La procédure DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM peut uniquement détacher un service File Storage privé des bases de données situées sur des adresses privées.

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 votre instance 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.

Exemple :

BEGIN
   DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM (
    file_system_name      => 'FSS'
  );
END;
/

Cet exemple détache le système de fichiers réseau indiqué dans le paramètre file_system_name de l'instance Autonomous Database. Vous devez indiquer une valeur pour ce paramètre.

Les informations relatives à ce système de fichiers sont supprimées de la vue DBA_CLOUD_FILE_SYSTEMS.

Exemple : configuration d'un serveur NFSv4 sur Oracle Cloud Compute

Fournit un exemple de configuration d'un serveur NSFv4 à utiliser avec Autonomous Database.

  1. Configurez une adresse privée pour l'instance Autonomous Database.

    Pour plus d'informations, reportez-vous à Configuration de l'accès réseau avec des adresses privées.

    Les règles entrantes et sortantes suivantes doivent être définies pour la liste de sécurité de votre VCN afin qu'Autonomous Database et le serveur NFSv4 puissent se parler

    • Entrée avec conservation de statut à partir de tous les ports du bloc CIDR source vers le port TCP 2049.
    • Sortie avec conservation de statut à partir de tous les ports TCP vers le port 2049 dans le bloc CIDR de destination.
  2. Configurez le serveur NFS sur une machine virtuelle Oracle Cloud avec Oracle Linux 8 dans le sous-réseau privé, qui peut se connecter à l'instance Autonomous Database.
    Compute Instance Image: Oracle-Linux-8.8-2023.09.26-0
    $ sudo su -
    $ mkdir /exports
    $ chown nobody /exports
    $ chgrp nobody /exports
     
    # If the VM is using Linux 7, "data" directory may need having the privilege 777 so that ADB can have access to NFS.
    uname -a
    chmod 777 /exports/data
     
    $ mkdir /exports/data
    $ chown nobody /exports/data
    $ chgrp nobody /exports/data
     
    # Either the private IP or the private FQDN can be used in "/etc/exports".
    # Both can be found in the information of the autonomous database on the OCI console.
    $ tee -a /etc/exports <<'EOF'
      /exports/data *(rw,insecure)
      /exports/data example.adb.us-phoenix-1.oraclecloud.com(rw,insecure)
      EOF
     
    $ systemctl start nfs-server
    $ systemctl enable nfs-server
     
    # Configure the firewall to allow NFS connections. "public" is the default zone on Oracle Cloud VM.
    $ firewall-cmd --get-default-zone
    public
     
    $ firewall-cmd --zone=public --add-service=nfs
    $ firewall-cmd --permanent --zone=public --add-service=nfs
     
    $ firewall-cmd --reload
     
    # Display a list of the exported file systems.
    $ showmount -e
     
    # Displays all of the current clients and all of the file systems that the clients have mounted.
    $ showmount -a
  3. Montez le système de fichiers NFSv4 avec DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM.

    Pour plus d'informations, reportez-vous à Attachement d'un système de fichiers réseau à Autonomous Database.

Vue DBA_CLOUD_FILE_SYSTEMS

La vue DBA_CLOUD_FILE_SYSTEMS répertorie des informations sur le système de fichiers réseau 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 de répertoire joint

DIRECTORY_PATH VARCHAR2(4000)

Chemin de répertoire attaché

NFS_VERSION NUMBER Version NFS.
DESCRIPTION VARCHAR2(4000)

Valeur fournie pour le paramètre de description lors de l'exécution de 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'horodatage