Exporter des données à l'aide d'Oracle Data Pump

Oracle Data Pump permet un déplacement très rapide des données et des métadonnées en masse entre une base de données autonome et d'autres bases de données Oracle.

Oracle recommande d'utiliser la dernière version d'Oracle Data Pump pour exporter des données d'une base de données autonome vers d'autres bases de données Oracle, car elle contient des améliorations et des correctifs pour une meilleure expérience. Téléchargez la dernière version d'Oracle Instant Client et téléchargez l'ensemble d'outils, qui inclut Oracle Data Pump, pour votre plate-forme à partir des téléchargements Oracle Instant Client. Consultez les instructions d'installation sur la page de téléchargement pour connaître les étapes d'installation requises après le téléchargement d'Oracle Instant Client et de l'ensemble d'outils.

Pour déplacer des données d'une base de données autonome vers d'autres bases de données Oracle à l'aide d'Oracle Data Pump, utilisez l'une des options suivantes :
  • Option 1 : Déplacer les données avec l'exportation d'extraction de données vers un répertoire Autonomous Database

    Utilisez Oracle Data Pump pour exporter les données vers un répertoire de votre base de données, puis déplacez les données du répertoire vers le magasin d'objets en nuage. Cette méthode peut être avantageuse lorsque vous voulez déplacer des données depuis votre base de données autonome vers plusieurs bases de données cibles. Au lieu d'exporter les données vers plusieurs magasins d'objets en nuage, vous pouvez créer un jeu de fichiers de vidage une seule fois et l'utiliser pour plusieurs bases de données cibles.

    Pour déplacer des données à partir d'une base de données autonome en les exportant vers un répertoire de votre base de données, procédez de la façon suivante :
    1. Exportez les données vers un répertoire de la base de données autonome et déplacez le jeu de fichiers de vidage du répertoire vers votre magasin d'objets en nuage. Voir Exporter des données à l'aide d'un répertoire de base de données autonome.
    2. Téléchargez les fichiers de vidage à partir du magasin d'objets en nuage, importez les données dans la base de données cible, puis nettoyez le magasin d'objets en nuage. Voir Télécharger les fichiers de vidage, exécuter l'importation de l'extraction de données et nettoyer le magasin d'objets.
  • Option 2 : Déplacer des données avec Data Pump Export vers le magasin d'objets

    Avec cette méthode d'exportation, vous utilisez Oracle Data Pump pour exporter directement des données vers votre magasin d'objets. Cette méthode d'exportation est prise en charge avec le service de stockage d'objets pour Oracle Cloud Infrastructure et le service de stockage d'objets pour Oracle Cloud Infrastructure version classique. Elle évite les frais généraux liés à la création d'un jeu de fichiers de vidage dans un répertoire de votre Autonomous Database, puis au déplacement du jeu de fichiers de vidage vers le magasin d'objets en nuage. Lorsque vous prévoyez de déplacer des données vers une seule base de données cible, cette méthode est plus simple et permet d'accélérer le processus d'exportation.

    Pour déplacer des données à partir d'une base de données autonome en les exportant directement vers votre magasin d'objets, procédez de la façon suivante :
    1. Exportez les données à partir de la base de données autonome directement vers un magasin d'objets en nuage. Voir Exporter des données d'une base de données autonome vers un magasin d'objets directement.
    2. Téléchargez les fichiers de vidage à partir du magasin d'objets en nuage, importez les données dans la base de données cible, puis nettoyez le magasin d'objets en nuage. Voir Télécharger les fichiers de vidage, exécuter l'importation de l'extraction de données et nettoyer le magasin d'objets.

Exporter des données à l'aide d'un répertoire de base de données autonome

Pour exporter des données à l'aide d'un répertoire de base de données autonome, vous devez d'abord créer un jeu de fichiers de vidage contenant les données exportées dans un répertoire de votre base de données, puis charger ces fichiers à partir de votre répertoire de base de données dans le magasin d'objets en nuage.

Utiliser la fonction d'extraction de données pour créer un jeu de fichiers de vidage pour une base de données autonome

  1. Créez un répertoire dans lequel stocker les fichiers de vidage contenant les données exportées. Par exemple :
    CREATE DIRECTORY data_export_dir as 'data_export';
  2. Exécutez Data Pump Export avec le paramètre dumpfile défini, le paramètre filesize (Taille de fichier) réglé à moins de 50G et le paramètre directory (Répertoire). For example, the following shows how to export a schema named SALES in an Autonomous Database named ATPC1 with 64 ECPUs:
    expdp sales/password@ATPC1_high 
    directory=data_export_dir 
    dumpfile=exp%L.dmp 
    parallel=16
    encryption_pwd_prompt=yes
    filesize=1G
    logfile=export.log
    Notes sur les paramètres Data Pump :
    • Dans le cas des ECPU, parallel doit être réglé à 0,25 fois le nombre d'ECPU. Par conséquent, dans l'exemple ci-dessus avec 64 ECPU, parallel est réglé à 0,25 x 64, c'est-à-dire 16 avec expdp.

    • Dans le cas des OCPU, parallel doit être réglé à la même valeur que le nombre d'OCPU. Dans l'exemple ci-dessus avec 16 OCPU, parallel sera réglé à 16, avec expdp.

    • Si, lors de l'exportation avec expdp, vous utilisez le paramètre encryption_pwd_prompt=yes, vous devez utiliser encryption_pwd_prompt=yes lors de l'importation et entrer le même mot de passe à l'invite impdp pour déchiffrer les fichiers de vidage (n'oubliez pas le mot de passe fourni lors de l'exportation). La longueur maximale du mot de passe de chiffrement est de 128 octets.

    • Le paramètre dumpfile prend en charge les caractères génériques %L et %l en plus des caractères génériques %U et %u existants. Par exemple, dumpfile=export%L.dmp.

      Utilisez le caractère générique %L ou %l pour les exportations à partir d'Oracle Database version 12.2 ou ultérieure. Ce caractère générique étend le nom du fichier dump en un entier incrémenté de 3 chiffres à 10 chiffres et de largeur variable, commençant à 100 et se terminant à 2147483646.

    Pour une performance d'exportation optimale, utilisez le service de base de données HIGH pour votre connexion d'exportation et définissez le paramètre PARALLEL sur le nombre d'UC dans votre base de données. Pour plus d'informations sur le nom du service de base de données à connecter pour exécuter la fonction d'exportation d'Oracle Data Pump, voir Noms de service de base de données prédéfinis pour les bases de données autonomes.

    Une fois l'exportation terminée, vous pouvez voir les fichiers de vidage générés en exécutant une requête semblable à celle qui suit :
    SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_EXPORT_DIR');
    Par exemple, la sortie de cette interrogation affiche les fichiers de vidage générés et le fichier journal d'exportation :
    
    OBJECT_NAME                 BYTES  CHECKSUM                   CREATED          LAST_MODIFIED  
    ---------------------- ---------- ----–---- –------------------------–----- --------------------
    exp01.dmp                   12288               12-NOV-19 06.10.47.0 PM GMT       12-NOV-19...
    exp02.dmp                    8192               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
    exp03.dmp                 1171456               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
    exp04.dmp                  348160               12-NOV-19 06.10.48.0 PM GMT       12-NOV-19...
    export.log                   1663               12-NOV-19 06.10.50.0 PM GMT       12-NOV-19...
    

Notes :

  • Pour effectuer une exportation complète ou pour exporter des objets appartenant à d'autres utilisateurs, vous devez disposer du rôle DATAPUMP_CLOUD_EXP.

  • L'API que vous utilisez pour déplacer les fichiers de vidage vers votre stockage d'objets prend en charge des tailles de fichier allant jusqu'à 50 Go. Assurez-vous donc de ne pas spécifier de tailles plus élevées avec l'argument filesize.

  • Pour plus d'informations, voir Exportation Oracle Data Pump dans Utilitaires Oracle Database 19c ou Utilitaires Oracle Database 23ai.

Déplacer le jeu de fichiers de vidage depuis la base de données autonome vers le stockage d'objets en nuage

  1. Connectez-vous à la base de données autonome.

  2. Stockez vos données d'identification du service de stockage d'objets en nuage à l'aide de la procédure DBMS_CREDENTIAL.CREATE_CREDENTIAL. Par exemple :
    BEGIN
      DBMS_CREDENTIAL.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@oracle.com',
        password => 'password'
      );
    END;
    /
    Les valeurs que vous indiquez pour username et password dépendent du service de stockage d'objets en nuage que vous utilisez :
    • Oracle Cloud Infrastructure Object Storage : username est votre nom d'utilisateur Oracle Cloud Infrastructure et password est votre jeton d'authentification Oracle Cloud Infrastructure. Voir Utilisation de jetons d'authentification.

    • Service de stockage d'objets Oracle Cloud Infrastructure Object Storage Classic : username est votre nom d'utilisateur Oracle Cloud Infrastructure version classique et password est votre mot de passe Oracle Cloud Infrastructure version classique.

      Cette opération stocke les données d'identification dans la base de données dans un format chiffré. Vous pouvez utiliser n'importe quel nom pour les données d'identification. Notez que cette étape n'est requise qu'une seule fois, sauf si les données d'identification du magasin d'objets changent. Une fois que vous avez stocké les données d'identification, vous pouvez utiliser le même nom pour tous les chargements de données.

  3. Déplacez les fichiers de vidage d'Autonomous Database vers votre magasin d'objets en nuage en appelant DBMS_CLOUD.PUT_OBJECT.

    Par exemple :
    BEGIN
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp01.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp01.dmp');
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp02.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp02.dmp');
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp03.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp03.dmp');
       DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
         object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/exp04.dmp',
         directory_name => 'DATA_EXPORT_DIR',
         file_name => 'exp04.dmp');
    END;
    /

    Voir Procédure PUT_OBJECT pour plus d'informations sur PUT_OBJECT.

Exporter des données d'une base de données autonome vers un magasin d'objets directement

Montre comment utiliser Oracle Data Pump pour exporter des données depuis une base de données autonome directement vers un magasin d'objets en nuage.

  1. Connectez-vous à la base de données autonome.
  2. Stockez vos données d'identification du service de stockage d'objets en nuage à l'aide de la procédure DBMS_CREDENTIAL.CREATE_CREDENTIAL. Par exemple :
    BEGIN
      DBMS_CREDENTIAL.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
               username => 'adb_user@oracle.com',
        password => 'password'
        );
    END;
    /
    Les valeurs que vous indiquez pour username et password dépendent du service de stockage d'objets en nuage que vous utilisez :
    • Stockage d'objets Oracle Cloud Infrastructure : username est votre nom d'utilisateur Oracle Cloud Infrastructure et password est votre jeton d'authentification Oracle Cloud Infrastructure. Voir Utilisation de jetons d'authentification.
    • Service de stockage d'objets Oracle Cloud Infrastructure version classique : username est votre nom d'utilisateur Oracle Cloud Infrastructure version classique et password est votre mot de passe Oracle Cloud Infrastructure version classique.

    Cette opération stocke les données d'identification dans la base de données dans un format chiffré. Vous pouvez utiliser n'importe quel nom pour les données d'identification. Notez que cette étape n'est requise qu'une seule fois, sauf si les données d'identification du magasin d'objets changent. Une fois que vous avez stocké les données d'identification, vous pouvez utiliser le même nom pour tous les chargements de données.

  3. En tant qu'utilisateur ADMIN, définissez les données d'identification que vous avez définies à l'étape ci-dessus en tant que données d'identification par défaut pour votre base de données autonome.
    Par exemple :
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'DEF_CRED_NAME';
  4. Exécutez Data Pump Export avec le paramètre dumpfile réglé à l'URL d'un seau existant dans le stockage d'objets en nuage (se terminant par un nom de fichier ou un nom de fichier avec une variable de substitution, par exemple exp%U.dmp).
    • Oracle Data Pump version 19.9 ou ultérieure :
      Réglez le paramètre credential au nom des données d'identification que vous avez créées à l'étape 2. Par exemple :
      expdp admin/password@ADBD_high \
      SCHEMAS=SOE3 \
      filesize=5GB \
      credential=DEF_CRED_NAME \
      dumpfile=https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/adbdpreview1/mybucket/export%L.dmp \
      parallel=16 \
      encryption_pwd_prompt=yes \
      logfile=export.log \
      directory=data_pump_dir \
      EXCLUDE=statistics,index
      Dans cet exemple, dumpfile est un URI Swift d'Oracle Cloud Infrastructure qui spécifie tous les fichiers dont le nom correspond à export<number>.dmp dans le seau mybucket de la région us-ashburn-1. (adbdpreview1 est l'espace de noms du stockage d'objets dans lequel réside le seau.)
    • Version d'Oracle Data Pump antérieure à 19.9 :
      Commencez la valeur du paramètre dumpfile par le mot clé default_credential et un signe deux-points. Par exemple :
      expdp admin/password@ADBD_high \
      SCHEMAS=SOE3 \
      filesize=5GB \
      dumpfile=DEF_CRED_NAME:https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/adbdpreview1/mybucket/export%L.dmp \ 
      parallel=16 \
      encryption_pwd_prompt=yes \
      logfile=export.log \
      directory=data_pump_dir \
      EXCLUDE=statistics,index 
      Dans cet exemple, le mot clé default_credential du paramètre dumpfile est requis.
    Notes relatives aux paramètres d'Oracle Data Pump :
    • Par défaut, Oracle Data Pump Export compresse uniquement les métadonnées avant de les écrire dans le jeu de fichiers de vidage. Vous pouvez régler le paramètre compression à ALL pour compresser les métadonnées et les données avant d'écrire dans le jeu de fichiers de vidage. Pour plus de détails, voir COMPRESSION dans Utilitaires Oracle Database 19c ou Utilitaires Oracle Database 23ai.

    • Le paramètre dumpfile prend en charge les caractères génériques %L et %l en plus des caractères génériques %U et %u existants. Par exemple, dumpfile=export%L.dmp.

      Utilisez le caractère générique %L ou %l pour les exportations à partir d'Oracle Database version 12.2 ou ultérieure. Ce caractère générique étend le nom du fichier dump en un entier incrémenté de 3 chiffres à 10 chiffres et de largeur variable, commençant à 100 et se terminant à 2147483646.

      Pour plus d'informations, voir Paramètres disponibles en mode de ligne de commande d'exportation de l'extraction de données dans Utilitaires 19c de la base de données Oracle ou Utilitaires Oracle Data base 23ai.

    • Pour une performance d'exportation optimale, utilisez le service de base de données high pour votre connexion d'exportation et réglez le paramètre parallel à 0,25 fois le nombre d'ECPU ou le nombre d'OCPU dans votre base de données Autonomous Database. Pour plus d'informations sur le nom du service de base de données à connecter pour exécuter la fonction d'exportation d'Oracle Data Pump, voir Noms de service de base de données prédéfinis pour les bases de données autonomes.

    • Pour connaître le format d'URL du fichier de vidage pour les différents services de stockage d'objets en nuage, voir Formats d'URI du service de stockage d'objets en nuage.

    Pour plus d'informations sur les objets non autorisés dans les bases de données autonomes, voir Limitations liées à l'utilisation des commandes SQL.

  5. Validez les résultats.
    Oracle Data Pump divise chaque partie du fichier de vidage en fragments plus petits pour accélérer les chargements. La console du service de stockage d'objets pour Oracle Cloud Infrastructure affiche plusieurs fichiers pour chaque partie de fichier de vidage que vous exportez. La taille des fichiers de vidage réels affichée est de zéro (0) et celle des fragments associés est de 10 Mo ou moins. Par exemple :
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa

    Note :

    En téléchargeant les fichiers de vidage à zéro octet à partir de la console Oracle Cloud Infrastructure ou à l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure, vous n'obtiendrez pas les fichiers de vidage complets. Pour télécharger les fichiers de vidage complets à partir du magasin d'objets, utilisez un outil qui prend en charge Swift, tel que curl, et fournissez votre nom de connexion d'utilisateur et votre jeton d'authentification Swift. Par exemple :
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/export01.dmp

Télécharger les fichiers de vidage, exécuter l'importation de l'extraction de données et nettoyer le stockage d'objets

Si nécessaire, téléchargez les fichiers de vidage à partir du magasin d'objets en nuage et utilisez la fonction d'importation d'Oracle Data Pump pour importer le jeu de fichiers de vidage dans la base de données cible. Effectuez ensuite tout nettoyage nécessaire.

  1. Téléchargez les fichiers de vidage à partir du magasin d'objets en nuage.

    Note :

    Cette étape n'est pas nécessaire si vous importez les données dans une autre Autonomous Database.
    Si vous exportez directement vers un magasin d'objets à l'aide d'Oracle Data Pump, comme indiqué dans Exporter des données d'une base de données autonome vers un magasin d'objets directement, la taille affichée des fichiers de vidage du magasin d'objets est de 0. Oracle Data Pump divise chaque partie du fichier de vidage en fragments plus petits pour accélérer les chargements. La console du service de stockage d'objets pour Oracle Cloud Infrastructure affiche plusieurs fichiers pour chaque partie de fichier de vidage que vous exportez. La taille des fichiers de vidage réels affichée est de zéro (0) et celle des fragments associés est de 10 Mo ou moins. Par exemple :
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    En téléchargeant les fichiers de vidage à zéro octet à partir de la console Oracle Cloud Infrastructure ou à l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure, vous n'obtiendrez pas les fichiers de vidage complets. Pour télécharger les fichiers de vidage complets à partir du magasin d'objets, utilisez un outil qui prend en charge Swift, tel que curl, et fournissez votre nom de connexion d'utilisateur et votre jeton d'authentification Swift. Par exemple :
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/exp01.dmp

    La commande cURL ne prend pas en charge les caractères génériques ni les caractères de substitution dans son URL. Vous devez utiliser plusieurs commandes cURL pour télécharger le jeu de fichiers de vidage à partir du magasin d'objets. Vous pouvez également utiliser un script qui prend en charge les caractères de substitution pour télécharger tous les fichiers de vidage de votre magasin d'objets à l'aide d'une seule commande. Pour obtenir un exemple, voir Procédure : Télécharger tous les fichiers d'une tache d'exportation vers le magasin d'objets dans une base de données autonome à l'aide de cURL.

  2. Exécutez la fonction d'importation d'Oracle Data Pump pour importer le jeu de fichiers de vidage dans la base de données cible.

    Note :

    Si vous importez les données dans une autre base de données autonome, voir Charger des données à l'aide d'Oracle Data Pump.

    Dans le cas des fichiers exportés directement vers le magasin d'objets à l'aide d'Oracle Data Pump, comme indiqué dans le montre Exporter des données d'une base de données autonome vers un magasin d'objets directement, si vous importez un fichier à l'aide des procédures DBMS_CLOUD qui prennent en charge le paramètre format avec la valeur type 'datapump', vous n'avez qu'à fournir le nom du fichier principal. Les procédures qui prennent en charge le type de format 'datapump' détectent et téléchargent automatiquement les fragments.

  3. Effectuer les tâches de nettoyage après l'importation. Si vous avez terminé l'importation des fichiers de vidage dans les bases de données cibles, supprimez le seau contenant les données ou supprimez les fichiers de vidage du seau du magasin d'objets en nuage, puis supprimez les fichiers de vidage de l'emplacement où vous les avez téléchargés pour exécuter la fonction d'importation d'Oracle Data Pump.

Pour des informations détaillées, voir Paramètres disponibles en mode de ligne de commande d'importation Oracle Data Pump dans Utilitaires 19c d'Oracle Database ou Utilitaires Oracle Database 23ai.