Le Blog Amazon Web Services

Migration de bases de données Oracle avec une durée d’interruption minimale à l’aide d’AWS DMS

Avez-vous des bases de données Oracle OLTP (Online Transactional Processing) critiques au sein de votre organisation qui ne peuvent pas tolérer d’indisponibilité ? Souhaitez-vous migrer vos bases de données Oracle vers AWS avec une durée d’interruption minimale ou nulle ?

Dans un monde en pleine évolution avec une disponibilité des applications et des bases de données 24 h/24 et 7 j/7, certaines de vos applications ne sont peut-être pas en mesure de tolérer un temps d’arrêt important lors de la migration de leurs bases de données locales vers le Cloud.

Cet article vous montre comment migrer vos bases de données Oracle locales vers Amazon Relational Database Service (RDS) pour Oracle à l’aide d’AWS Database Migration Service (AWS DMS) et de sa fonctionnalité de Change Data Capture (CDC) qui permet la réplication permanente des données sources vers la cible afin de minimiser la durée d’interruption.

Présentation d’AWS Database Migration Service

AWS DMS est un service Cloud qui vous aide à migrer des bases de données vers AWS. Il permet de migrer des bases de données relationnelles, des entrepôts de données, des bases de données NoSQL et d’autres types de bases vers le Cloud AWS. AWS DMS prend en charge les migrations homogènes (vers un même moteur de base de données) et hétérogènes (vers un moteur de base de données différent) pour différentes plates-formes de base de données. Vous pouvez effectuer des migrations ponctuelles et également répliquer les modifications en cours pour synchroniser en permanence les bases de données source et cible. Pour utiliser AWS DMS, au moins l’une des bases de données source ou cible doit résider sur AWS.

Présentation de la solution

Dans cet article, on utilise une instance de base de données Oracle sur Amazon EC2 en tant que base données locale source et une base de données Amazon RDS pour Oracle comme base de données cible. Nous utiliserons également Oracle Data Pump pour exporter et importer les données de la base de données Oracle source vers la base de données Amazon RDS cible et AWS DMS pour répliquer les modifications en CDC.

Nous considérons que vous avez déjà provisionné la base de données Amazon RDS pour Oracle dans votre environnement Cloud AWS en tant que base de données cible.

Le diagramme suivant illustre l’architecture de la solution.

architecture design

La solution nécessite les étapes suivantes :

  • Provisionner une instance de réplication AWS DMS avec des points de terminaison source et cible
  • Exporter le schéma à l’aide d’Oracle Data Pump à partir de la base de données Oracle locale
  • Importer le schéma à l’aide d’Oracle Data Pump dans la base de données Amazon RDS pour Oracle
  • Créer une tâche de réplication AWS DMS utilisant CDC pour effectuer une réplication en direct
  • Valider le schéma de base de données sur la base de données Amazon RDS pour Oracle cible

Prérequis

En fonction de l’application, après avoir déterminé le schéma de base de données Oracle à migrer vers la base de données Amazon RDS pour Oracle, vous devez collecter quelques informations sur le schéma source avant de lancer la migration. Cela comprend la taille du schéma, le nombre total d’objets par type d’objet ainsi que les objets invalides.

Pour utiliser la fonctionnalité CDC d’AWS DMS, vous devez également activer la journalisation au niveau base de données et au niveau table dans la base de données Oracle source.

Une fois que vous avez réalisé ces prérequis, vous pouvez provisionner les instances AWS DMS.

Provisionnement des instances AWS DMS

Vous pouvez utiliser le modèle AWS CloudFormation DMS_Instance.yaml pour provisionner l’instance de réplication AWS DMS et ses points de terminaison source et cible. Pour des raisons de simplicité, les mots de passe de connexion sont visibles en clair dans la console AWS CloudFormation une fois saisis. Il est recommandé d’utiliser AWS Secret Manager ou AWS Systems Manager Parameter Store pour stocker des mots de passe de manière sécurisée dans les modèles AWS CloudFormation.

Pour cela, procédez comme suit :

  1. Sur la console AWS CloudFormation.
  2. Choisissez Créer une pile.
  3. Dans Spécifier un modèle, choisissez Charger un fichier de modèle.
  4. Sélectionnez Choisir un fichier.
  5. Choisissez le fichier DMS_Instance.yaml.
  6. Choisissez Suivant.
  7. Sur la page Spécifier les détails de la pile, modifiez les paramètres prédéfinis selon vos besoins :
  • Pour nom de la pile, entrez un nom pour votre pile.
  • Sous AWS DMS Instance Parameters, entrez les paramètres suivants :
    • DMSInstanceType: choisissez l’instance requise pour l’instance de réplication AWS DMS.
    • DMSStorageSize — Entrez la taille de stockage de l’instance AWS DMS.
  • Sous Source Oracle Database Configuration, entrez les paramètres suivants :
    • SourceOracleEndPointID — Nom du serveur de base de données Oracle source
    • SourceOracleDatabaseName — Nom du service de base de données source ou SID selon le cas
    • SourceOracleUserName — Nom d’utilisateur de la base de données source. La valeur par défaut est system
    • SourceOracleDbPassword — Mot de passe du nom d’utilisateur de base de données source
    • SourceOracleDBPort — Port de base de données source
  • Sous Target RDS for Oracle database configuration, entrez les paramètres suivants :
    • TargetRDSOracleEndPointID — Point de terminaison de la base de données RDS cible
    • TargetRDSOracleDatabaseName — Nom de la base de données RDS cible
    • TargetRDSOracleUserName — Nom d’utilisateur RDS cible
    • TargetRDSOracleDBPassword — Mot de passe RDS cible
    • TargetOracleDBPort — Port de base de données RDS cible
  • Sous VPC, subnet, and security group configuration, entrez les paramètres suivants :
    • VPCID — VPC de l’instance de réplication
    • VPCSecurityGroupID — Groupe de sécurité VPC pour l’instance de réplication
    • DMSSubnet1 — Sous-réseau pour la zone de disponibilité 1
    • DMSSubnet2 — Sous-réseau pour la zone de disponibilité 2
  1. Choisissez Suivant.
  2. Dans la page Configurer les options de pile, entrez les valeurs facultatives pour les balises (tags).
  3. Choisissez Suivant.
  4. Sur la page Vérifier, choisissez Créer une pile.
    Le provisionnement peut prendre entre 5 et 10 minutes.
    Il est terminé lorsque la console AWS CloudFormation Stacks affiche Create Complete.
  5. Sur la console AWS Database Migration Service, choisissez Instances de réplication.
    La capture d’écran ci-dessous montre la page Instances de réplication, que vous pouvez utiliser pour vérifier l’instance de réplication créée.
  6. Dans le menu de gauche, choisissez Points de terminaison.
    La capture d’écran ci-dessous montre la page Points de terminaison, dans laquelle vous pouvez voir à la fois les points de terminaison source et cible.

Une fois que les points de terminaison source et cible sont à l’état Actif, vous devez tester la connectivité. Choisissez Exécuter un test pour chaque point de terminaison pour vous assurer que l’état s’affiche comme successful.

Vous avez ainsi créé des instances de réplication AWS DMS et ses points de terminaison source et cible et effectué le test de connectivité des points de terminaison pour vous assurer qu’ils peuvent établir des connexions avec succès.

Migration du schéma de base de données source vers la base de données cible

Vous pouvez maintenant migrer le schéma de base de données Oracle locale vers la base de données Amazon RDS pour Oracle à l’aide d’Oracle Data Pump. Oracle Data Pump fournit une infrastructure côté serveur permettant un transfert rapide des données et des métadonnées entre les bases de données Oracle. Il est idéal pour les bases de données volumineuses pour lesquels le transfert haute performance des données permet aux administrateurs de bases de données d’économiser beaucoup de temps. Data Pump gère automatiquement plusieurs flux parallèles d’import et export permettant d’atteindre un débit maximal. Dans le cas de transfert d’une volumétrie très importante, des options permettant d’optimiser le temps de transfert et l’utilisation de la bande passante peuvent être envisagées. Cet article décrit différentes options possibles pour le transfert de volumétries importantes depuis vos environnements locaux vers AWS.

Export des données

Lorsque vous répliquez les modifications de données à l’aide d’AWS DMS, vous devez spécifier une heure ou un numéro de changement système (System Change Number : SCN) à partir duquel AWS DMS commence à lire les modifications à partir des journaux de base de données. Il est important de conserver ces journaux disponibles sur le serveur pendant un certain temps afin de s’assurer qu’AWS DMS puisse y accéder.

Lorsque la base de données source est en ligne et activement utilisée par l’application, démarrez l’exportation des données avec Oracle Data Pump à partir de la base de données Oracle source en local. Vous devez également générer le SCN à partir de votre base de données source afin de l’utiliser lors de l’export data pump pour assurer la cohérence des données et dans AWS DMS comme point de départ pour la capture des données à répliquer.

Pour exporter le schéma de base de données, procédez comme suit :

  1. Entrez l’instruction SQL suivante pour générer le SCN courant à partir de votre base de données source :
    SQL> SELECT current_scn FROM v$database;
                
    CURRENT_SCN
    -----------
    7097405
  2. Enregistrez le SCN généré à utiliser lorsque vous exportez les données et pour AWS DMS.
  3. Créez un fichier de paramètres pour exporter le schéma. Voir le contenu du fichier de paramètres :
    # Utilisez le SCN généré à l'étape #1 en paramètre flashback_scn et créez le répertoire de base de données requis si le répertoire DATA_PUMP_DIR par défaut n'est pas utilisé
    
    $ cat export_sample_user.par 
    userid=dms_sample/dms_sample
    directory=DATA_PUMP_DIR
    logfile=export_dms_sample_user.logdumpfile=export_dms_sample_data_%U.dmp
    schemas=DMS_SAMPLE
    flashback_scn=7097405
  4. Exécutez l’export à l’aide de l’utilitaire expdp. Voir le code ci-dessous :
    $ expdp parfile=export_sample_user.par
    Export: Release 12.2.0.1.0 - Production on Wed Oct 2 01:46:05 2019
             Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
             Connected to: Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
    FLASHBACK automatically enabled to preserve database integrity.
    Starting "DMS_SAMPLE"."SYS_EXPORT_SCHEMA_01":  dms_sample/******** parfile=export_sample_user.par 
    .
    .
    .
    .
    Master table "DMS_SAMPLE"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
    ******************************************************************************
    Dump file set for DMS_SAMPLE.SYS_EXPORT_SCHEMA_01 is:
      /u03/app/backup/expdp_dump/export_dms_sample_data_01.dmp
    Job "DMS_SAMPLE"."SYS_EXPORT_SCHEMA_01" successfully completed at Wed Oct 2 01:47:27 2019 elapsed 0 00:01:20

Transfert du fichier dump généré vers l’instance cible

Il existe plusieurs façons de transférer vos fichiers d’export Oracle Data Pump vers votre instance Amazon RDS for Oracle. Vous pouvez transférer vos fichiers à l’aide de l’utilitaire Oracle DBMS_FILE_TRANSFER ou de la fonction d’intégration d’Amazon S3.

Transfert du fichier dump avec DBMS_FILE_TRANSFER

Vous pouvez transférer vos fichiers data pump directement vers l’instance RDS à l’aide de l’utilitaire DBMS_FILE_TRANSFER. Vous devez d’abord créer un lien de base de données entre l’instance de base de données locale et Amazon RDS pour Oracle.

Le code suivant crée un lien de base de données ORARDSDB qui se connecte à l’utilisateur RDS principal de l’instance de base de données cible:

$ sqlplus / as sysdba

SQL> create database link orardsdb connect to admin identified by "xxxxxx" using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = database-1.xxxxxxxx.us-east-1.rds.amazonaws.com)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))';

Database link created.

Testez le lien de base de données pour vous assurer que vous pouvez vous connecter à l’aide de sqlplus. Voir le code suivant :

SQL> select name from v$database@orardsdb;

NAME
---------
ORCL

Pour copier le fichier dump vers la base de données Amazon RDS pour Oracle, vous pouvez utiliser le répertoire DATA_PUMP_DIR par défaut ou créer votre propre répertoire à l’aide du code suivant :

exec rdsadmin.rdsadmin_util.create_directory(p_directory_name => ‘TARGET_PUMP_DIR’);

Le script suivant copie un fichier dump nommé export_dms_sample_data_01.dmp de l’instance source vers une base de données Amazon RDS pour Oracle cible à l’aide du lien de base de données nommé orardsdb.

[oracle@ip-xx-xx-xx-xx ~]$ sqlplus / as sysdba
SQL>
BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object       => 'DATA_PUMP_DIR',
source_file_name              => 'export_dms_sample_data_01.dmp',
destination_directory_object  => 'TARGET_PUMP_DIR’',
destination_file_name         => 'export_dms_sample_data_01.dmp', 
destination_database          => 'orardsdb');
END;
/ 

PL/SQL procedure successfully completed.

Une fois la procédure PL/SQL ci-dessus terminée, vous pouvez lister le fichier dump dans la base de données Amazon RDS pour Oracle directement avec le code suivant :

SQL> select * from table (rdsadmin.rds_file_util.listdir(p_directory => ‘TARGET_PUMP_DIR’));

Transfert du fichier dump avec l’intégration S3

Avec l’intégration S3, vous pouvez transférer vos fichiers dump Oracle directement vers votre instance Amazon RDS pour Oracle. Une fois les données de votre instance de base de données exportées, vous pouvez télécharger vos fichiers data pump dans votre bucket S3, télécharger les fichiers de votre bucket S3 vers l’instance Amazon RDS pour Oracle et effectuer l’import. Vous pouvez également utiliser cette fonction d’intégration pour transférer vos fichiers dump de votre instance Amazon RDS pour Oracle vers votre serveur de base de données local.

L’instance Amazon RDS pour Oracle doit avoir accès à un bucket S3 pour pouvoir fonctionner avec l’intégration S3 d’Amazon RDS pour Oracle et avec S3. Créez une stratégie IAM avec des autorisations GetObject, ListBucket et PutObject. Créez ensuite un rôle IAM et y associez la stratégie définie précédemment.

Pour utiliser l’intégration d’Amazon RDS pour Oracle avec S3, votre instance Amazon RDS pour Oracle doit être associée à un groupe d’options comprenant l’option S3_INTEGRATION.

Pour créer le groupe d’options Amazon RDS, procédez comme suit :

  1. Sur la console Amazon RDS, sous Groupes d’options, choisissez Créer un groupe
  2. Sous Détails du groupe d’options, pour nom, entrez le nom de votre groupe d’options.
    Dans cet article nous avons renseigné rds-oracle12r2-option-group.
  3. Dans Description, entrez une description de votre groupe.
  4. Pour Moteur, choisissez le moteur de la base de données Amazon RDS pour Oracle cible à migrer.
    Dans cet article, nous avons choisi oracle-ee (pour Oracle Entreprise Edition).
  5. Pour Version majeure du moteur, sélectionnez la version du moteur Oracle utilisé.
    Dans cet article, nous avons choisi 12.2.
  6. Choisissez Créer.

Une fois le groupe d’options créé, vous devez lui ajouter l’option S3_Integration. Procédez comme suit :

  1. Sur la console RDS, choisissez Groupe d’options.
  2. Choisissez le groupe que vous avez créé.
  3. Choisissez Ajouter une option.
  4. Pour Nom de l’option, choisissez S3_INTEGRATION.
  5. Pour Version, choisissez 1.0.
  6. Pour Appliquer immédiatement, sélectionnez Oui.
  7. Choisissez Ajouter une option.

Après avoir ajouté S3_Integration au groupe d’options, vous devez modifier votre base de données Amazon RDS pour Oracle cible pour utiliser le nouveau groupe d’options. Procédez comme suit pour ajouter le groupe d’options à votre base de données Amazon RDS pour Oracle existante :

  1. Dans la console AWS RDS, sous Bases de données, choisissez l’instance de base de données que vous souhaitez modifier.
  2. Choisissez Modifier.
    La page Modifier l’instance de base de données s’affiche.
  3. Sous Options de base de données, pour Groupe d’options, sélectionnez le groupe d’options que vous avez créé.
  4. Choisissez Continuer.
  5. Sous Planification des modifications, choisissez Appliquer immédiatement.
  6. Choisissez Modifier l’instance de base de données.

Lorsque la base de données Amazon RDS pour Oracle a prise en compte le nouveau groupe d’options, vous devez associer votre rôle IAM et la fonction S3_Integration à votre instance de base de données. Procédez comme suit :

  1. Sur la console AWS RDS, choisissez votre instance de base de données.
  2. Sous l’onglet Connectivité et sécurité, choisissez Gérer les rôles IAM.
  3. Pour Ajouter un rôle IAM à cette instance, choisissez RDS-S3_Integration_Role (ou le rôle que vous avez créé précédemment).
  4. Pour Fonction, choisissez S3_INTEGRATION.
  5. Choisissez Ajouter un rôle.

Une fois que le rôle IAM et la fonction d’intégration S3 sont associés à votre base de données Amazon RDS pour Oracle, vous pouvez désormais télécharger les fichiers dump de votre instance de base de données Oracle locale vers S3 avec le code suivant :

$ aws s3 cp export_dms_sample_data_01.dmp s3://mydbs3bucket/dmssample/
    
upload: ./export_dms_sample_data_01.dmp to s3:// mydbs3bucket/dmssample//export_dms_sample_data_01.dmp

Après avoir chargé les fichiers dump dans le bucket S3, connectez-vous à votre instance de base de données cible et téléchargez les fichiers data pump de S3 vers le répertoire DATA_PUMP_DIR de votre instance cible. Voir le code suivant :

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name    =>  'mydbs3bucket',
      p_s3_prefix      =>  'dmssample/export_dms_sample_data_01',
      p_directory_name =>  'DATA_PUMP_DIR')
 AS TASK_ID FROM DUAL;  

La requête affiche l’identifiant de la tâche, ici 1572302128132-3676. Vérifiez l’état du fichier que vous avez chargé dans l’instance Amazon RDS pour Oracle à l’aide de la requête SQL suivante :

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1572302364019-3676.log'));

Une fois que la requête SQL ci-dessus indique que le fichier a été téléchargé avec succès, vous pouvez lister le fichier data pump dans la base de données Amazon RDS pour Oracle avec le code suivant :

SELECT * FROM TABLE(RDSADMIN.RDS_FILE_UTIL.LISTDIR(‘DATA_PUMP_DIR’)) order by mtime;

Démarrage de l’import

Une fois le fichier data pump disponible, vous devez créer les rôles, schémas et tablespaces sur la base de données Amazon RDS pour Oracle cible avant de lancer l’import.

Connectez-vous à la base de données Amazon RDS pour Oracle cible avec le compte d’utilisateur principal RDS pour effectuer l’import. Ajoutez une entrée TNS correspondant à la base de données Amazon RDS pour Oracle dans le fichier tnsnames.ora et utilisez le nom de la chaîne de connexion pour effectuer l’import.

Vous pouvez remapper les noms de tablespace et schéma si vous souhaitez importer dans un autre tablespace ou avec un autre nom de schéma.

Démarrez l’import dans Amazon RDS pour Oracle en utilisant le nom de la chaîne de connexion comme indiqué ci-dessous :

$ impdp admin@orardsdb directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_data_01.dmp

Import: Release 12.2.0.1.0 - Production on Wed Oct 2 01:52:01 2019
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
     Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Master table "ADMIN"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "ADMIN"."SYS_IMPORT_FULL_01":  admin/********@orardsdb directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_data_01.dmp 
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/PROCACT_INSTANCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
.
.
.
Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/PACKAGE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Contrôles et validation après l’import

Pour vérifier que l’import s’est terminée correctement, vérifiez le fichier journal d’import afin de détecter une éventuelle erreur. En outre, comparez des détails tels que les objets de base de données source et cible, le nombre de lignes et les objets invalides et recompilez s’il existe des objets invalides.

Une fois l’import terminé avec succès et afin d’éviter l’inconsistance des données, désactivez les déclencheurs et les clés étrangères sur la base de données Amazon RDS pour Oracle cible sur le schéma concerné, afin de préparer la base de données cible pour la réplication AWS DMS.

Création de la tâche de migration CDC dans AWS DMS

Créez la tâche de migration AWS DMS en procédant comme suit :

  1. Sur la console AWS DMS, choisissez Tâche de migration de base de données puis sélectionner Créer une tâche.
  2. Sous Configuration de la tâche, pour Identifiant de tâche, entrez votre identifiant de tâche.
  3. Pour Instance de réplication, choisissez l’instance de réplication DMS que vous avez créée.
  4. Pour Point de terminaison de base de données source, choisissez votre point de terminaison source.
  5. Pour Point de terminaison de base de données cible, choisissez votre base de données Amazon RDS pour Oracle cible.
  6. Pour type de migration, choisissez Répliquer les modifications de données uniquement.
  7. Sous Paramètres de tâche, sélectionnez Spécifier un numéro de séquence de journal.
  8. Pour Numéro de modification système, entrez le SCN de base de données Oracle que vous avez généré à partir de la base de données Oracle source.
  9. Sélectionnez Activer la validation.
  10. Sélectionnez Activer CloudWatch Logs.
    Cela vous permet de valider les données et utiliser les journaux Amazon CloudWatch pour examiner les journaux d’instance de réplication de AWS DMS.
  11. Sous Règles de sélection, choisissez Ajouter une nouvelle règle de sélection puis procédez comme suit :
    • Pour Schéma, choisissez Entrer un schéma.
    • Pour Nom du schéma, renseignez le nom du schéma source, ici DMS_SAMPLE.
    • Pour Nom de la table, saisissez %.
    • Pour Action, choisissez Inclure.
  12. Sous Règles de transformation, choisissez Ajouter une règle de transformation puis procédez comme suit :
    • Pour Cible, choisissez Table.
    • Pour Nom du schéma, choisissez Entrer un schéma.
    • Pour Nom du schéma, renseignez le nom du schéma cible, ici DMS_SAMPLE.
    • Pour Action, choisissez Renommer.
  13. Choisissez Créer une tâche.

Après avoir créé la tâche, celle-ci va répliquer les CDC vers l’instance de base de données Amazon RDS pour Oracle à partir du SCN que vous avez défini dans la partie Point de départ CDC dans AWS DMS. Vous pouvez également vérifier l’état en consultant les journaux CloudWatch. La capture d’écran suivante montre les détails du journal de votre migration.

Validation des données

AWS DMS effectue une validation des données pour confirmer que vos données ont été correctement migrées de la base de données source vers la cible. Vous pouvez consulter la page Statistiques de la table pour déterminer les modifications DML (Data Manipulation Language) qui se sont produites après le démarrage de la tâche AWS DMS. Lors de la validation des données, AWS DMS compare chaque ligne de la source avec sa ligne correspondante sur la cible et vérifie que ces lignes contiennent les mêmes données. Pour ce faire, AWS DMS émet les requêtes appropriées pour récupérer les données.

La capture d’écran suivante montre la page Statistiques de la table et ses différentes entrées.

Vous pouvez également compter et comparer le nombre d’enregistrements dans les bases de données source et cible pour confirmer que les données CDC sont répliquées de la source vers la base de données cible.

Pendant une fenêtre de maintenance planifiée, vous pouvez désactiver toutes les applications pointant vers la base de données source et activer les déclencheurs et les contraintes de clé étrangère à l’aide du code suivant :

-- Exécuter le code ci-dessous afin de géréner la liste des déclencheurs à activer

select 'alter trigger '||owner||'.'||trigger_name|| ' enable;' from dba_triggers where owner='DMS_SAMPLE';
-- Exécuter le code ci-dessous afin de générer la liste des contraintes à activer

select 'alter table '||owner||'.'||table_name||' enable constraint '||constraint_name ||';' from dba_constraints
where owner='DMS_SAMPLE' and constraint_type='R';

Comme DMS ne réplique pas les numéros de séquence incrémentales en CDC à partir de la base de données source, vous devrez générer la dernière valeur de séquence à partir de la source pour chaque séquence puis l’appliquer à la base de données Amazon RDS pour Oracle cible afin d’éviter les incohérences des valeurs de séquence.

Vous pouvez maintenant pointer votre application vers la base de données Amazon RDS pour Oracle cible en modifiant les informations de connexion. Après avoir activé l’application, vous verrez les nouvelles connexions de l’application s’établir sur la base de données Amazon RDS pour Oracle cible. Après avoir confirmé que des connexions n’existent plus sur la base de données source, vous pourrez l’arrêter.

Migration des LOBs

Si votre base de données source contient de gros objets binaires LOB (Large OBjects) et que vous devez les migrer vers la base de données cible, AWS DMS offre les options suivantes :

  • Mode LOB complet : AWS DMS migre tous les LOB de la base de donnée source vers la base de données cible, quelle que soit leur taille. Bien que la migration soit plus lente, l’avantage est que les données ne sont pas tronquées. Pour de meilleures performances, vous devez créer une tâche distincte sur la nouvelle instance de réplication afin de migrer les tables dont les LOB sont supérieurs à quelques mégaoctets.
  • Mode LOB limité : vous spécifiez la taille maximale des données de colonne LOB, ce qui permet à AWS DMS de pré-allouer des ressources et répliquer les LOB en masse. Si la taille des colonnes LOB dépasse la taille spécifiée dans la tâche, AWS DMS tronque les données et émet des avertissements dans le fichier journal d’AWS DMS. Vous pouvez améliorer les performances en utilisant le mode LOB limité si la taille du LOB est comprise dans ses bornes.
  • Mode LOB en ligne : vous pouvez migrer les LOB sans tronquer les données ou ralentir les performances de votre tâche en répliquant les LOB de petite et grande taille. Vous devez tout d’abord spécifier une valeur pour le paramètre InlineLobMaxSize, qui n’est disponible que lorsque le mode LOB complet est sélectionné. La tâche AWS DMS transfère alors les petits LOB en ligne, ce qui est plus efficace. Ensuite, AWS DMS migre les gros LOB en effectuant une recherche à partir de la table source. Cependant, le mode LOB en ligne ne fonctionne que pendant la phase de chargement complet.

Conclusion

Dans cet article, vous avez appris comment migrer une base de données Oracle locale vers une base de données Amazon RDS pour Oracle à l’aide d’Oracle Data Pump et d’AWS DMS avec un temps d’interruption minimale voire nul. Vous pouvez ainsi migrer et répliquer vos bases de données critiques d’une façon fluide vers Amazon RDS à l’aide d’AWS DMS et de sa fonctionnalité CDC.

N’hésitez pas à essayer cette solution et à profiter de tous les avantages qu’apporte l’utilisation d’AWS DMS avec les bases de données Oracle. Pour plus d’informations, consultez Démarrer avec AWS Database Migration Service et Meilleurs pratiques pour AWS Database Migration Service. Pour plus d’informations sur Oracle Database Migration, reportez-vous au guide Migrating Oracle Databases to the AWS Cloud.

Article orginal contribué par Sagar Patel, Jeevith Anumalla, and Sharath Lingareddy, et adapté par Karim Ichallamene, Solutions Architect chez AWS France.