Utilisez Data Transmission Service (DTS) pour synchroniser en continu les données d'une base de données Oracle autogérée vers un cluster PolarDB for PostgreSQL (Compatible avec Oracle). DTS prend en charge la synchronisation du schéma, la synchronisation complète des données et la synchronisation incrémentielle des données, maintenant ainsi le cluster de destination synchronisé tandis que votre source Oracle continue de gérer le trafic de production.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster PolarDB for PostgreSQL (Compatible avec Oracle) dont la capacité de stockage est supérieure à l'espace utilisé par la base de données Oracle source. Pour en créer un, consultez Créer un cluster PolarDB for PostgreSQL (Compatible avec Oracle). Pour plus d'informations sur les versions prises en charge des bases de données source et de destination, consultez Présentation de la solution de synchronisation.
Une base de données créée dans le cluster de destination pour recevoir les données synchronisées. Consultez Gestion des bases de données
La base de données Oracle autogérée doit fonctionner en mode ARCHIVELOG avec une période de rétention des journaux suffisante. Consultez ARCHIVELOG
La journalisation supplémentaire doit être activée sur la base de données Oracle source, avec
supplemental_log_data_pketsupplemental_log_data_uiactivés. Pour plus d'informations, consultez Supplemental Logging.Une évaluation de base de données réalisée à l'aide d'Advanced Database & Application Migration (ADAM). ADAM analyse votre schéma Oracle et signale les objets que DTS ne peut pas synchroniser, ce qui vous permet de résoudre les problèmes de compatibilité avant le démarrage de la tâche. Consultez Présentation de l'évaluation de la base de données et Limitations et préparations pour les bases de données Oracle
Facturation
| Type de synchronisation | Tarification |
|---|---|
| Synchronisation du schéma et synchronisation complète des données | Gratuit |
| Synchronisation incrémentielle des données | Payant. Consultez Présentation de la facturation |
Opérations SQL prises en charge
| Type d'opération | Instructions SQL |
|---|---|
| LMD (Langage de manipulation de données) | INSERT, UPDATE et DELETE |
| LDD (Langage de définition de données) | CREATE TABLE (à l'exclusion de CREATE TABLE AS SELECT et des tables partitionnées ou sous-partitionnées) ; ALTER TABLE (ADD COLUMN, ADD INDEX, DROP COLUMN, DROP INDEX, MODIFY COLUMN, RENAME COLUMN) ; DROP TABLE ; RENAME TABLE ; TRUNCATE TABLE ; CREATE INDEX |
Autorisations des comptes de base de données
| Base de données | Autorisations requises | Référence |
|---|---|---|
| Oracle autogéré | Autorisations granulaires | Préparer un compte de base de données, CREATE USER et GRANT |
| PolarDB for PostgreSQL (Compatible avec Oracle) | Autorisations de propriétaire de schéma (compte privilégié recommandé) | Créer un compte de base de données et Gestion des bases de données |
Activez le mode ARCHIVELOG et la journalisation supplémentaire pour capturer les modifications incrémentielles des données. Consultez Configuration de la base de données.
Limitations
Limitations de la base de données source
| Limitation | Détails |
|---|---|
| Clé primaire ou contrainte unique requise | Les tables doivent posséder une clé primaire ou une contrainte unique avec des valeurs de champ uniques. Sans cette caractéristique, des données en double apparaissent dans la destination. |
| Longueur du nom de table (Oracle 12c et versions ultérieures) | Les noms de table ne doivent pas dépasser 30 octets. |
| Nombre maximal de tables par tâche (synchronisation au niveau de la table avec mappage) | 1 000 tables. Pour dépasser cette limite, répartissez les tables sur plusieurs tâches ou synchronisez la base de données entière en tant qu'objet unique. |
| Oracle RAC connecté via Express Connect | Si la base de données source est un Oracle RAC connecté via un circuit Express Connect, configurez l'une de ses adresses VIP dans les paramètres de connexion. Si la base de données Oracle autogérée est un cluster RAC, vous ne pouvez pas configurer une adresse IP SCAN ; vous devez utiliser une adresse VIP dans les paramètres de connexion. Le basculement des nœuds RAC n'est pas pris en charge avec cette configuration. |
| Journaux redo et journaux d'archive | Les journaux redo et les journaux d'archive doivent être activés. |
| Rétention des journaux | Pour les tâches incrémentielles uniquement : conservez les journaux pendant au moins 24 heures. Pour les tâches complètes + incrémentielles : conservez les journaux pendant au moins 7 jours ; après la fin de la synchronisation complète, vous pouvez réduire cette durée à 24 heures. Si DTS ne peut pas accéder à ces journaux, la tâche peut échouer ou entraîner une perte de données ; ce scénario n'est pas couvert par l'accord de niveau de service (SLA) de DTS. |
| Basculement primaire/secondaire | Si un basculement primaire/secondaire se produit sur la base de données source pendant la synchronisation, la tâche échoue. |
| Chaîne vide VARCHAR2 avec contrainte NOT NULL | Oracle traite une chaîne VARCHAR2 vide comme nulle. Si la colonne de destination a une contrainte NOT NULL, la tâche échoue. |
| Politique Fine-Grained Audit (FGA) | Si FGA est activé sur une table, DTS ne peut pas détecter la pseudocolonne ORA_ROWSCN et la tâche échoue. Désactivez la politique FGA sur la table ou excluez la table de la synchronisation. |
| Mise à jour uniquement des champs texte volumineux | Non pris en charge. La tâche échoue si une opération UPDATE modifie uniquement des champs texte volumineux. |
| LDD pendant la synchronisation du schéma ou complète | N'exécutez pas d'opérations LDD qui modifient le schéma pendant la synchronisation du schéma ou la synchronisation complète. Les requêtes DTS provoquent des verrous de métadonnées sur la source qui peuvent également bloquer les opérations LDD sur celle-ci. |
Autres limitations
| Limitation | Détails |
|---|---|
| Oracle Data Pump pendant la synchronisation incrémentielle | N'utilisez pas Oracle Data Pump pour écrire dans la base de données source pendant la synchronisation incrémentielle, car cela pourrait entraîner une perte de données. |
| Tables externes | Ne peuvent pas être synchronisées. |
| Timing de la synchronisation | Exécutez la synchronisation pendant les heures creuses. La synchronisation initiale complète des données consomme des ressources de lecture et d'écriture sur les bases de données source et de destination. |
| Taille du tablespace après la synchronisation complète | Les opérations INSERT concurrentes pendant la synchronisation complète provoquent une fragmentation des tables dans la destination. La taille du tablespace de destination sera plus grande que celle de la source après la fin de la synchronisation complète. |
| Calcul de la latence de synchronisation | DTS calcule la latence en fonction de l'horodatage du dernier enregistrement synchronisé et de l'horodatage actuel de la source. Si aucune opération LMD n'est exécutée sur la source pendant une période prolongée, la latence signalée peut être inexacte. Pour maintenir une latence précise, créez une table de pulsation lors de la synchronisation d'une base de données entière ; DTS la met à jour chaque seconde. |
| Index uniques basés sur ROWID | Le cluster de destination génère des index uniques (par exemple, pg_oid_1498503_index) pour correspondre aux valeurs ROWID de la source. La destination aura donc plus d'index que la source. |
Terminateur de chaîne '\0' |
Le cluster de destination ne prend pas en charge le terminateur de chaîne '\0'. DTS supprime ce caractère s'il est présent dans les données source, ce qui entraîne une incohérence des données. |
| Contraintes CHECK | Les contraintes CHECK de la source sont converties en contraintes NOT NULL dans la destination. |
| Compatibilité des jeux de caractères | Les jeux de caractères de la source et de la destination doivent être compatibles. Une incompatibilité entraîne une incohérence des données ou un échec de la tâche. |
| Compatibilité des types de données | Utilisez la fonctionnalité de synchronisation du schéma de DTS pour éviter les échecs dus à des types de données incompatibles. |
| Fuseau horaire | La source et la destination doivent utiliser le même fuseau horaire. |
| Types définis par l'utilisateur | Synchronisés vers la destination. Les objets de type intégré générés automatiquement par Oracle ne sont pas synchronisés, car la destination les prend déjà en charge. |
| Écritures externes vers la destination pendant la synchronisation | N'écrivez pas de données provenant de sources autres que DTS dans la destination pendant la synchronisation, car cela pourrait entraîner une incohérence des données. |
| Séquences | DTS valide le contenu des données mais pas les métadonnées telles que les séquences. Validez les séquences manuellement. Après avoir basculé votre activité vers la destination, les séquences ne s'incrémentent pas à partir de la valeur maximale de la source. Mettez à jour les valeurs de séquence dans la destination avant le basculement. Consultez Mettre à jour la valeur de la séquence dans la base de données de destination. |
session_replication_role pour les clés étrangères et les déclencheurs |
Pour une tâche de synchronisation complète ou incrémentielle, si les tables à synchroniser contiennent des clés étrangères, des déclencheurs ou des déclencheurs d'événement : DTS définit session_replication_role sur replica au niveau de la session lorsque le compte de destination dispose d'autorisations privilégiées ou superutilisateur. Si le compte ne dispose pas de ces autorisations, définissez session_replication_role sur replica manuellement. Les opérations de mise à jour ou de suppression en cascade sur la source alors que ce paramètre est réglé sur replica peuvent entraîner une incohérence des données. Une fois la tâche DTS libérée, remettez session_replication_role sur origin. |
| Récupération après échec de la tâche | Si une tâche échoue, le personnel de support DTS tente de la restaurer dans un délai de 8 heures. Ils peuvent redémarrer la tâche ou ajuster les paramètres de la tâche (mais pas les paramètres de la base de données). |
Pendant la synchronisation du schéma, DTS synchronise les clés étrangères de la source vers la destination. Pendant la synchronisation complète et incrémentielle, DTS désactive temporairement les vérifications de contraintes et les opérations en cascade des clés étrangères au niveau de la session. Une incohérence des données peut survenir si des opérations de mise à jour ou de suppression en cascade sont exécutées sur la source pendant que la tâche est active.
Créer une tâche de synchronisation
Étape 1 : Ouvrir la liste des tâches de synchronisation des données
Ouvrez la liste des tâches à l'aide de la console DTS ou de la console DMS.
Console DTS
Connectez-vous à la console DTS.
Dans le volet de navigation de gauche, cliquez sur Data Synchronization.
Dans le coin supérieur gauche, sélectionnez la région où l'instance de synchronisation sera située.
Console DMS
Remarque
Les étapes peuvent varier en fonction du mode et de la disposition de la console DMS. Consultez Console en mode simple et Personnaliser la disposition et le style de la console DMS.
Connectez-vous à la console DMS.
Dans la barre de menus supérieure, choisissez .
À droite de Data Synchronization Tasks, sélectionnez la région de l'instance de synchronisation.
Étape 2 : Configurer la tâche
Cliquez sur Create Task.
-
(Facultatif) Dans le coin supérieur droit, cliquez sur New Configuration Page pour passer à la nouvelle interface de configuration.
Si le bouton indique Back to Previous Version , vous êtes déjà sur la nouvelle page de configuration. La nouvelle version est recommandée.
-
Configurez les bases de données source et de destination à l'aide des paramètres suivants.
Paramètres de la tâche
Paramètre Description Task Name DTS génère un nom automatiquement. Spécifiez un nom descriptif pour une identification facile ; le nom n'a pas besoin d'être unique. Base de données source
Paramètre Description Select Existing Connection Sélectionnez une instance de base de données enregistrée dans la liste, ou laissez vide et configurez les champs ci-dessous manuellement. Dans la console DMS, ce champ est intitulé Select a DMS database instance. Database Type Sélectionnez Oracle. Access Method Sélectionnez la méthode qui correspond au déploiement de votre base de données source. Cette rubrique utilise Self-managed Database on ECS à titre d'exemple. Pour d'autres méthodes d'accès et les étapes supplémentaires qu'elles nécessitent, consultez Présentation des préparatifs. Instance Region Sélectionnez la région où réside la base de données Oracle source. ECS Instance ID Sélectionnez l'ID de l'instance ECS exécutant la base de données Oracle source. Port Number Saisissez le port de service de la base de données Oracle source. La valeur par défaut est 1521. Oracle Type Sélectionnez Non-RAC Instance et fournissez le SID, ou sélectionnez RAC or PDB Instance et fournissez le Service Name. Cette rubrique utilise RAC or PDB Instance avec un Service Name. Database Account Saisissez le compte de base de données. Pour les exigences en matière d'autorisations, consultez Autorisations des comptes de base de données. Database Password Saisissez le mot de passe du compte de base de données. Encryption Sélectionnez Non-encrypted ou SSL-encrypted. Pour le chiffrement SSL, téléchargez le CA Certificate et saisissez la CA Key. Le chiffrement SSL n'est disponible que lorsque Access Method est Express Connect, VPN Gateway, or Smart Access Gateway et que Oracle Type est RAC or PDB Instance. Base de données de destination
Paramètre Description Select Existing Connection Sélectionnez une instance de base de données enregistrée dans la liste, ou laissez vide et configurez les champs ci-dessous manuellement. Dans la console DMS, ce champ est intitulé Select a DMS database instance. Database Type Sélectionnez PolarDB (Compatible with Oracle). Access Method Sélectionnez Alibaba Cloud Instance. Instance Region Sélectionnez la région où se trouve le cluster de destination. Instance ID Sélectionnez l'ID du cluster PolarDB for PostgreSQL (Compatible avec Oracle) de destination. Database Name Saisissez le nom de la base de données dans le cluster de destination qui recevra les objets synchronisés. Database Account Saisissez le compte de base de données pour le cluster de destination. Pour les exigences en matière d'autorisations, consultez Autorisations des comptes de base de données. Database Password Saisissez le mot de passe du compte de base de données. Encryption Sélectionnez Non-encrypted ou SSL-encrypted. Pour le chiffrement SSL, téléchargez le CA Certificate. -
Cliquez sur Test Connectivity and Proceed en bas de la page. Dans la boîte de dialogue CIDR Blocks of DTS Servers, cliquez sur Test Connectivity.
Les blocs d'adresses IP du serveur DTS doivent être ajoutés aux paramètres de sécurité des bases de données source et de destination avant le test de connectivité. DTS peut les ajouter automatiquement, ou vous pouvez les ajouter manuellement. Consultez Ajouter la liste d'autorisation d'adresses IP des serveurs DTS .
Étape 3 : Sélectionner les objets à synchroniser
-
Sur la page Configure Objects, définissez les paramètres suivants.
Paramètre Description Synchronization Types DTS sélectionne toujours Incremental Data Synchronization. Par défaut, Schema Synchronization et Full Data Synchronization sont également sélectionnés. DTS utilise les données complètes des objets sélectionnés pour initialiser le cluster de destination avant de démarrer la synchronisation incrémentielle. Processing Mode of Conflicting Tables Precheck and Report Errors : Vérifie la présence de tables portant le même nom dans la destination. Si des conflits sont trouvés, la prévalidation signale une erreur et la tâche ne démarre pas. Pour gérer les conflits de nommage sans supprimer ni renommer la table de destination, mappez l'objet sur un nom différent. Consultez Mappage des noms de colonnes de tables de base de données. Ignore Errors and Proceed : Ignore la vérification des conflits de noms. AvertissementCette option peut entraîner une incohérence des données. Pendant la synchronisation complète, DTS ignore les enregistrements source qui entrent en conflit avec les enregistrements de destination. Pendant la synchronisation incrémentielle, DTS écrase les enregistrements de destination avec les enregistrements source. Si les schémas sont incohérents, l'initialisation des données peut échouer partiellement ou totalement.
Capitalization of Object Names in Destination Instance Définit la politique de casse pour les noms de base de données, de tables et de colonnes dans la destination. La valeur par défaut est DTS default policy. Consultez Politique de casse pour les noms d'objets de destination. Source Objects Cliquez sur les objets dans la zone Source Objects, puis cliquez sur l'icône de flèche vers la droite pour les déplacer vers la zone Selected Objects. Vous pouvez sélectionner des objets au niveau de la base de données, de la table ou de la colonne. Selected Objects Si vous n'utilisez pas de compte privilégié, ou si le nom du schéma source ne correspond pas aux conventions de nommage de PolarDB for PostgreSQL (Compatible avec Oracle), faites un clic droit sur le schéma dans le volet Selected Objects, ouvrez la boîte de dialogue Edit Schema et mettez à jour le Schema Name pour qu'il corresponde à la base de données cible. Consultez Mapper les noms de tables et de colonnes. Pour sélectionner des opérations SQL spécifiques pour une base de données ou une table, faites un clic droit sur l'objet et choisissez les opérations dans la boîte de dialogue. Pour appliquer des filtres de ligne, faites un clic droit sur une table et configurez les conditions de filtre. Consultez Définir les conditions de filtre. Le renommage d'un objet peut interrompre la synchronisation d'autres objets qui en dépendent. -
Cliquez sur Next: Advanced Settings et configurez les paramètres suivants.
Paramètre Description Dedicated Cluster for Task Scheduling DTS utilise un cluster partagé par défaut. Pour une meilleure stabilité des tâches, achetez un cluster dédié. Consultez Qu'est-ce qu'un cluster dédié DTS ? Retry Time for Failed Connections Durée pendant laquelle DTS effectue des tentatives après un échec de connexion. Valeur par défaut : 720 minutes. Plage valide : 10–1 440 minutes. Définissez une valeur de 30 minutes ou plus. Si la connexion est rétablie dans ce délai, la tâche reprend automatiquement. RemarqueLorsque plusieurs instances DTS partagent une source ou une destination, DTS applique la durée de nouvelle tentative la plus courte configurée parmi toutes les instances. DTS facture l'exécution pendant les nouvelles tentatives de connexion.
Retry Time for Other Issues Durée pendant laquelle DTS effectue des tentatives après des erreurs autres que les erreurs de connexion (par exemple, erreurs d'exécution LDD ou LMD). Valeur par défaut : 10 minutes. Plage valide : 1–1 440 minutes. Définissez une valeur de 10 minutes ou plus. Cette valeur doit être inférieure à Retry Time for Failed Connections. Enable Throttling for Full Data Synchronization Limite les taux de lecture/écriture de la synchronisation complète pour réduire la charge sur la destination. Définissez Queries per second (QPS) to the source database, RPS of Full Data Migration et Data migration speed for full migration (MB/s). Disponible uniquement lorsque Full Data Synchronization est sélectionné. Vous pouvez également ajuster le taux pendant l'exécution de la tâche. Enable Throttling for Incremental Data Synchronization Limite les taux de synchronisation incrémentielle. Définissez RPS of Incremental Data Synchronization et Data synchronization speed for incremental synchronization (MB/s). Environment Tag Attachez un tag d'environnement à l'instance pour l'identification. Actual Write Code Sélectionnez le type d'encodage pour les données écrites dans la destination. Configure ETL Choisissez si vous souhaitez activer l'extraction, la transformation et le chargement (ETL). Sélectionnez Yesalert notifications pour saisir des instructions de traitement des données dans l'éditeur de code. Consultez Configurer ETL dans une tâche de migration ou de synchronisation de données. Sélectionnez No pour désactiver ETL. Pour plus d'informations sur ETL, consultez Qu'est-ce que ETL ? Monitoring and Alerting Configurez des alertes pour les échecs de tâche ou la latence dépassant un seuil. Sélectionnez Yes pour définir un seuil d'alerte et des contacts de notification. Consultez Configurer la surveillance et les alertes lors de la configuration de la tâche. Cliquez sur Data Verification pour configurer une tâche de vérification des données. Consultez Configurer la vérification des données.
Étape 4 : Enregistrer la tâche et exécuter la prévalidation
Pour afficher un aperçu des paramètres API pour cette configuration, survolez Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters.
Cliquez sur Next: Save Task Settings and Precheck pour enregistrer la configuration et démarrer la prévalidation.
DTS exécute une prévalidation avant de démarrer toute tâche de synchronisation. La tâche ne démarre que si la prévalidation est réussie.
Si la prévalidation échoue, cliquez sur View Details à côté de l'élément ayant échoué, corrigez le problème et relancez la prévalidation.
Si la prévalidation génère des avertissements non ignorables, cliquez sur View Details , corrigez le problème et relancez la validation.
Si la prévalidation génère des avertissements ignorables, cliquez sur Confirm Alert Details > Ignore > OK , puis cliquez sur Precheck Again pour continuer. Ignorer les avertissements peut entraîner une incohérence des données.
Étape 5 : Acheter l'instance
Lorsque le Success Rate atteint 100 %, cliquez sur Next: Purchase Instance.
-
Sur la page Purchase, sélectionnez la méthode de facturation et les spécifications de l'instance.
Paramètre Description Billing Method Subscription : Payez à l'avance pour une durée fixe. Rentable pour les tâches continues à long terme. Pay-as-you-go : Facturé à l'heure pour l'utilisation réelle. Convient aux tâches à court terme ou de test ; libérez l'instance à tout moment pour arrêter les frais. Resource Group Settings Le groupe de ressources pour l'instance. Valeur par défaut : default resource group. Consultez Qu'est-ce que Resource Management ? Instance Class Détermine les performances de synchronisation. Sélectionnez en fonction de votre volume de données et de vos exigences de débit. Consultez Spécifications des liens de synchronisation de données. Subscription Duration Disponible uniquement pour la facturation par abonnement. Options mensuelles : 1–9 mois. Options annuelles : 1, 2, 3 ou 5 ans. Cochez la case Data Transmission Service (Pay-as-you-go) Service Terms.
Cliquez sur Buy and Start, puis cliquez sur OK dans la boîte de dialogue de confirmation.
Surveillez la tâche sur la page de synchronisation des données.
Étapes suivantes
Après le démarrage de la tâche de synchronisation et l'initialisation complète du cluster de destination, validez les données dans la destination avant de basculer le trafic métier :
Mettez à jour les valeurs de séquence dans la destination avant le basculement. Consultez Mettre à jour la valeur de la séquence dans la base de données de destination.
Vérifiez que
session_replication_roleest rétabli surorigindans la destination après la libération de la tâche DTS.Vérifiez que les jeux de caractères et les fuseaux horaires correspondent entre la source et la destination pour éviter des problèmes de données après le basculement.