Partager via


Travailler avec le service de capture des modifications de données d'Oracle

Important

La capture de données modifiées pour Oracle par Attunity est déconseillée maintenant. Pour les détails, référez-vous à l'annonce.

Cette section décrit certains concepts importants du service de capture de données modifiées Oracle. Les concepts inclus dans cette section sont les suivants :

  • Base de données MSXDBCDC

    Cette section décrit les tableaux inclus dans cette base de données et l'importance pour le CDC.

  • Bases de données CDC

    Cette section fournit une brève description des bases de données CDC. Ces bases de données sont créées à l'aide de l'Oracle CDC Designer Console. Pour plus d'informations sur les bases de données CDC, consultez la documentation incluse avec votre installation de la Console CDC Designer.

  • Utilisation de la ligne de commande pour configurer le service CDC

    Cette section décrit les commandes en ligne de commande pouvant être utilisées pour configurer le service Oracle CDC.

Base de données MSXDBCDC

La base de données MSXDBCDC (Microsoft External-Database CDC) est une base de données spéciale requise lors de l’utilisation du service CDC pour Oracle avec une instance SQL Server.

Impossible de modifier le nom de cette base de données. Si une base de données appelée MSXDBCDC existe sur l’instance SQL Server hôte et contient des tables autres que celles définies par le service CDC pour Oracle, l’instance SQL Server hôte ne peut pas être utilisée.

Les principales utilisations de cette base de données sont les suivantes :

  • Servir de registre des services de capture de données modifiées Oracle associés à une instance SQL Server. Ces informations sont utilisées pour la configuration du service et les composants de conception et pour prendre en charge la coordination de plusieurs services CDC par le même nom sur différents nœuds sur lesquels l’un est actif.

  • Servez de registre pour les instances de capture de données modifiées Oracle contenues dans une instance de SQL Server, du service CDC qui gère chaque instance, et de la version de configuration utilisée par chacune. Ces informations sont équivalentes à la colonne is_cdc_enabled dans la table sys.databases de la base de données master. Le service CDC analyse régulièrement la table dbo.xdbcdc_databases pour identifier les modifications apportées à la configuration cdc ou à la liste des instances capturées.

  • Conservez les procédures stockées appartenant à sysadmin qui aident à créer et à gérer des instances cdc. Les procédures sont similaires à celles du système utilisées pour implémenter la fonctionnalité de capture des données modifiées de SQL Server.

Création de la base de données MSXDBCDC

Une base de données MSXDBCDC doit être créée avant que le service de capture de données modifiées Oracle puisse être défini. Vous ne pouvez créer qu’une seule base de données MSXDBCDC sur une instance SQL Server. La base de données MSXDBCDC est créée lorsque vous préparez une base de données SQL Server pour Oracle CDC. Pour ce faire, utilisez la console de configuration du service Oracle CDC ou exécutez un script de création généré par la console de configuration du service CDC.

Le propriétaire de cette base de données est l'administrateur du service Oracle CDC, qui peut contrôler toutes les instances Oracle CDC hébergées sous l'instance SQL Server.

Voir aussi :

Comment préparer SQL Server pour le CDC

Tables de base de données MSXDBCDC

Cette section décrit les tableaux suivants dans la base de données MSXDBCDC.

dbo.xdbcdc_trace

Cette table stocke les informations de traçage pour le service Oracle de capture de données modifiées (CDC). Les informations stockées dans cette table incluent des modifications d’état notables et des enregistrements de trace.

Le Service CDC Oracle écrit des enregistrements d'erreurs et certains enregistrements d'informations à la fois dans le journal des événements Windows et dans la table de trace. Dans certains cas, la table de trace peut ne pas être accessible, auquel cas les informations d’erreur sont accessibles à partir du journal des événements.

Le code suivant décrit les éléments inclus dans le tableau dbo.xdbcdc_trace .

Élément Descriptif
horodatage Le horodatage UTC exact auquel l’enregistrement de trace a été enregistré.
type Contient l’une des valeurs suivantes.

ERREUR

INFORMATIONS

TRACE
nœud Nom du nœud sur lequel l’enregistrement a été écrit.
statut Code d’état utilisé par la table d’état.
sous_statut Code de sous-état utilisé par la table d’état.
message de statut Message d’état utilisé par la table d’état.
Source Nom du composant Oracle CDC qui a produit l’enregistrement de trace.
données_texte Données de texte supplémentaires pour les cas où l’enregistrement d’erreur ou de trace contient une charge utile textuelle.
données binaires Données binaires supplémentaires pour les cas où l’enregistrement d’erreur ou de trace contient une charge utile binaire.

L’instance Oracle CDC supprime les anciennes lignes de table de trace en fonction de la stratégie de rétention des tables modifiées.

dbo.xdbcdc_databases

Ce tableau répertorie les noms des bases de données du service "CDC" pour Oracle dans l'instance actuelle de SQL Server. Chaque base de données correspond à une instance Oracle CDC. Le service de capture de données modifiées Oracle utilise cette table pour déterminer quelles instances démarrer ou arrêter et quelles instances reconfigurer.

Le tableau suivant décrit les éléments inclus dans le tableau dbo.xdbcdc_databases .

Élément Descriptif
nom Nom de la base de données Oracle dans l’instance SQL Server.
config_version Horodatage (UTC) pour la dernière modification de la table xdbcdc_config de la base de données CDC correspondante ou horodatage (UTC) pour la ligne actuelle de cette table.

Le déclencheur UPDATE applique une valeur de GETUTCDATE() pour cet élément. config_version permet au service de capture de données modifiées d’identifier l’instance de capture de données modifiées qui doit être vérifiée pour la modification de la configuration ou pour l’activation/la désactivation.
cdc_service_name Cet élément détermine quel service de capture de données modifiées Oracle gère la base de données Oracle sélectionnée.
Activé Indique si l’instance Oracle CDC est active (1) ou désactivée (0). Lorsque le service de capture de données modifiées Oracle démarre, seules les instances marquées comme activées (1) sont démarrées.

Remarque : Une instance Oracle CDC peut être désactivée en raison d’une erreur qui ne peut pas être réessayée. Dans ce cas, l’instance doit être redémarrée manuellement une fois l’erreur résolue.

dbo.xdbcdc_services

Ce tableau répertorie les services CDC associés à l’instance SQL Server hôte. Cette table est utilisée par la CDC Designer Console pour déterminer la liste des services CDC configurés pour l’instance SQL Server locale. Il est également utilisé par le service CDC pour s’assurer qu’un seul service Windows en cours d’exécution gère un nom de service Oracle CDC (Change Data Capture) donné.

L’exemple suivant décrit les éléments d’état de capture inclus dans la table dbo.xdbcdc_databases .

Élément Descriptif
cdc_service_name Nom du service de capture de données modifiées Oracle (nom du service Windows).
cdc_service_sql_login Nom de la connexion SQL Server utilisée par le service CDC d'Oracle afin de se connecter à l’instance SQL Server. Un nouvel utilisateur SQL nommé cdc_service est créé et associé à cet identifiant de connexion, puis ajouté en tant que membre des rôles de base de données fixes db_ddladmin, db_datareader et db_datawriter pour chaque base de données CDC gérée par le service.
compteur_de_références Cet élément compte le nombre d'ordinateurs sur lesquels le même Oracle CDC Service est installé. Il est incrémenté avec chaque ajout d'un service Oracle CDC du même nom, et décrémenté lorsqu'un tel service est supprimé. Lorsque le compteur atteint zéro, cette ligne est supprimée.
nœud_de_service_actif Nom du nœud Windows qui gère actuellement le service CDC. Lorsque le service est arrêté correctement, cette colonne a la valeur Null, ce qui indique qu’il n’y a plus de service actif.
battement_cardiaque_service_actif Cet élément effectue le suivi du service CDC actuel pour déterminer s’il est toujours actif.

Cet élément est mis à jour avec l’horodatage UTC de la base de données actuelle pour le service CDC actif à intervalles réguliers. L’intervalle par défaut est de 30 secondes, mais l’intervalle est configurable.

Lorsqu’un service CDC en attente détecte que la pulsation n’a pas été mise à jour une fois l’intervalle configuré passé, le service en attente tente de reprendre le rôle de service CDC actif.
Options Cet élément spécifie les options secondaires, telles que le suivi ou le réglage. Il est écrit sous la forme de nom[=value][ ; ]. La chaîne d’options utilise la même sémantique que la chaîne de connexion ODBC. Si l’option est booléenne (avec la valeur oui/non), la valeur peut inclure le nom uniquement.

trace contient les valeurs possibles suivantes.

vrai

sur

faux

de

<nom de classe>[, nom de classe>]



La valeur par défaut est false.

service_heartbeat_interval est l’intervalle de temps (en secondes) pour que le service met à jour la colonne active_service_heartbeat. La valeur par défaut est 30. La valeur maximale est 3600.

service_config_polling_interval est l’intervalle d’interrogation (en secondes) pour que le service CDC vérifie les modifications de configuration. La valeur par défaut est 30. La valeur maximale est 3600.

sql_command_timeout est le délai d’expiration de commande qui fonctionne avec SQL Server. La valeur par défaut est 1. La valeur maximale est 3600.

Procédures stockées de la base de données MSXDBCDC

Cette section décrit les procédures stockées suivantes dans la base de données MSXDBCDC.

dbo.xcbcdc_reset_db(Nom de la base de données)

Cette procédure efface les données d’une instance de capture de données modifiées Oracle. Il est utilisé :

  • Pour redémarrer la capture des données tout en ignorant les données précédentes, par exemple après la récupération de la base de données source ou après une période d'inactivité où certains journaux de transactions Oracle ne sont pas disponibles.

  • En cas d’altération dans l’état CDC (en particulier dans les données cdc.*tables).

La procédure dbo.xcbcdc_reset_db effectue les tâches suivantes :

  • Arrête l'instance de CDC (si elle est active).

  • Tronque les tables de modification, la table cdc_lsn_mapping et la table cdc_ddl_history .

  • Efface la table cdc_xdbcdc_state .

  • Efface la colonne start_lsn pour chaque ligne du cdc_change_table.

Pour utiliser la procédure dbo.xcbcdc_reset_db , l’utilisateur doit être membre du rôle de base de données db_owner pour la base de données cdc Instance nommée ou autre membre du rôle serveur fixe sysadmin ou serveradmin .

Pour plus d’informations sur les tables CDC, consultez Les bases de données CDC dans le système d’aide dans la console du concepteur CDC.

dbo.xdbcdc_disable_db(dbname)

La procédure dbo.xcbcdc_disable_db effectue la tâche suivante :

  • Supprime l’entrée de la base de données CDC sélectionnée dans la table MSXDBCDC.xdbcdc_databases.

Pour utiliser la procédure dbo.xcbcdc_disable_db , l’utilisateur doit être membre du rôle de base de données db_owner pour que l’instance cdc soit nommée ou membre du rôle serveur fixe sysadmin ou serveradmin .

Pour plus d’informations sur les tables CDC, consultez Les bases de données CDC dans le système d’aide dans la console du concepteur CDC.

dbo.xcbcdc_add_service(svcname,sqlusr)

La procédure dbo.xcbcdc_add_service ajoute une entrée à la table MSXDBCDC.xdbcdc_services et ajoute un incrément d’une à la colonne ref_count pour le nom du service dans la table MSXDBCDC.xdbcdc_services . Lorsque le ref_count est 0, il supprime la ligne.

Pour utiliser la procédure <, l'utilisateur doit être membre du rôle de base de données > pour la base de données de l'instance CDC nommée ou membre du rôle serveur fixe sysadmin ou serveradmin.

dbo.xdbcdc_start(dbname)

La procédure dbo.xdbcdc_start envoie une demande de démarrage au service CDC qui gère l’instance cdc sélectionnée pour démarrer le traitement des modifications.

Pour utiliser la procédure dbo.xcdcdc_start , l’utilisateur doit être membre du rôle de base de données db_owner pour la base de données CDC ou être membre des rôles sysadmin ou serveradmin pour l’instance SQL Server.

dbo.xdbcdc_stop(dbname)

La procédure dbo.xdbcdc_stop envoie une demande d’arrêt au service CDC qui gère l’instance CDC sélectionnée pour arrêter le traitement des changements.

Pour utiliser la procédure dbo.xcdcdc_stop , l’utilisateur doit être membre du rôle de base de données db_owner pour la base de données CDC ou être membre des rôles sysadmin ou serveradmin pour l’instance SQL Server.

Bases de données CDC

Chaque instance de capture de données modifiées Oracle utilisée dans un service CDC est associée à une base de données SQL Server spécifique appelée CDC. Cette base de données SQL Server est hébergée dans l’instance SQL Server associée au service Oracle CDC.

La base de données CDC contient un schéma cdc spécial. Le service de capture de données modifiées Oracle utilise ce schéma avec des noms de tables avec le préfixe xdbcdc_. Ce schéma est utilisé à des fins de sécurité et de cohérence.

L’instance Oracle CDC et les bases de données CDC sont créées à l’aide de la console Oracle CDC Designer. Pour plus d'informations sur les bases de données CDC, consultez la documentation incluse avec votre installation de l'« Oracle CDC Designer Console ».

Utilisation de la ligne de commande pour configurer le service CDC

Vous pouvez utiliser le programme Oracle Change Data Capture Service (xdbcdcsvc.exe) à partir de la ligne de commande. Le programme de service CDC est un fichier exécutable Windows 32 bits/64 bits natif.

Voir également

Guide pratique pour utiliser l’interface de Command-Line du service CDC

Commandes du programme de service

La section décrit les commandes suivantes utilisées pour configurer le service CDC.

Configuration

Utilisez Config pour mettre à jour une configuration du service de capture de données modifiées Oracle à partir d’un script. La commande peut être utilisée pour mettre à jour uniquement des parties spécifiques de la configuration du service CDC (par exemple, seule la chaîne de connexion sans connaître le mot de passe de clé asymétrique). La commande doit être exécutée par un administrateur d’ordinateur. Voici un exemple de commande Config .

"<path>xdbcdcsvc.exe" config  
     <cdc-service-name>  
     [connect= <sql-server-connection-string>]  
     [key= <asym-key-password>]  
     [svcacct= <windows-account> <windows-password>]  
     [sqlacct= <sql-username> <sql-password>]  
  

Où :

cdc-service-name est le nom du service cdc à mettre à jour. Il s’agit d’un paramètre obligatoire.

sql-server-connection-string est la chaîne de connexion à mettre à jour. Si la chaîne de connexion contient des espaces ou des guillemets, elle doit être encapsulée entre guillemets doubles ("). Les guillemets incorporés sont protégés en utilisant les guillemets doubles.

asym-key-password est le mot de passe à mettre à jour.

Windows-account, windows-password sont les informations d’identification du compte Windows pour le service en cours de mise à jour.

sql-username, sql-password sont les informations d’identification d’authentification SQL Server mises à jour. Si sqlacct a à la fois un nom d'utilisateur vide et un mot de passe vide, alors le service Oracle CDC se connecte à SQL Server en utilisant l'authentification Windows.

Remarque : tout paramètre qui contient des espaces ou des guillemets doubles doit être encapsulé avec des guillemets doubles ("). Les guillemets doubles incorporés doivent être doublés (par exemple, pour utiliser « A#B » D comme mot de passe, entrez « A#B » D »).

Créer

Utilisez Create pour créer un service de capture de données modifiées Oracle à partir d’un script. La commande doit être exécutée par un administrateur d’ordinateur. Voici un exemple de commande Create :

"<path>xdbcdcsvc.exe" create  
     <cdc-service-name>  
     [connect= "<sql-server-connection-string>"]  
     [key= <asym-key-password>]  
     [svcacct <windows-account> <windows-password>]  
     [sqlacct <sql-username> <sql-password>]  

Où :

cdc-service-name est le nom du service nouvellement créé. S’il existe déjà un service portant ce nom, le programme retourne une erreur. Vous ne devez pas utiliser de noms longs ou de noms avec des espaces. Les caractères « / » et « \ » ne sont pas valides dans un nom de service. Il s’agit d’un paramètre obligatoire.

sql-server-connection-string est la chaîne de connexion à utiliser pour se connecter à l’instance SQL Server associée au nouveau Service Oracle CDC.

asym-key-password est le mot de passe qui protège la clé asymétrique utilisée pour stocker les informations d’identification d’exploration de données de base de données source.

windows-account, windows-password sont le nom du compte et le mot de passe associés au service de capture de données modifiées Oracle en cours de création.

sql-username, sql-password sont le nom du compte SQL Server et le mot de passe utilisés pour se connecter à l’instance SQL Server. Si ces deux paramètres sont vides, le service CDC pour Oracle se connecte à SQL Server à l’aide de l’authentification Windows.

Remarque : tout paramètre qui contient des espaces ou des guillemets doubles doit être encapsulé avec des guillemets doubles ("). Les guillemets doubles incorporés doivent être doublés (par exemple, pour utiliser « A#B » D comme mot de passe, entrez « A#B » D ».

Supprimer

Utilisez Delete pour supprimer proprement le service CDC Oracle d’un script. Cette commande doit être exécutée par un administrateur d’ordinateur. Voici un exemple de commande Delete .

"<path>xdbcdcsvc.exe" delete  
    <cdc-service-name>  
  

Où :

cdc-service-name est le nom du service cdc à supprimer.

Remarque : tout paramètre qui contient des espaces ou des guillemets doubles doit être encapsulé avec des guillemets doubles ("). Les guillemets doubles incorporés doivent être doublés (par exemple, pour utiliser « A#B » D comme mot de passe, entrez « A#B » D »).

Voir aussi

Guide pratique pour utiliser l’interface de Command-Line du service CDC
Comment préparer SQL Server pour le CDC