Utilisez Data Transmission Service (DTS) pour synchroniser les données d'une base de données Oracle gérée en interne vers un projet MaxCompute. DTS prend en charge la synchronisation du schéma, la synchronisation complète des données et la synchronisation incrémentielle des données (capture des modifications via les journaux redo et archivés).
Fonctionnement
DTS effectue la synchronisation des données en trois phases séquentielles :
Schema synchronization — DTS crée les tables de destination dans MaxCompute. Un suffixe
_baseest ajouté à chaque nom de table. Par exemple, si la table source estcustomer, DTS créecustomer_basedans MaxCompute.Full data synchronization — DTS copie toutes les lignes existantes de la base de données Oracle source vers les tables correspondantes suffixées par
_basedans MaxCompute.Incremental data synchronization — DTS lit les journaux redo et archivés d'Oracle et écrit les enregistrements de modification dans une table distincte dédiée aux données incrémentielles dans MaxCompute. Le nom de cette table reçoit le suffixe
_log. Par exemple, les modifications apportées àcustomersont écrites danscustomer_log.
Facturation
| Type de synchronisation | Frais |
|---|---|
| Synchronisation du schéma et synchronisation complète des données | Gratuit |
| Synchronisation incrémentielle des données | Facturé. Pour plus d'informations, consultez la page Aperçu de la facturation. |
Opérations SQL prises en charge
| Type d'opération | Instructions SQL |
|---|---|
| DML (langage de manipulation de données) | INSERT, UPDATE, DELETE |
| DDL (langage de définition de données) | ADD COLUMN (les colonnes d'attribut ne sont pas prises en charge) |
Remarque
DTS ne synchronise pas les clés étrangères. Les opérations en cascade et de suppression effectuées sur la base de données source ne sont pas répliquées vers la destination.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Activé MaxCompute et créé un projet MaxCompute. Consultez les rubriques Activer MaxCompute et DataWorks et Créer un projet MaxCompute.
Configuré une liste d'autorisation d'adresses IP sur le client MaxCompute pour autoriser l'accès de DTS. Consultez la rubrique Configurer une liste d'autorisation d'adresses IP pour autoriser l'accès des services Alibaba Cloud à MaxCompute.
-
Créé une paire AccessKey pour le compte Alibaba Cloud propriétaire du projet MaxCompute de destination. Consultez la rubrique Créer une paire AccessKey.
Remarque
Vous pouvez également créer un utilisateur RAM et le définir comme super administrateur du projet MaxCompute.
-
Configuré la base de données Oracle source :
Elle doit s'exécuter en mode ARCHIVELOG, avec des fichiers de journal archivé accessibles et une période de rétention appropriée. Consultez la documentation Gestion des fichiers de journal redo archivés.
La journalisation supplémentaire doit être activée, avec
SUPPLEMENTAL_LOG_DATA_PKetSUPPLEMENTAL_LOG_DATA_UIdéfinis sur Yesalert notification settings. Consultez la documentation Journalisation supplémentaire.Un compte de base de données disposant des autorisations requises. Consultez la rubrique Préparer une base de données Oracle.
Examiné les fonctionnalités et les limites de DTS pour la synchronisation Oracle, et (facultativement) évalué la faisabilité de la migration avec Advanced Database & Application Migration (ADAM). Consultez la rubrique Aperçu.
Limites
Exigences relatives à la base de données source
Les tables doivent disposer d'une clé primaire ou d'une clé unique, tous les champs devant être uniques. Sans cela, des lignes en double peuvent apparaître dans la destination.
Pour Oracle 12c et versions ultérieures, les noms de table ne doivent pas dépasser 30 octets.
Si vous renommez des tables ou des colonnes au niveau de la destination (dans Selected Objects > clic droit), une tâche unique prend en charge jusqu'à 1,000 tables. Pour des charges de travail plus importantes, répartissez les tables sur plusieurs tâches ou synchronisez l'intégralité de la base de données sans renommage.
Pour Oracle Real Application Cluster (RAC), utilisez une adresse IP virtuelle (VIP) plutôt qu'une adresse IP Single Client Access Name (SCAN). Une fois la VIP spécifiée, le basculement de nœud n'est pas pris en charge.
Si la base de données Oracle RAC se connecte via Express Connect, spécifiez une VIP lors de la configuration de la tâche.
Exigences de rétention des journaux
Les journaux redo et archivés doivent respecter les périodes de rétention minimales suivantes :
| Mode de synchronisation | Période de rétention minimale |
|---|---|
| Synchronisation incrémentielle des données uniquement | 24 heures |
| Synchronisation complète des données + synchronisation incrémentielle des données | 7 jours |
Si les journaux sont purgés avant que DTS ne puisse les lire, la tâche échoue. Dans certains cas limites, cela peut entraîner une incohérence ou une perte de données. Une fois la synchronisation complète des données terminée, vous pouvez réduire la période de rétention à 24 heures.
Des périodes de rétention inférieures à ces minimums peuvent empêcher DTS de lire certaines données de journal, ce qui risque de compromettre les garanties du contrat de niveau de service (SLA).
Autres limitations
N'effectuez pas de basculement primaire/secondaire pendant l'exécution de la tâche, sous peine d'échec.
Les chaînes
VARCHAR2vides (traitées comme NULL par Oracle) provoquent des échecs si la colonne de destination correspondante possède une contrainteNOT NULL.Tables avec la stratégie Fine-Grained Audit (FGA) activée : DTS ne peut pas lire la pseudocolonne
ORA_ROWSCNet la tâche échoue. Désactivez la stratégie FGA sur les tables concernées ou excluez-les de la synchronisation.Ne mettez pas à jour les champs
LONGTEXTpendant l'exécution de la synchronisation.N'exécutez pas d'opérations DDL pendant la synchronisation du schéma ou la synchronisation initiale complète des données.
N'utilisez pas Oracle Data Pump pour écrire dans la base de données source pendant la synchronisation incrémentielle des données, car cela pourrait entraîner une perte de données.
Les tables externes ne peuvent pas être synchronisées.
MaxCompute ne prend pas en charge les contraintes de clé primaire. En cas d'erreurs réseau durant la synchronisation, DTS risque d'écrire des lignes en double dans MaxCompute.
Écrivez dans le projet MaxCompute de destination uniquement via DTS afin d'éviter toute incohérence des données.
Si DTS doit récupérer une instance ayant échoué, le processus peut prendre jusqu'à 8 heures et impliquer le redémarrage de l'instance ou l'ajustement des paramètres de l'instance DTS (les paramètres de la base de données ne sont pas modifiés). Pour connaître les paramètres susceptibles d'être modifiés, consultez la rubrique Modifier les paramètres de l'instance.
Considérations relatives aux performances
Synchronisez les données pendant les heures creuses. La synchronisation complète des données consomme des ressources de lecture et d'écriture sur les bases de données source et de destination.
Après la synchronisation complète des données, l'espace de table de destination peut être plus volumineux que celui de la source en raison de la fragmentation causée par les opérations INSERT concurrentes.
La latence de synchronisation est calculée à partir de l'horodatage du dernier enregistrement synchronisé dans la destination par rapport à l'horodatage actuel dans la source. Si aucune opération DML n'est exécutée sur la source pendant une période prolongée, la lecture de la latence peut être imprécise. Exécutez une opération DML sur la source pour l'actualiser, ou activez une table de pulsation si vous synchronisez une base de données entière.
Autorisations requises pour le compte de base de données
| Base de données | Autorisations requises | Référence |
|---|---|---|
| Base de données Oracle gérée en interne | Autorisations fines | Préparer un compte de base de données, CREATE USER, GRANT |
Pour synchroniser les données incrémentielles, la journalisation des archives et la journalisation supplémentaire doivent être activées sur la base de données Oracle. Consultez la rubrique Configurer une base de données Oracle.
Créer une tâche de synchronisation de données
Étape 1 : Accéder à la page Data Synchronization
Utilisez l'une des consoles suivantes pour démarrer :
Console DTS
Connectez-vous à la console DTSDTS console.
Dans le volet de navigation de gauche, cliquez sur Data Synchronization.
Dans le coin supérieur gauche, sélectionnez la région dans laquelle la tâche de synchronisation de données sera exécutée.
Console DMS
Remarque
Le chemin de navigation exact peut varier selon le mode de la console DMS. Consultez les rubriques Mode simple et Personnaliser la disposition et le style de la console DMS.
Connectez-vous à la console DMSDMS console.
Dans la barre de navigation supérieure, placez le pointeur sur Data + AI et choisissez DTS (DTS) > Data Synchronization.
Dans la liste déroulante située à côté de Data Synchronization Tasks, sélectionnez la région dans laquelle la tâche sera exécutée.
Étape 2 : Configurer les bases de données source et de destination
Cliquez sur Create Task pour ouvrir la page de configuration de la tâche. Configurez les paramètres comme suit :
| Section | Paramètre | Description |
|---|---|---|
| Non applicable | Nom de la tâche | Nom de la tâche DTS. DTS génère automatiquement un nom. Spécifiez un nom descriptif pour faciliter l'identification. Les noms de tâches n'ont pas besoin d'être uniques. |
| Base de données source | Sélectionner une connexion existante | Sélectionnez une instance de base de données enregistrée dans la liste déroulante pour remplir automatiquement les paramètres de connexion. Si l'instance n'est pas enregistrée, configurez les paramètres manuellement. |
| Type de base de données | Sélectionnez Oracle. | |
| Méthode d'accès | Sélectionnez la méthode correspondant à l'emplacement de déploiement de la base de données Oracle. Cet exemple utilise Self-managed Database on ECS. Pour les autres méthodes d'accès, consultez la rubrique Aperçu de la préparation. | |
| Région de l'instance | Région où réside la base de données Oracle source. | |
| ID de l'instance ECS | ID de l'instance ECS exécutant la base de données Oracle source. | |
| Numéro de port | Port du service Oracle. Par défaut : 1521. | |
| Type Oracle | Instance non-RAC : nécessite le SID (identifiant système). Instance RAC ou PDB : nécessite le Nom du service. Cet exemple utilise une Instance RAC ou PDB avec un Nom du service. | |
| Compte de base de données | Compte Oracle. Pour connaître les autorisations requises, consultez la section Autorisations requises pour le compte de base de données. | |
| Mot de passe de la base de données | Mot de passe du compte Oracle. | |
| Base de données de destination | Sélectionner une connexion existante | Sélectionnez une instance de base de données enregistrée dans la liste déroulante pour remplir automatiquement les paramètres de connexion. Si l'instance n'est pas enregistrée, configurez les paramètres manuellement. |
| Type de base de données | Sélectionnez MaxCompute. | |
| Méthode d'accès | Sélectionnez Alibaba Cloud Instance. | |
| Région de l'instance | Région où réside le projet MaxCompute de destination. | |
| Projet | Nom du projet MaxCompute de destination. | |
| ID de clé d'accès du compte Alibaba Cloud | L'AccessKey ID issu de la paire AccessKey que vous avez préparée dans la section Prérequis. | |
| Clé secrète d'accès du compte Alibaba Cloud | L'AccessKey Secret issu de la paire AccessKey que vous avez préparée dans la section Prérequis. |
Étape 3 : Tester la connectivité
En bas de la page, cliquez sur Test Connectivity and Proceed. Dans la boîte de dialogue CIDR Blocks of DTS Servers, cliquez sur Test Connectivity.
Remarque
Les blocs CIDR des serveurs DTS doivent être ajoutés aux paramètres de sécurité des bases de données source et de destination. Cette opération peut être effectuée automatiquement ou manuellement. Consultez la rubrique Ajouter les adresses IP des serveurs DTS à une liste d'autorisation.
Cliquez sur OK pour accorder des autorisations à votre compte MaxCompute, puis cliquez sur Test Connectivity and Proceed.
Étape 4 : Configurer les objets à synchroniser
À l'étape Configure Objects, définissez les paramètres suivants :
| Paramètre | Description |
|---|---|
| Synchronization Types | L'option Incremental Data Synchronization est sélectionnée par défaut. Sélectionnez également Schema Synchronization et Full Data Synchronization pour exécuter les trois phases. |
| Naming Rules of Additional Columns | DTS ajoute des colonnes supplémentaires aux tables de destination. Si le nom d'une colonne supplémentaire entre en conflit avec une colonne existante, la tâche échoue et des données peuvent être perdues. Sélectionnez New Rule ou Previous Rule selon vos besoins. Vérifiez l'absence de conflits de nommage avant de définir ce paramètre. Consultez la rubrique Règles de nommage des colonnes supplémentaires. |
| Partition Definition of Incremental Data Table | Sélectionnez les noms de partition selon vos besoins. Consultez la rubrique Partition. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (par défaut) : vérifie la présence de noms de table identiques dans la source et la destination. La prévérification échoue en cas de conflits. Pour résoudre les conflits, utilisez la fonctionnalité de mappage de noms d'objets pour renommer les tables de destination. Consultez la rubrique Mapper les noms d'objets. Ignore Errors and Proceed : ignore la vérification des conflits. Lors de la synchronisation complète, les enregistrements de destination existants sont conservés ; lors de la synchronisation incrémentielle, les enregistrements existants sont écrasés. Si les schémas diffèrent, l'initialisation peut échouer ou seules certaines colonnes peuvent être synchronisées. |
| Capitalization of Object Names in Destination Instance | Contrôle la casse des noms de bases de données, de tables et de colonnes dans la destination. Par défaut : DTS default policy. Consultez la rubrique Spécifier la casse des noms d'objets dans l'instance de destination. |
| Source Objects | Sélectionnez une ou plusieurs tables et cliquez sur |
| Selected Objects | Pour renommer un seul objet : faites un clic droit dessus et spécifiez un nouveau nom. Consultez la rubrique Mapper le nom d'un seul objet. Pour renommer plusieurs objets : cliquez sur Batch Edit. Consultez la rubrique Mapper plusieurs noms d'objets simultanément. Pour filtrer les lignes : faites un clic droit sur la table et définissez les conditions de filtrage. Consultez la rubrique Spécifier les conditions de filtrage. Le renommage d'un objet peut empêcher la synchronisation d'autres objets qui en dépendent. |
Étape 5 : Configurer les paramètres avancés
Cliquez sur Next: Advanced Settings et configurez les éléments suivants :
| Paramètre | Description |
|---|---|
| Dedicated Cluster for Task Scheduling | Par défaut, DTS planifie les tâches sur un cluster partagé. Achetez un cluster dédié pour améliorer la stabilité. Consultez la rubrique 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. Valeurs valides : 10–1440 minutes. Par défaut : 720 minutes. Définissez cette valeur sur au moins 30 minutes. Si plusieurs tâches partagent la même base de données source ou de destination, la durée de nouvelle tentative la plus courte s'applique. DTS facture l'instance pendant les nouvelles tentatives. |
| Retry Time for Other Issues | Durée pendant laquelle DTS effectue des tentatives après un échec DDL ou DML. Valeurs valides : 1–1440 minutes. Par défaut : 10 minutes. Définissez cette valeur sur un nombre supérieur à 10 minutes et inférieur à Retry Time for Failed Connections. |
| Enable Throttling for Full Data Synchronization | Limitez la synchronisation complète pour réduire la charge sur les serveurs de base de données. Configurez QPS (queries per second) 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é. |
| Enable Throttling for Incremental Data Synchronization | Limitez la synchronisation incrémentielle en configurant RPS of Incremental Data Synchronization et Data synchronization speed for incremental synchronization (MB/s). |
| Actual Write Code | Format d'encodage des données écrites dans la destination. Sélectionnez l'option adaptée à vos besoins. |
| Environment Tag | Tag facultatif permettant d'identifier l'instance DTS. |
| Configure ETL | Active la fonctionnalité extract, transform, load (ETL). Sélectionnez Yes pour saisir des instructions de traitement des données dans l'éditeur de code. Consultez la rubrique Configurer ETL dans une tâche de migration ou de synchronisation de données. Sélectionnez No pour ignorer cette étape. Consultez également la rubrique Qu'est-ce que l'ETL ? |
| Monitoring and Alerting | Configurez des alertes en cas d'échec de la tâche ou de latence de synchronisation élevée. Sélectionnez Yes et définissez le seuil d'alerte ainsi que les contacts de notification. Consultez la rubrique Configurer la surveillance et les alertes lors de la création d'une tâche DTS. |
Étape 6 : Exécuter la prévérification
Cliquez sur Next: Save Task Settings and Precheck.
Remarque
Pour afficher un aperçu des paramètres API pour cette configuration de tâche, survolez le bouton et cliquez sur Preview OpenAPI parameters.
DTS exécute une prévérification avant le démarrage de la tâche. Si la prévérification échoue :
Cliquez sur View Details à côté de chaque élément ayant échoué, résolvez le problème, puis cliquez sur Precheck Again.
Pour les éléments d'alerte pouvant être ignorés : cliquez sur Confirm Alert Details, puis sur Ignore dans la boîte de dialogue, puis sur OK, et enfin sur Precheck Again. Les alertes ignorées peuvent entraîner une incohérence des données.
Étape 7 : Acheter une instance de synchronisation de données
Attendez que le Success Rate atteigne 100%, puis cliquez sur Next: Purchase Instance.
-
Sur la page buy, configurez les éléments suivants :
Section Paramètre Description New Instance Class Méthode de facturation Subscription : paiement anticipé pour une durée fixe — plus rentable pour une utilisation à long terme. Pay-as-you-go : facturation horaire — adapté à une utilisation à court terme. Libérez l'instance lorsqu'elle n'est plus nécessaire pour arrêter la facturation. Paramètres du groupe de ressources Groupe de ressources pour l'instance. Par défaut : default resource group. Consultez la rubrique Qu'est-ce que Resource Management ? Instance Class Classe de débit de synchronisation. Consultez la rubrique Classes d'instances des instances de synchronisation de données. Durée de l'abonnement Disponible pour la méthode de facturation Subscription. Options : 1 à 9 mois, 1 an, 2 ans, 3 ans ou 5 ans. Lisez et acceptez les Data Transmission Service (Pay-as-you-go) Service Terms.
Cliquez sur Buy and Start, puis sur OK dans la boîte de dialogue de confirmation.
La tâche apparaît dans la liste des tâches. Suivez sa progression depuis cette liste.
Schéma de la table de données incrémentielles
Remarque
Exécutez set odps.sql.allow.fullscan=true; dans MaxCompute pour autoriser les analyses complètes de table sur le projet.
DTS écrit les enregistrements de modification incrémentiels dans la table _log de MaxCompute. Chaque ligne de la table de données incrémentielles représente un événement de modification et inclut les champs de métadonnées suivants en plus des colonnes de la table source :
| Champ | Description |
|---|---|
record_id |
Identifiant unique de l'entrée de journal. Incrémentation automatique pour chaque nouvelle entrée. Pour une opération UPDATE, DTS génère deux entrées (valeurs avant et après mise à jour) avec le même record_id. |
operation_flag |
Type d'opération : I (INSERT), D (DELETE) ou U (UPDATE). |
utc_timestamp |
Horodatage de l'opération en UTC. Correspond également à l'horodatage du fichier de journal binaire. |
before_flag |
Indique si la ligne contient les valeurs avant mise à jour : Y ou N. |
after_flag |
Indique si la ligne contient les valeurs après mise à jour : Y ou N. |