Migrez les données d'une base de données Oracle autonome vers une instance AnalyticDB for PostgreSQL afin de construire un entrepôt de données en temps réel.
Prérequis
La base de données Oracle autonome doit être en version 9i, 10g, 11g, 12c, 18c ou 19c.
La base de données Oracle autonome doit fonctionner en mode ARCHIVELOG avec une période de rétention des journaux d'archive appropriée, et les journaux archivés doivent être accessibles. Pour plus d'informations, consultez la documentation ARCHIVELOG.
La journalisation supplémentaire (Supplemental Logging), y compris
supplemental_log_data_pketsupplemental_log_data_ui, doit être activée sur la base de données Oracle autonome. Pour plus d'informations, consultez la documentation Supplemental Logging.Pour créer l'instance AnalyticDB for PostgreSQL de destination, consultez les rubriques Créer une instance AnalyticDB for PostgreSQL.
Facturation
|
Type de migration |
Frais de configuration de la tâche |
Frais de trafic Internet |
|
Migration du schéma et migration complète des données |
Gratuit. |
DTS facture les frais de trafic Internet lorsque la Access Method de la base de données de destination est définie sur Public IP Address. Présentation de la facturation. |
|
Migration incrémentielle des données |
Payant. Présentation de la facturation. |
Notes
Lors de la migration complète des données, DTS consomme des ressources de lecture et d'écriture sur les bases de données source et de destination, ce qui peut augmenter la charge de la base de données. Évaluez l'impact sur les performances avant de démarrer la migration et effectuez celle-ci pendant les heures creuses.
Si une tâche de migration de données échoue, DTS la reprend automatiquement. Avant de basculer votre charge de travail vers la base de données de destination, arrêtez ou libérez la tâche pour éviter qu'elle ne reprenne automatiquement et n'écrase les données dans la base de données de destination.
DTS prend uniquement en charge la migration au niveau des tables. Les tables optimisées pour l'ajout (AO) ne peuvent pas être utilisées comme tables de destination.
Lors de l'utilisation du mappage de colonnes, si vous ne migrez pas toutes les colonnes ou si les schémas de table diffèrent, les données présentes uniquement dans la table source sont perdues.
-
Si la base de données Oracle autonome est déployée dans une architecture Real Application Cluster (RAC) et connectée à DTS via un cloud privé virtuel (VPC) Alibaba Cloud, vous devez connecter l'adresse IP Single Client Access Name (SCAN) du RAC Oracle et l'adresse IP virtuelle (VIP) de chaque nœud au VPC et configurer les routes. Ces paramètres garantissent le bon fonctionnement de votre tâche DTS. Pour plus d'informations, consultez la rubrique Connecter un centre de données à DTS via VPN Gateway.
ImportantLorsque vous configurez la base de données Oracle source dans la console DTS, vous pouvez spécifier l'adresse IP SCAN du RAC Oracle comme endpoint ou adresse IP de la base de données.
Types de migration
|
Type |
Description |
|
Migration du schéma |
DTS migre les schémas des objets — notamment les tables, index, contraintes, fonctions, séquences et vues — de la base de données source vers la base de données de destination. Avertissement
|
|
Migration complète des données |
DTS migre toutes les données des objets sélectionnés de la source vers la base de données de destination. Remarque
N'effectuez pas d'opérations DDL sur les objets à migrer tant que la migration du schéma et la migration complète des données ne sont pas terminées. Sinon, la migration pourrait échouer. |
|
Migration incrémentielle des données |
Une fois la migration complète des données terminée, DTS interroge et capture les journaux redo de la base de données Oracle autonome, puis migre les modifications incrémentielles des données vers la base de données de destination en temps réel. Pendant la migration incrémentielle des données, DTS prend en charge les instructions SQL suivantes :
La migration incrémentielle des données minimise les temps d'arrêt de vos applications autonomes pendant la migration. |
Autorisations des comptes de base de données
|
Base de données |
Migration du schéma |
Migration complète des données |
Migration incrémentielle des données |
|
Base de données Oracle autonome |
Autorisations de propriétaire de schéma |
Autorisations de propriétaire de schéma |
DBA |
|
AnalyticDB for PostgreSQL |
Autorisations de lecture et d'écriture sur la base de données de destination |
Autorisations de lecture et d'écriture sur la base de données de destination |
Autorisations de lecture et d'écriture sur la base de données de destination |
Pour créer un compte de base de données et accorder des autorisations, consultez les rubriques suivantes :
Pour une base de données Oracle autonome, consultez les documentations CREATE USER et GRANT.
Pour AnalyticDB for PostgreSQL, consultez la rubrique Configurer un compte.
Si vous devez effectuer une migration incrémentielle des données mais ne pouvez pas accorder d'autorisations DBA, vous pouvez attribuer des autorisations plus granulaires au compte de base de données.
Journaux Oracle et autorisations fines
Pour migrer des données incrémentielles sans autorisations DBA, activez le journal des archives et le journal supplémentaire, puis accordez des autorisations fines au compte de base de données Oracle.
-
Activez la journalisation des archives et la journalisation supplémentaire.
Type
Procédure
Journalisation des archives
Exécutez les instructions suivantes pour activer la journalisation des archives :
shutdown immediate; startup mount; alter database archivelog; alter database open; archive log list;Journalisation supplémentaire
Activez la journalisation supplémentaire au niveau de la base de données ou de la table selon vos besoins métier :
RemarqueVous pouvez activer la journalisation supplémentaire au niveau de la base de données pour garantir la stabilité des tâches Data Transmission Service (DTS). Vous pouvez activer la journalisation supplémentaire au niveau de la table pour réduire l'utilisation du disque de la base de données Oracle source.
-
Activer la journalisation supplémentaire au niveau de la base de données
-
Exécutez l'instruction suivante pour activer la journalisation supplémentaire minimale :
alter database add supplemental log data; -
Exécutez l'instruction suivante pour activer la journalisation supplémentaire des clés primaires et uniques au niveau de la base de données :
alter database add supplemental log data (primary key,unique index) columns;
-
-
Activer la journalisation supplémentaire au niveau de la table
-
Exécutez l'instruction suivante pour activer la journalisation supplémentaire minimale :
alter database add supplemental log data; -
Activez la journalisation supplémentaire au niveau de la table en utilisant l'une des méthodes suivantes :
-
Activer la journalisation supplémentaire de la clé primaire au niveau de la table
alter table table_name add supplemental log data (primary key) columns; -
Activer la journalisation supplémentaire au niveau de la table pour toutes les colonnes
alter table tb_name add supplemental log data (all) columns;
-
-
Force logging
Exécutez les instructions suivantes pour activer le force logging :
alter database force logging; -
-
Accordez des autorisations fines au compte de base de données Oracle.
Oracle 9i à 11g
# Create a database account (for example, rdsdt_dtsacct) and grant permissions. create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct; grant create session to rdsdt_dtsacct; grant connect to rdsdt_dtsacct; grant resource to rdsdt_dtsacct; grant execute on sys.dbms_logmnr to rdsdt_dtsacct; grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct; grant select on all_objects to rdsdt_dtsacct; grant select on all_tab_cols to rdsdt_dtsacct; grant select on dba_registry to rdsdt_dtsacct; grant select any table to rdsdt_dtsacct; grant select any transaction to rdsdt_dtsacct; -- v$log privileges grant select on v_$log to rdsdt_dtsacct; -- v$logfile privileges grant select on v_$logfile to rdsdt_dtsacct; -- v$archived_log privileges grant select on v_$archived_log to rdsdt_dtsacct; -- v$parameter privileges grant select on v_$parameter to rdsdt_dtsacct; -- v$database privileges grant select on v_$database to rdsdt_dtsacct; -- v$active_instances privileges grant select on v_$active_instances to rdsdt_dtsacct; -- v$instance privileges grant select on v_$instance to rdsdt_dtsacct; -- v$logmnr_contents privileges grant select on v_$logmnr_contents to rdsdt_dtsacct; -- system tables grant select on sys.USER$ to rdsdt_dtsacct; grant select on SYS.OBJ$ to rdsdt_dtsacct; grant select on SYS.COL$ to rdsdt_dtsacct; grant select on SYS.IND$ to rdsdt_dtsacct; grant select on SYS.ICOL$ to rdsdt_dtsacct; grant select on SYS.CDEF$ to rdsdt_dtsacct; grant select on SYS.CCOL$ to rdsdt_dtsacct; grant select on SYS.TABPART$ to rdsdt_dtsacct; grant select on SYS.TABSUBPART$ to rdsdt_dtsacct; grant select on SYS.TABCOMPART$ to rdsdt_dtsacct; grant select_catalog_role TO rdsdt_dtsacct;Oracle 12c à 19c (multitenant)
# Switch to the PDB, then create a database account (for example, rdsdt_dtsacct) and grant permissions. ALTER SESSION SET container = ORCLPDB1; create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct; grant create session to rdsdt_dtsacct; grant connect to rdsdt_dtsacct; grant resource to rdsdt_dtsacct; grant execute on sys.dbms_logmnr to rdsdt_dtsacct; grant select on all_objects to rdsdt_dtsacct; grant select on all_tab_cols to rdsdt_dtsacct; grant select on dba_registry to rdsdt_dtsacct; grant select any table to rdsdt_dtsacct; grant select any transaction to rdsdt_dtsacct; -- v$log privileges grant select on v_$log to rdsdt_dtsacct; -- v$logfile privileges grant select on v_$logfile to rdsdt_dtsacct; -- v$archived_log privileges grant select on v_$archived_log to rdsdt_dtsacct; -- v$parameter privileges grant select on v_$parameter to rdsdt_dtsacct; -- v$database privileges grant select on v_$database to rdsdt_dtsacct; -- v$active_instances privileges grant select on v_$active_instances to rdsdt_dtsacct; -- v$instance privileges grant select on v_$instance to rdsdt_dtsacct; -- v$logmnr_contents privileges grant select on v_$logmnr_contents to rdsdt_dtsacct; grant select on sys.USER$ to rdsdt_dtsacct; grant select on SYS.OBJ$ to rdsdt_dtsacct; grant select on SYS.COL$ to rdsdt_dtsacct; grant select on SYS.IND$ to rdsdt_dtsacct; grant select on SYS.ICOL$ to rdsdt_dtsacct; grant select on SYS.CDEF$ to rdsdt_dtsacct; grant select on SYS.CCOL$ to rdsdt_dtsacct; grant select on SYS.TABPART$ to rdsdt_dtsacct; grant select on SYS.TABSUBPART$ to rdsdt_dtsacct; grant select on SYS.TABCOMPART$ to rdsdt_dtsacct; -- V$PDBS privileges grant select on V_$PDBS to rdsdt_dtsacct; grant select on dba_objects to rdsdt_dtsacct; grant select on DBA_TAB_COMMENTS to rdsdt_dtsacct; grant select on dba_tab_cols to rdsdt_dtsacct; grant select_catalog_role TO rdsdt_dtsacct; # Switch to CDB$ROOT to create a database account and grant permissions. ALTER SESSION SET container = CDB$ROOT; # Set the required session parameter, then create a database account (e.g., rdsdt_dtsacct) and grant permissions. alter session set "_ORACLE_SCRIPT"=true; create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct; grant create session to rdsdt_dtsacct; grant connect to rdsdt_dtsacct; grant select on v_$logmnr_contents to rdsdt_dtsacct; grant LOGMINING TO rdsdt_dtsacct; grant EXECUTE_CATALOG_ROLE to rdsdt_dtsacct; grant execute on sys.dbms_logmnr to rdsdt_dtsacct;Oracle 12c vers 19c (non-multitenant)
# Create a database account (for example, rdsdt_dtsacct) and grant permissions. create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct; grant create session to rdsdt_dtsacct; grant connect to rdsdt_dtsacct; grant resource to rdsdt_dtsacct; grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct; grant select on all_objects to rdsdt_dtsacct; grant select on all_tab_cols to rdsdt_dtsacct; grant select on dba_registry to rdsdt_dtsacct; grant select any table to rdsdt_dtsacct; grant select any transaction to rdsdt_dtsacct; grant select on v$database to rdsdt_dtsacct; grant select on dba_objects to rdsdt_dtsacct; grant select on DBA_TAB_COMMENTS to rdsdt_dtsacct; grant select on dba_tab_cols to rdsdt_dtsacct; -- v$log privileges grant select on v_$log to rdsdt_dtsacct; -- v$logfile privileges grant select on v_$logfile to rdsdt_dtsacct; -- v$archived_log privileges grant select on v_$archived_log to rdsdt_dtsacct; -- v$parameter privileges grant select on v_$parameter to rdsdt_dtsacct; -- v$database privileges grant select on v_$database to rdsdt_dtsacct; -- v$active_instances privileges grant select on v_$active_instances to rdsdt_dtsacct; -- v$instance privileges grant select on v_$instance to rdsdt_dtsacct; -- v$logmnr_contents privileges grant select on v_$logmnr_contents to rdsdt_dtsacct; grant select on sys.USER$ to rdsdt_dtsacct; grant select on SYS.OBJ$ to rdsdt_dtsacct; grant select on SYS.COL$ to rdsdt_dtsacct; grant select on SYS.IND$ to rdsdt_dtsacct; grant select on SYS.ICOL$ to rdsdt_dtsacct; grant select on SYS.CDEF$ to rdsdt_dtsacct; grant select on SYS.CCOL$ to rdsdt_dtsacct; grant select on SYS.TABPART$ to rdsdt_dtsacct; grant select on SYS.TABSUBPART$ to rdsdt_dtsacct; grant select on SYS.TABCOMPART$ to rdsdt_dtsacct; grant LOGMINING TO rdsdt_dtsacct; grant EXECUTE_CATALOG_ROLE to rdsdt_dtsacct; grant execute on sys.dbms_logmnr to rdsdt_dtsacct; grant select_catalog_role TO rdsdt_dtsacct;RemarquePour plus d'informations sur l'architecture multitenant d'Oracle, consultez Oracle Multitenant.
Procédure
-
Connectez-vous à la console DTS.
RemarqueSi vous êtes automatiquement redirigé vers la console Data Management (DMS), cliquez sur l'icône
en bas à droite, puis sur
pour revenir à la console DTS classique. Dans le volet de navigation de gauche, cliquez sur Data Migration.
-
En haut de la page Migration Tasks, sélectionnez la région où se trouve l'instance de destination.
Dans le coin supérieur droit de la page, cliquez sur Create Data Migration Task.
-
Configurez les paramètres de connexion des bases de données source et de destination.
Catégorie
Paramètre
Description
N/A
Task Name
DTS génère automatiquement un nom de tâche. Pour faciliter l'identification, nous vous recommandons de spécifier un nom descriptif. Le nom n'a pas besoin d'être unique.
Base de données source
Instance Type
Sélectionnez une option en fonction de l'emplacement de déploiement de la base de données source. Cette rubrique utilise l'option self-managed database on an ECS instance à titre d'exemple.
RemarqueSi votre base de données auto-gérée utilise un autre type d'instance, des préparations supplémentaires sont requises. Pour plus d'informations, consultez Présentation des préparatifs.
Region
Sélectionnez la région où se trouve l'instance ECS hébergeant la base de données Oracle.
ECS Instance ID
Sélectionnez l'ID de l'instance ECS hébergeant la base de données Oracle auto-gérée.
Database Type
Sélectionnez Oracle.
Port
Saisissez le port de service de la base de données Oracle auto-gérée. Valeur par défaut : 1521.
Instance Type
-
Non-RAC Instance : Si vous sélectionnez cette option, vous devez également spécifier le SID.
-
RAC Instance : Si vous sélectionnez cette option, vous devez également spécifier le Service Name.
Dans cet exemple, l'option Non-RAC Instance est sélectionnée.
SID
Saisissez le SID de la base de données Oracle auto-gérée.
Database Account
Saisissez le compte de base de données de la base de données Oracle auto-gérée. Pour plus d'informations sur les autorisations requises, consultez Autorisations requises pour les comptes de base de données.
Database Password
Saisissez le mot de passe du compte de base de données.
RemarqueAprès avoir saisi les informations de la base de données source, vous pouvez cliquer sur Test Connectivity à côté de Database Password pour vérifier que les informations sont correctes. Si les informations sont correctes, le message Passed s'affiche. Si le message Failed s'affiche, cliquez sur Diagnose à côté du message Failed et ajustez les informations de la base de données source selon les instructions.
Base de données de destination
Instance Type
Sélectionnez AnalyticDB for PostgreSQL.
Region
Sélectionnez la région où se trouve l'instance AnalyticDB for PostgreSQL de destination.
Instance ID
Sélectionnez l'ID de l'instance AnalyticDB for PostgreSQL de destination.
Database
Saisissez le nom de la base de données de destination pour la migration des données.
Database Account
Saisissez le compte de base de données de l'instance AnalyticDB for PostgreSQL de destination. Pour plus d'informations sur les autorisations requises, consultez Autorisations requises pour les comptes de base de données.
Database Password
Saisissez le mot de passe du compte de base de données.
-
-
Une fois la configuration terminée, cliquez sur Set Whitelist and Next en bas à droite de la page.
Si la source ou la destination est une instance de base de données Alibaba Cloud, telle que ApsaraDB for MySQL ou ApsaraDB for MongoDB, DTS ajoute automatiquement les adresses IP de ses serveurs dans la région correspondante à la liste d'autorisation de l'instance. Si la source ou la destination est une base de données auto-gérée sur une instance ECS, DTS ajoute automatiquement ses adresses IP aux règles de sécurité de l'instance ECS. Vous devez également vous assurer que la base de données auto-gérée ne restreint pas l'accès depuis l'instance ECS. Si la base de données est un cluster déployé sur plusieurs instances ECS, vous devez ajouter manuellement les adresses IP de DTS aux règles de sécurité de chaque instance ECS. Si la source ou la destination est une base de données dans un centre de données sur site ou sur un autre cloud, vous devez ajouter manuellement les adresses IP de DTS pour la région correspondante afin d'autoriser l'accès depuis les serveurs DTS. Pour obtenir la liste des adresses IP des serveurs DTS, consultez Adresses IP des serveurs DTS.
AvertissementL'ajout des blocs CIDR publics des serveurs DTS, qu'il soit automatique ou manuel, peut présenter des risques de sécurité. En utilisant ce produit, vous reconnaissez et acceptez ces risques potentiels. Il vous incombe de mettre en œuvre des mesures de sécurité de base, notamment l'utilisation de mots de passe robustes, la restriction des ports ouverts, l'utilisation de l'authentification pour les appels API internes, la révision régulière et la restriction des segments réseau inutiles, ou la connexion via des réseaux privés tels qu'Express Connect, VPN Gateway ou Smart Access Gateway.
-
Sélectionnez les types de migration, les types d'opération et les objets à migrer.
Paramètre
Description
Migration Types
-
Si vous avez uniquement besoin d'une migration complète, sélectionnez à la fois Schema Migration et Full Data Migration.
-
Pour effectuer une migration sans interruption de service, sélectionnez Schema Migration, Full Data Migration et Incremental Data Migration.
RemarqueSi l'option Incremental Data Migration n'est pas sélectionnée, évitez d'écrire de nouvelles données dans la base de données source pendant la migration afin de garantir la cohérence des données.
Operation Types
Sélectionnez les types d'opération à synchroniser lors de la migration incrémentielle des données en fonction de vos besoins métier. Tous les types d'opération sont sélectionnés par défaut.
Objects to Migrate
Dans la zone Available, cliquez sur les objets que vous souhaitez migrer, puis sur l'icône
pour les déplacer vers la zone Selected Objects.Remarque-
Vous pouvez sélectionner les objets à migrer au niveau de la table.
-
Par défaut, les objets migrés conservent leurs noms d'origine dans la base de données de destination. Pour renommer un objet, utilisez la fonctionnalité de mappage des noms d'objets. Pour plus d'informations, consultez Mappage des noms d'objets.
-
Si vous utilisez la fonctionnalité de mappage des noms d'objets, la migration des autres objets qui dépendent de l'objet renommé peut échouer.
Object Name Mapping
Pour renommer un objet migré dans l'instance de destination, utilisez la fonctionnalité de mappage des noms d'objets. Pour plus d'informations, consultez Mappage des noms d'objets.
ImportantSi vous utilisez le mappage de colonnes pour une migration partielle de table ou si les schémas des tables source et de destination sont différents, les données des colonnes présentes dans la table source mais absentes de la table de destination seront perdues.
Connection Failure Retry Duration
La durée de nouvelle tentative par défaut est de 12 heures. Vous pouvez spécifier une durée personnalisée. Si DTS se reconnecte aux bases de données source et de destination dans le délai spécifié, la tâche de migration reprend automatiquement. Sinon, la tâche échoue.
RemarqueDTS facture le temps d'exécution de la tâche pendant la période de nouvelle tentative de connexion. Nous vous recommandons de personnaliser la durée de nouvelle tentative en fonction de vos besoins métier, ou de libérer rapidement l'instance DTS après la libération des instances de base de données source et de destination.
Enclose Object Names in Quotation Marks
Indique s'il faut entourer les noms des objets de destination de guillemets. Si vous sélectionnez Yes et que l'une des conditions suivantes est remplie, DTS ajoute des guillemets simples ou doubles à l'objet de destination lors de la migration du schéma et de la migration incrémentielle des données :
-
L'environnement de la base de données source est sensible à la casse et les noms d'objets utilisent des lettres majuscules et minuscules.
-
Un nom de table source ne commence pas par une lettre et contient des caractères autres que des lettres, des chiffres ou les caractères spéciaux pris en charge.
RemarqueLes caractères spéciaux pris en charge sont les traits de soulignement (_), les dièses (#) et les signes dollar ($).
-
Les noms de schéma, de table ou de colonne à migrer sont des mots-clés, des mots réservés ou des caractères non valides dans la base de données de destination.
-
-
Définissez la clé primaire et la clé de distribution pour les tables à migrer vers l'instance AnalyticDB for PostgreSQL.
Sur la page de configuration, définissez le Type pour chaque table, par exemple une table distribuée par hachage. Après la configuration, la colonne Definition Status affiche « Defined ».
RemarquePour plus d'informations sur les clés primaires et les clés de distribution, consultez Contraintes de table et Clés de distribution de table.
Si certaines tables ne disposent pas de clé primaire, l'option Set Primary Keys and Distribution Keys of All Tables Without Primary Keys to ROWID apparaît sur cette page. La sélection de cette option ajoute une colonne ROWID aux tables de destination en tant que clé primaire et clé de distribution.
-
Une fois la configuration terminée, cliquez sur Precheck and Start en bas à droite de la page.
RemarqueAvant le démarrage de la tâche de migration, DTS effectue une vérification préalable. La tâche ne peut démarrer qu'après avoir réussi cette vérification.
-
Si la vérification préalable échoue, cliquez sur l'icône
à côté de l'élément ayant échoué pour afficher les détails.Résolvez les problèmes selon les instructions et exécutez à nouveau la vérification préalable.
Si vous n'avez pas besoin de corriger les éléments d'avertissement, vous pouvez sélectionner Ignore puis cliquer sur Ignore Warnings and Rerun Precheck pour relancer la vérification préalable.
Une fois la tâche passée avec succès la vérification préalable, cliquez sur Next.
Dans la boîte de dialogue Confirm Settings qui s'affiche, sélectionnez une Instance Class et cochez la case Data Transmission Service (pay-as-you-go) Service Terms.
-
Cliquez sur Buy and Start pour commencer la migration.
-
Migration du schéma + Migration complète des données
Laissez la tâche se terminer automatiquement. L'arrêter manuellement peut entraîner une incomplétude des données.
-
Migration du schéma + Migration complète des données + Migration incrémentielle des données
La tâche de migration ne s'arrête pas automatiquement. Vous devez l'arrêter manuellement.
ImportantChoisissez un moment approprié pour arrêter la tâche manuellement, par exemple pendant les heures creuses ou lorsque vous êtes prêt à basculer votre activité vers le cluster de destination.
Attendez que la tâche de migration entre dans la phase Incremental Data Migration et que le statut indique Undelayed. Ensuite, cessez d'écrire des données dans la base de données source pendant plusieurs minutes. Pendant ce temps, le statut de Incremental Data Migration peut afficher une latence.
Attendez que le statut Incremental Data Migration indique à nouveau Undelayed. Ensuite, arrêtez manuellement la tâche de migration. Cochez la case de la tâche de migration cible et cliquez sur Pause dans la barre d'opérations groupées en bas de la page.
-