Préparer la base de donnée pour Oracle GoldenGate
Découvrez comment activer la journalisation supplémentaire dans les tables de base de données source qui doivent être utilisées pour la capture par le processus Extract for SQL Server et comment purger les anciennes données intermédiaires du CDC.
Pour en savoir plus sur CDC Capture, procédez comme suit :
Utilisation de la réplication de capture CDC Oracle GoldenGate for SQL Server http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/sql_cdcrep/sql_cdcrep.html.
Activation de la journalisation supplémentaire CDC
Avec l'extraction CDC, la méthode de capture des données de modification s'effectue via les tables de capture des données de modification SQL Server. Il est donc impératif de suivre les procédures et les exigences ci-dessous afin que les données de modification soient correctement activées, gérées et capturées par l'extraction.
Vous allez activer la journalisation supplémentaire à l'aide de la commande ADD TRANDATA afin que le processus Extract puisse capturer les informations requises pour reconstruire les transactions.
ADD TRANDATA doit être émis pour toutes les tables qui doivent être capturées par Oracle GoldenGate. Pour ce faire, un schéma valide doit être utilisé afin de créer les tables et procédures stockées Oracle GoldenGate nécessaires.
L'activation de la journalisation supplémentaire pour une extraction CDC effectue les opérations suivantes :
-
Active la capture des données de modification SQL Server au niveau de la base de données, si elle n'est pas déjà activée.
-
Crée une table intermédiaire de capture des données de modification pour chaque table de base activée avec la journalisation supplémentaire en exécutant
EXECUTE sys.sp_cdc_enable_table, et crée un déclencheur pour chaque table CDC. La table CDC existe dans les tables système de la base de données et a une convention de dénomination telle quecdc.OracleGG_basetableobjectid_CT. -
Crée une table de suivi de la convention de dénomination
ggschema.OracleGGTranTables. Cette table est utilisée pour stocker les indicateurs de transaction pour les tables CDC et est renseignée lorsque le déclencheur d'une table CDC est déclenché. La table appartient au schéma répertorié dans le paramètreGGSCHEMAdu fichierGLOBALS. -
Crée une procédure stockée d'extraction unique pour chaque table CDC, ainsi que plusieurs autres procédures stockées requises pour que le processus Extract fonctionne. Ces procédures stockées appartiennent au schéma répertorié dans le paramètre
GGSCHEMAdu fichierGLOBALS. -
En outre, dans le cadre de l'activation du CDC pour les tables, SQL Server crée deux travaux par base de données :
cdc.dbname_capturecdc.dbname_cleanup -
Le travail de capture CDC est le travail qui lit le journal des transactions SQL Server et renseigne les données dans les tables CDC, et c'est à partir de ces tables CDC que le processus Extract va capturer les transactions. Il est donc extrêmement important que le travail de capture CDC soit en cours d'exécution à tout moment. Cela nécessite également que l'agent SQL Server soit configuré pour s'exécuter à tout moment et activé pour s'exécuter automatiquement au démarrage de SQL Server.
Remarque : si la réplication transactionnelle SQL Server est également activée pour la base de données, le travail CDC Capture n'existe pas et, à la place, seul le travail SQL Server Log Reader Agent existe.
-
Le travail de capture CDC peut être réglé pour améliorer le débit et les informations de réglage sont disponibles dans Remarques opérationnelles sur la méthode de capture CDC.
-
Le travail de nettoyage de CDC créé par Microsoft ne dépend pas du fait que l'extraction Oracle GoldenGate ait capturé des données dans les tables de CDC ou non. Par conséquent, des étapes supplémentaires sont nécessaires pour désactiver ou supprimer le travail de nettoyage du CDC immédiatement après l'activation de
TRANDATA, et pour activer la propre tâche Purger les données de modification d'Oracle GoldenGate. Pour plus d'informations, reportez-vous à Purger les données d'import CDC.
Pour activer la journalisation supplémentaire à l'aide de l'interface de ligne de commande, procédez comme suit :
-
Consultez la rubrique Prepare Database Users and Privileges afin de déterminer les privilèges et les étapes requis pour activer la base de données pour la capture des modifications de données, si elle n'est pas déjà définie. Des droits d'accès élevés peuvent être nécessaires pour GoldenGate si la base de données n'est pas activée pour le CDC, mais peuvent être annulés en demandant à un administrateur d'activer manuellement la base de données pour la capture des données de modification.
-
Pour Google Cloud SQL for SQL Server , la base de données doit être activée manuellement pour la capture des données de modification par un administrateur de service et exécuter la commande suivante :
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database'; -
Pour SQL Server et Azure SQL Managed Instance, l'ajout de
TRANDATAtente de définir la base de données pour la capture de données de modification si l'utilisateur dispose de privilèges sysadmin. Sinon, un administrateur de base de données peut activer manuellement la base de données pour le CDC avant d'ajouterTRANDATA, en exécutant la commande suivante sur la base de données source :EXEC sys.sp_cdc_enable_db; -
Pour Amazon RDS for SQL Server, l'ajout de
TRANDATAtente également de définir la base de données pour la capture de données de modification si l'utilisateur a obtenu le droit d'accès, sinon un administrateur de base de données avec des informations d'identification maître peut activer manuellement la base de données pour le CDC avant d'ajouterTRANDATA, en exécutant la commande suivante sur la base de données source :EXEC msdb.dbo.rds_cdc_enable_db 'source_database'
-
-
Dans l'installation Oracle GoldenGate source, assurez-vous que le fichier
GLOBALSa le paramètreGGSCHEMA schemanameet que le nom de schéma utilisé a été créé (CREATE SCHEMA schemaname) dans la base de données source. Ce schéma sera utilisé par tous les composants Oracle GoldenGate suivants créés dans la base de données. Par conséquent, il est recommandé de créer un schéma unique utilisé uniquement par Oracle GoldenGate, tel que 'ggschema' et de ne pas utiliser les schémas SQL Serverdbooucdc. -
Sur le système Oracle GoldenGate source, ouvrez l'interface de ligne de commande (Admin Client).
-
Connectez-vous à la base de données avec les informations d'identification de connexion à la base de données.
-
Exécutez la commande suivante pour chaque table qui doit être capturée par une extraction. Vous pouvez utiliser un caractère générique pour indiquer plusieurs noms de table.
ADD TRANDATA owner.tableADD TRANDATA owner.*Vous pouvez éventuellement désigner le groupe d'éléments dans lequel placer les tables intermédiaires SQL Server Change Data Capture, en utilisant l'option
FILEGROUPavec un nom de groupe d'éléments de fichier existant.ADD TRANDATA owner.table FILEGROUP cdctablesSee ADD TRANDATA
Pour plus d'informations, reportez-vous à ADD TRANDATA.
Purger les données d'import CDC
Lors de l'activation de la journalisation supplémentaire, les données requises par le processus Extract pour reconstruire les transactions sont stockées dans une série de tables système CDC SQL Server, ainsi que dans les objets Oracle GoldenGate utilisés pour suivre l'ordre des opérations au sein d'une transaction. Ces tables nécessitent une purge de routine afin de réduire le stockage des données dans la base. Dans le cadre de l'activation de la journalisation supplémentaire à l'aide de TRANDATA, SQL Server crée son propre travail de nettoyage de capture des données de modification. Cependant, ce travail ne sait pas qu'une extraction peut toujours nécessiter des données de ces tables système CDC et peut supprimer ces données avant que l'extraction ne puisse les capturer.
Si les données dont l'extraction a besoin au cours du traitement ont été supprimées des tables système CDC, l'une des actions correctives suivantes peut être requise :
-
Modifiez le processus Extract pour effectuer une capture à partir d'un point ultérieur pour lequel des données CDC sont disponibles (et acceptez une éventuelle perte de données sur la cible).
-
Resynchronisez les tables source et cible, puis redémarrez l'environnement Oracle GoldenGate.
Pour remédier à la situation de suppression des données CDC avant qu'une extraction ne puisse les traiter, Oracle GoldenGate for SQL Server requiert la création d'une tâche Purger les données de modification. Cette tâche purge les données d'import CDC tout en s'assurant qu'aucune donnée n'est purgée et que l'extraction n'a pas encore été traitée.
Procédez comme suit immédiatement après avoir activé la journalisation supplémentaire (TRANDATA) et avant de démarrer l'extraction, pour créer la tâche Purger les données de modification d'Oracle GoldenGate. La tâche Purger les données de modification s'exécute dans le service d'administration et supprime automatiquement le travail de nettoyage CDC SQL Server lors de sa création. Il n'existe aucun travail d'agent SQL Server pour la tâche Purger les données de modification car elle est exécutée par le service d'administration. Le service d'administration doit donc être en cours d'exécution pour que la tâche de nettoyage fonctionne correctement.
Pour créer une tâche Purger les données de modification :
Avec l'architecture Oracle GoldenGate for Microservices, après avoir ajouté TRANDATA aux tables, mais avant de démarrer l'extraction, une tâche Purger les données de modification doit être créée pour effectuer le nettoyage du CDC sur la base de données. Pour ce faire, vous pouvez effectuer l'une des opérations suivantes :
-
Demandes d'API REST manuelles
-
Interface Web du serveur d'administration
Pour créer une tâche Purger les données de modification à l'aide de l'interface utilisateur Web du service d'administration : 1. Développez la section Tâches dans le panneau de gauche.
-
Cliquez sur Purger les données de modification sur la page Tâches.
-
Cliquez sur le signe plus pour afficher un formulaire et renseignez les champs requis pour créer une tâche Purger les données de modification.
-
Nom de l'opération : nom de la tâche de purge à créer.
-
Activé : définissez la tâche sur Activé, qui est la valeur par défaut.
-
Domaine d'informations d'identification et alias d'informations d'identification : sélectionnez un alias d'informations d'identification existant pour la base de données source.
-
Conserver la règle : cette valeur détermine, en heures ou en jours, la quantité de données de transfert CDC à conserver dans la base de données source. Selon la version d'Oracle GoldenGate, les valeurs par défaut sont 3 jours ou 1 heure. Les périodes de conservation des données CDC inférieures réduisent la quantité de données intermédiaires CDC stockées dans la base de données, mais limitent la possibilité pour un utilisateur de repositionner l'extraction à une date antérieure aux données qui existent dans les tables intermédiaires.
-
Fréquence de purge : cette valeur représente la fréquence d'exécution de la tâche, avec une valeur par défaut toutes les 10 minutes. Il est recommandé de conserver la valeur par défaut, sauf si la surcharge liée à la tâche de purge a une incidence sur les performances de la base de données pendant les périodes d'activité utilisateur élevée. Remarque : créez une seule tâche Purger les données de modification par base de données source.
-
Vous trouverez des informations supplémentaires sur le travail de nettoyage du CDC Oracle GoldenGate dans Remarques opérationnelles sur la méthode de capture du CDC.
Activation de la détection de boucle bidirectionnelle
La détection de boucle est une exigence pour les implémentations bidirectionnelles d'Oracle GoldenGate, de sorte qu'une extraction pour une base de données source ne récupère pas les transactions envoyées par une réplication à partir d'une autre base de données source.
Par défaut, avec la méthode de capture d'extraction CDC, toute transaction validée par un processus Replicat dans une base de données dans laquelle un processus Extract est configuré, récupère cette transaction à partir du processus Replicat tant que la journalisation supplémentaire est activée pour les tables vers lesquelles le processus Replicat est transmis.
Pour ignorer les transactions de récupération qui sont appliquées par une réplication, vous devez utiliser le paramètre TRANLOGOPTIONS EXCLUDEFILTERTABLE pour l'extraction CDC. La table utilisée comme table de filtrage sera la table de points de reprise Oracle GoldenGate que vous devez créer pour le processus Replicat.
Pour créer une table de filtres et activer la journalisation supplémentaire, procédez comme suit :
Les étapes ci-dessous requièrent un utilisateur de base de données membre du rôle d'administrateur système SQL Server (sysadmin).
-
Sur le système source, exécutez Admin Client.
-
Connectez-vous au déploiement à partir du client Admin.
-
Exécutez la commande suivante pour vous connecter à la base de données.
DBLOGIN USERIDALIAS alias -
Créez la table de points de reprise Oracle GoldenGate utilisée par le processus Replicat pour transmettre les données à la base de données source.
Exemple :
ADD CHECKPOINTTABLE ogg.ggchkptIl est recommandé d'utiliser le même nom de schéma que celui utilisé dans le paramètre
GGSCHEMAdu fichierGLOBALS. -
Activez la journalisation supplémentaire pour la table de points de reprise nouvellement créée.
Exemple :
ADD TRANDATA ogg.ggchkpt -
Ajoutez le processus Replicat avec les informations de la table de points de reprise.
Exemple :
ADD REPLICAT repe, EXTTRAIL north/ea,checkpointtable ogg.ggchkpt -
Configurez le processus Extract avec le paramètre
EXCLUDEFILTERTABLE, à l'aide de la table de points de reprise du processus Replicat pour la table de filtrage.TRANLOGOPTIONS EXCLUDEFILTERTABLE ogg.ggchkpt