Migrez une base de données Oracle sur site vers Amazon RDS pour Oracle en utilisant directement Oracle Data Pump Import via un lien de base de données - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Migrez une base de données Oracle sur site vers Amazon RDS pour Oracle en utilisant directement Oracle Data Pump Import via un lien de base de données

Créée par Rizwan Wangde () AWS

Environnement : Production

Source : base de données Oracle locale

Cible : Amazon RDS pour Oracle

Type R : Replateforme

Charge de travail : Oracle

Technologies : migration ; bases de données

AWSservices : AWS DMS ; AWS Direct Connect ; Amazon RDS

De nombreux modèles couvrent la migration de bases de données Oracle sur site vers Amazon RDS pour Oracle à l'aide d'Oracle Data Pump, un utilitaire Oracle natif qui constitue le moyen préféré pour migrer de grandes charges de travail Oracle. Ces modèles impliquent généralement l'exportation de schémas ou de tables d'application dans des fichiers de vidage, le transfert des fichiers de vidage vers un répertoire de base de données sur Amazon RDS pour Oracle, puis l'importation des schémas d'application et des données à partir des fichiers de vidage.

Avec cette approche, une migration peut prendre plus de temps en fonction de la taille des données et du temps nécessaire pour transférer les fichiers de vidage vers l'RDSinstance Amazon. En outre, les fichiers de vidage se trouvent sur le volume Amazon Elastic Block Store (AmazonEBS) de l'RDSinstance Amazon, qui doit être suffisamment grand pour contenir la base de données et les fichiers de vidage. Lorsque les fichiers de vidage sont supprimés après l'importation, l'espace vide ne peut pas être récupéré. Vous continuez donc à payer pour l'espace inutilisé.

Ce modèle atténue ces problèmes en effectuant une importation directe sur l'RDSinstance Amazon à l'aide d'Oracle Data Pump API (DBMS_DATAPUMP) sur un lien de base de données. Le modèle lance un pipeline d'exportation et d'importation simultané entre les bases de données source et cible. Ce modèle ne nécessite pas de dimensionner un EBS volume pour les fichiers de vidage car aucun fichier de vidage n'est créé ou stocké sur le volume. Cette approche permet d'économiser le coût mensuel de l'espace disque inutilisé.

Prérequis

  • Un compte Amazon Web Services (AWS) actif.

  • Cloud privé virtuel (VPC) configuré avec des sous-réseaux privés répartis sur au moins deux zones de disponibilité, afin de fournir l'infrastructure réseau pour l'RDSinstance Amazon.

  • Une base de données Oracle dans un centre de données sur site.

  • Une instance Amazon RDS Oracle existante dans une seule zone de disponibilité. L'utilisation d'une seule zone de disponibilité améliore les performances d'écriture lors de la migration. Un déploiement multi-AZ peut être activé 24 à 48 heures avant le passage au relais.

  • AWSDirect Connect (recommandé pour les bases de données de grande taille).

  • Les règles de connectivité réseau et de pare-feu sur site sont configurées pour autoriser une connexion entrante entre l'RDSinstance Amazon et la base de données Oracle sur site.

Limites

  • La limite de taille de base de données sur Amazon RDS pour Oracle est de 64 TiB (en décembre 2022).

Versions du produit

  • Base de données source : Oracle Database version 10g version 1 et versions ultérieures.

  • Base de données cible : pour obtenir la dernière liste des versions et éditions prises en charge sur AmazonRDS, consultez Amazon RDS pour Oracle dans la AWS documentation.

Pile technologique source

  • Base de données Oracle autogérée sur site ou dans le cloud

Pile technologique cible

  • Amazon RDS pour Oracle

Architecture cible

Le schéma suivant montre l'architecture permettant de migrer d'une base de données Oracle sur site vers Amazon RDS for Oracle dans un environnement mono-AZ. Les flèches indiquent le flux de données dans l'architecture. Le schéma ne montre pas quel composant initie la connexion.

Migration complète pour une base de données Oracle sur site.
  1. L'instance Amazon RDS pour Oracle se connecte à la base de données Oracle source sur site pour effectuer une migration complète via le lien de base de données.

  2. AWSDMSse connecte à la base de données Oracle source sur site pour effectuer une réplication continue à l'aide de la capture des données de modification (CDC).

  3. CDCles modifications sont appliquées à la base de données Amazon RDS pour Oracle.

AWSservices

  • AWSDatabase Migration Service (AWSDMS) vous aide à migrer des banques de données vers le AWS cloud ou entre des combinaisons de configurations cloud et sur site. Ce modèle utilise CDC et le paramètre Répliquer les données change uniquement.

  • AWSDirect Connect relie votre réseau interne à un emplacement Direct Connect via un câble Ethernet à fibre optique standard. Grâce à cette connexion, vous pouvez créer des interfaces virtuelles directement vers les AWS services publics tout en contournant les fournisseurs de services Internet sur votre chemin réseau.

  • Amazon Relational Database Service (RDSAmazon) pour Oracle vous aide à configurer, exploiter et dimensionner une base de données relationnelle Oracle dans AWS le cloud.

Autres outils

  • Oracle Data Pump vous aide à déplacer des données et des métadonnées d'une base de données à une autre à grande vitesse.

  • Les outils clients tels qu'Oracle Instant Client ou SQLDeveloper sont utilisés pour se connecter et exécuter SQL des requêtes sur la base de données.

Bien que AWSDirect Connect utilise des connexions réseau privées dédiées entre le réseau localAWS, envisagez les options suivantes pour renforcer la sécurité et le chiffrement des données en transit :

TâcheDescriptionCompétences requises

Configurez la connectivité réseau entre la base de données cible et la base de données source.

Configurez le réseau et le pare-feu sur site pour autoriser la connexion entrante entre l'RDSinstance Amazon cible et la base de données Oracle source sur site.

Administrateur réseau, ingénieur en sécurité

Créez un utilisateur de base de données doté des privilèges appropriés.

Créez un utilisateur de base de données dans la base de données Oracle source locale avec les privilèges nécessaires pour migrer les données entre la source et la cible à l'aide d'Oracle Data Pump.

GRANT CONNECT to <migration_user>; GRANT DATAPUMP_EXP_FULL_DATABASE to <migration_user>; GRANT SELECT ANY TABLE to <migration_user>;
DBA

Préparez la base de données source locale pour la AWS DMS CDC migration.

(Facultatif) Préparez la base de données Oracle source sur site pour la AWS DMS CDC migration une fois le chargement complet d'Oracle Data Pump terminé :

  1. Configurez les privilèges supplémentaires requis pour la gestion FLASHBACK lors de la migration d'Oracle Data Pump.

    GRANT FLASHBACK ANY TABLE to <migration_user>; GRANT FLASHBACK ARCHIVE ADMINISTER to <migration_user>;
  2. Pour configurer les privilèges de compte utilisateur requis sur une source Oracle autogérée pour AWSDMS, consultez la AWSDMSdocumentation.

  3. Pour préparer une base de données source autogérée Oracle en vue de CDC son utilisation AWSDMS, consultez la AWSDMSdocumentation.

DBA

Installez et configurez SQL Developer.

Installez et configurez SQLDeveloper pour connecter et exécuter SQL des requêtes sur les bases de données source et cible.

DBA, Ingénieur en migration

Générez un script pour créer les tablespaces.

Utilisez l'exemple de SQL requête suivant pour générer le script dans la base de données source.

SELECT 'CREATE TABLESPACE ' tablespace_name ' DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE UNLIMITED;' from dba_tablespaces where tablespace_name not in ('SYSTEM', 'SYSAUX','TEMP','UNDOTBS1') order by 1;

Le script sera appliqué à la base de données cible.

DBA

Générez un script pour créer des utilisateurs, des profils, des rôles et des privilèges.

Pour générer un script permettant de créer les utilisateurs, les profils, les rôles et les privilèges de la base de données, utilisez les scripts du document de support Oracle How to Extract DDL for User including Privileges and Roles Using dbms_metadata.get_ddl (Doc ID 2739952.1) (compte Oracle requis).

Le script sera appliqué à la base de données cible.

DBA
TâcheDescriptionCompétences requises

Créez un lien de base de données vers la base de données source et vérifiez la connectivité.

Pour créer un lien de base de données vers la base de données source locale, vous pouvez utiliser l'exemple de commande suivant.

CREATE DATABASE LINK link2src CONNECT TO <migration_user_account> IDENTIFIED BY <password> USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>) (PORT=<listener port>))(CONNECT_DATA=(SID=<remote SID>)))';

Pour vérifier la connectivité, exécutez la SQL commande suivante.

select * from dual@link2src;

La connectivité est réussie si la réponse l'estX.

DBA

Exécutez les scripts pour préparer l'instance cible.

Exécutez les scripts générés précédemment pour préparer l'instance Amazon RDS pour Oracle cible :

  1. Espaces de table

  2. Profils

  3. Rôles

Cela permet de garantir que la migration d'Oracle Data Pump peut créer les schémas et leurs objets.

DBA, Ingénieur en migration
TâcheDescriptionCompétences requises

Migrez les schémas requis.

Pour migrer les schémas requis de la base de données source sur site vers l'RDSinstance Amazon cible, utilisez le code de la section Informations supplémentaires :

  • Pour migrer un schéma unique, exécutez le code 1 dans la section Informations supplémentaires.

  • Pour migrer plusieurs schémas, exécutez le code 2 dans la section Informations supplémentaires.

Pour optimiser les performances de la migration, vous pouvez ajuster le nombre de processus parallèles en exécutant la commande suivante.

DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4);
DBA

Collectez des statistiques de schéma pour améliorer les performances.

La commande Gather Schema Statistics renvoie les statistiques de l'optimiseur de requêtes Oracle collectées pour les objets de base de données. À l'aide de ces informations, l'optimiseur peut sélectionner le meilleur plan d'exécution pour toute requête portant sur ces objets.

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => '<schema_name>');
DBA
TâcheDescriptionCompétences requises

Capturez SCN la base de données Oracle locale source.

Capturez le numéro de modification du système (SCN) sur la base de données Oracle locale source. Vous utiliserez le SCN pour l'importation à chargement complet et comme point de départ pour la CDC réplication.

Pour générer le courant dans la SCN base de données source, exécutez l'SQLinstruction suivante.

SELECT current_scn FROM V$DATABASE;
DBA

Effectuez la migration complète des schémas.

Pour migrer les schémas requis (FULL LOAD) de la base de données source sur site vers l'RDSinstance Amazon cible, procédez comme suit :

  • Pour migrer un schéma unique, exécutez le code 3 depuis la section Informations supplémentaires.

  • Pour migrer plusieurs schémas, exécutez le code 4 dans la section Informations supplémentaires.

Dans le code, remplacez-le <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE> par celui SCN que vous avez capturé à partir de la base de données source.

DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>);

Pour optimiser les performances de la migration, vous pouvez ajuster le nombre de processus parallèles.

DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4);
DBA

Désactivez les déclencheurs dans les schémas migrés.

Avant de commencer la tâche AWS DMS CDC -only, désactivez-la TRIGGERS sous les schémas migrés.

DBA

Collectez des statistiques de schéma pour améliorer les performances.

La commande Gather Schema Statistics renvoie les statistiques de l'optimiseur de requêtes Oracle collectées pour les objets de base de données. À l'aide de ces informations, l'optimiseur peut sélectionner le meilleur plan d'exécution pour toute requête portant sur ces objets.

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => '<schema_name>');
DBA

AWSDMSÀ utiliser pour effectuer une réplication continue de la source vers la cible.

AWSDMSÀ utiliser pour effectuer une réplication continue de la base de données Oracle source vers l'instance Amazon RDS pour Oracle cible.

Pour plus d'informations, consultez la section Création de tâches pour une réplication continue à l'aide AWS DMS et le billet de blog Comment travailler avec le CDC support natif dans AWS DMS.

DBA, Ingénieur en migration
TâcheDescriptionCompétences requises

Activez le mode Multi-AZ sur l'instance 48 heures avant le passage à une autre instance.

S'il s'agit d'une instance de production, nous recommandons d'activer le déploiement multi-AZ sur l'RDSinstance Amazon afin de bénéficier des avantages de la haute disponibilité (HA) et de la reprise après sinistre (DR).

DBA, Ingénieur en migration

Arrêtez la tâche AWS DMS CDC -only (si elle CDC a été activée).

  1. Assurez-vous que la latence source et la latence cible sur les CloudWatch métriques Amazon de la AWS DMS tâche indiquent 0 seconde.

  2. Arrêtez la tâche AWS DMS CDC réservée aux utilisateurs.

DBA

Activez les déclencheurs.

Activez celle TRIGGERS que vous avez désactivée avant la création de la CDC tâche.

DBA

AWS

Documentation Oracle

Code 1 : migration à chargement complet uniquement, schéma d'application unique

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

Code 2 : migration à chargement complet uniquement, schémas d'applications multiples

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

Code 3 : migration à chargement complet avant une tâche CDC uniquement, schéma d'application unique

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

Code 4 : migration à chargement complet avant une tâche CDC uniquement, plusieurs schémas d'application

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN (operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE (handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

Scénario dans lequel une approche de migration mixte peut mieux fonctionner

Dans de rares cas où la base de données source contient des tables comportant des millions de lignes et des LOBSEGMENT colonnes de très grande taille, ce schéma ralentira la migration. Oracle effectue la migration LOBSEGMENTs sur le lien réseau un par un. Il extrait une seule ligne (ainsi que les données de LOB colonne) de la table source et insère la ligne dans la table cible, en répétant le processus jusqu'à ce que toutes les lignes soient migrées. Oracle Data Pump via le lien de base de données ne prend pas en charge les mécanismes de chargement groupé ou de chargement par chemin direct pourLOBSEGMENTs.

Dans ce cas, nous recommandons ce qui suit :

  • Ignorez les tables identifiées lors de la migration d'Oracle Data Pump en ajoutant le filtre de métadonnées suivant.

    dbms_datapump.metadata_filter(handle =>h1, name=>'NAME_EXPR', value => 'NOT IN (''TABLE_1'',''TABLE_2'')');
  • Utilisez une AWS DMS tâche (migration à charge complète, avec CDC réplication si nécessaire) pour migrer les tables identifiées. AWSDMSextraira plusieurs lignes de la base de données Oracle source et les insérera par lots dans l'RDSinstance Amazon cible, ce qui améliore les performances.