Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
Une instance Oracle CDC mine les modifications d’une base de données source Oracle unique (un cluster Oracle RAC est considéré comme une base de données unique) et écrit les modifications validées apportées aux tables modifiées dans une base de données CDC dans l’instance SQL Server cible.
Une instance de capture de données modifiées conserve son état dans une table système appelée cdc.xdbcdc_state. Cette table peut être interrogée à tout moment pour trouver l'état de l'instance de capture de données modifiées. Pour plus d’informations sur la table cdc.xdbcdc_state, consultez cdc.xdbcdc_state.
Le tableau ci-dessous décrit les états de l’instance cdc dans la table xdbcdc_state.
Pour chaque état, les deux indications suivantes sont indiquées pour les colonnes correspondantes dans la table cdc.xdbcdc_state :
L’instance n’est pas active (aucun processus Windows ne le gère actuellement). Si la valeur de la colonne active est 1, cela signifie qu'un sous-processus du service Oracle CDC, qui gère cette instance Oracle CDC spécifique, est en cours d'exécution.
Si la valeur de colonne d’erreur est 0, l’instance Oracle CDC n’est pas dans une condition d’erreur. Si la valeur de colonne d’erreur est 1, une erreur empêche l’instance Oracle CDC de traiter les modifications.
Si la colonne d’erreur a la valeur 1 et que la colonne active a aussi la valeur 1, une erreur récupérable est en train de se produire pour l’Instance CDC Oracle, qui peut être résolue automatiquement. Si la colonne d’erreur a la valeur 1 et que la colonne active a la valeur 0, dans la plupart des cas, une solution de contournement manuelle peut être nécessaire pour résoudre le problème avant de pouvoir reprendre le traitement.
Le tableau suivant décrit les différents codes d'état que l'instance CDC Oracle peut signaler dans sa table d'état.
| Statut | Code d’état actif | Code d’état d’erreur | Descriptif | Sous-état |
|---|---|---|---|---|
| ABORTED | 0 | 1 | L'instance Oracle CDC ne s'exécute pas. Le sous-état ABORTED indique que l'instance Oracle CDC était ACTIVE, puis s'est arrêtée de façon inattendue. | Le sous-état ABORTED est établi par l'instance principale de service de capture de données modifiées Oracle lorsqu'elle détecte que l'instance Oracle CDC ne s'exécute pas alors que son état est ACTIVE. |
| ERREUR | 0 | 1 | L'instance Oracle CDC ne s'exécute pas. L'état ERROR indique que l'instance de capture de données modifiées était ACTIVE, mais a rencontré une erreur qui n'est pas récupérable et s'est désactivée elle-même. | MISCONFIGURED : une erreur de configuration irrécupérable a été détectée. MOT DE PASSE OBLIGATOIRE : aucun mot de passe n’est défini pour le Concepteur de capture de données modifiées pour Oracle par Attunity ou le mot de passe configuré n’est pas valide. Cela peut être dû à une modification du mot de passe de clé asymétrique du service. |
| RUNNING | 1 | 0 | L'instance de capture de données modifiées s'exécute et traite les enregistrements de modification. | IDLE : Tous les enregistrements de modification ont été traités et stockés dans les tables de contrôle cible (_CT). Il n’existe aucune transaction active avec les tables de contrôle. TRAITEMENT : il existe des enregistrements de modification en cours de traitement qui ne sont pas encore écrits dans les tables de contrôle (_CT). |
| STOPPED | 0 | 0 | L'instance CDC n'est pas en cours d'exécution. | Le sous-état STOP indique que l’instance CDC était ACTIVE, puis a été arrêtée correctement. |
| SUSPENDED | 1 | 1 | L’instance cdc est en cours d’exécution, mais le traitement est suspendu en raison d’une erreur récupérable. | DÉCONNECTÉ : Impossible d’établir la connexion avec la base de données Oracle source. Le traitement reprend une fois la connexion restaurée. STORAGE : le stockage est saturé. Le traitement reprend lors de la disponibilité du stockage. Dans certains cas, cet état peut ne pas apparaître, car la table d’état ne peut pas être mise à jour. LOGGER : L’enregistreur d’événements est connecté à Oracle, mais il ne peut pas lire les journaux des transactions Oracle en raison d’un problème temporaire. |
| ERREUR DE DONNÉES | x | x | Ce code d’état est utilisé uniquement pour la table xdbcdc_trace . Elle n’apparaît pas dans la table xdbcdc_state . Les enregistrements de trace avec cet état indiquent un problème avec un enregistrement de journal Oracle. L’enregistrement de journal incorrect est stocké dans la colonne data en tant que BLOB. | BADRECORD : Impossible d'analyser l'enregistrement du journal joint. CONVERT-ERROR : Les données de certaines colonnes n’ont pas pu être converties en colonnes cibles dans la table de capture. Cet état peut apparaître uniquement si la configuration spécifie que les erreurs de conversion doivent produire des enregistrements de trace. |
Étant donné que l'état du service de capture de données modifiées Oracle est stocké dans SQL Server, il peut y avoir des cas où la valeur d'état dans la base de données ne reflète pas l'état réel du service. Le scénario le plus courant est le moment où le service perd sa connexion à SQL Server et ne peut pas le reprendre (pour une raison quelconque). Dans ce cas, l’état stocké dans cdc.xdbcdc_state devient obsolète. Si l’horodatage de la dernière mise à jour (UTC) est plus d’une minute, l’état est probablement obsolète. Dans ce cas, utilisez l’Observateur d’événements Windows pour trouver des informations supplémentaires sur l’état du service.
Gestion des erreurs
Cette section décrit comment le service de capture de données modifiées Oracle gère les erreurs.
Exploitation forestière
Le service Oracle CDC crée des informations d’erreur dans l’un des emplacements suivants.
Le journal des événements Windows, qui est utilisé avec la journalisation des erreurs et pour indiquer les événements de cycle de vie de service de capture de données modifiées Oracle (démarrage, arrêt, reconnexion à l'instance SQL Server cible).
La table MSXDBCDC.dbo.xdbcdc_trace est utilisée pour la journalisation et le suivi généraux par le processus principal du service Oracle CDC.
La table <cdc-database>.cdc.xdbcdc_trace, utilisée pour la journalisation et le suivi généraux par les instances Oracle CDC. Cela signifie que les erreurs liées à une instance Oracle CDC spécifique sont journalisées dans la table de trace de cette instance.
Les informations sont enregistrées par le service de capture de données modifiées Oracle lorsque le service :
Est démarré ou arrêté par le gestionnaire de contrôle de service.
Impossible de se connecter à l’instance SQL Server associée et lorsqu’elle établit correctement une connexion après un échec.
rencontre une erreur lors du démarrage des instances de service de capture de données modifiées Oracle ;
détecte qu'une instance Oracle CDC s'est interrompue ;
Rencontre une erreur inattendue.
Les informations sont consignées par l’instance CDC lorsque celle-ci :
Est activé ou désactivé.
Rencontre une erreur.
récupère à partir d'une erreur récupérable.
La table de trace est également utilisée pour enregistrer des informations détaillées de traçage pour le dépannage.
Gestion des erreurs de connexion à la source Oracle
Le service de capture de données modifiées Oracle a besoin d'une connexion permanente à la base de données Oracle source. De nombreuses erreurs de connexion qui ne sont pas liées à la configuration du service (telles que les erreurs réseau) sont considérées comme temporaires. Par conséquent, si le service de capture de données modifiées Oracle ne peut pas établir de connexion à la base de données Oracle (lors du démarrage ou pendant le travail suivant une déconnexion), le service change son état en SUSPENDED/DISCONNECTED et entre dans une boucle de tentatives où la connexion est retentée à intervalles réguliers. Lorsque la connexion est rétablie, le traitement se poursuit.
D’autres types d’erreurs de connexion ne sont pas temporaires (par exemple, les informations d’identification incorrectes, les privilèges insuffisants et l’adresse de base de données incorrecte). Lorsque ces erreurs se produisent, l'état du service de capture de données modifiées Oracle est défini à ERROR/MISCONFIGURED ou à ERROR/PASSWORD-REQUIRED et le service est désactivé. Lorsque l’utilisateur corrige l’erreur sous-jacente, l’Instance CDC Oracle doit être réactivée manuellement pour que le traitement puisse reprendre.
Lorsqu’il n’est pas clair si l’erreur est temporaire, il est préférable de supposer qu’elle est temporaire.
Gestion des erreurs de connexion SQL Server cibles
Le service de capture de données modifiées Oracle a besoin d'une connexion permanente à l'instance SQL Server cible. Cette connexion est utilisée pour :
Vérifiez qu’il n’existe aucun autre service du même nom qui fonctionne actuellement avec cette instance SQL Server.
Vérifier quelle instance Oracle CDC est activée ou désactivée et démarrer (ou arrêter) son sous-processus.
Lorsque le service établit une connexion avec l’instance sql Server cible et vérifie qu’il s’agit du seul service de capture de données modifiées Oracle qui fonctionne, il peut vérifier quelles instances de capture de données modifiées Oracle sont activées et démarrer leurs processus de gestion (par la suite, le service arrête ces processus lorsqu’ils sont désactivés). Les instances Oracle CDC utilisent leurs connexions SQL Server pour utiliser la base de données CDC de l'instance Oracle CDC.
La façon dont les erreurs sont gérées lorsque la connexion au serveur SQL Server cible échoue varie selon que les erreurs sont temporaires.
Pour les erreurs non temporaires connues (telles que les informations d’identification incorrectes, les privilèges insuffisants, les informations de connexion incorrectes), le service enregistre une erreur dans le journal des événements Windows et s’arrête (il ne peut pas écrire dans la table de trace, car il ne peut pas se connecter à SQL Server). Dans ce cas, l'utilisateur doit résoudre l'erreur et redémarrer le service Windows de capture de données modifiées Oracle.
Pour les erreurs temporaires et les erreurs inattendues, l’opération est retentée plusieurs fois et si l’échec persiste pendant une période importante, le service CDC arrête ses sous-processus d’instance de capture de données modifiées et revient à sa tentative de connexion initiale (à ce stade, un service de capture de données modifiées Oracle sur un autre ordinateur peut avoir déjà pris le contrôle du service CDC nommé).
Gestion des erreurs complètes de stockage SQL Server cible
Lorsque le service de capture de données modifiées Oracle détecte qu’il ne peut pas insérer de nouvelles données modifiées dans la base de données CDC SQL Server cible, il écrit un avertissement dans le journal des événements et tente d’insérer un enregistrement de trace (bien que cela puisse échouer pour la même raison). Il retente ensuite l’opération dans un intervalle spécifique jusqu’à ce qu’elle réussisse.
Gestion des erreurs Oracle CDC
L’instance Oracle CDC lit le journal des transactions Oracle et les traite. Si le traitement CDC rencontre une erreur, il apparaît dans la table cdc.xdbcdc_state et l’utilisateur doit intervenir manuellement selon l’erreur signalée.
Par exemple, l’instance CDC Oracle peut ne pas être active pendant une durée prolongée et les journaux de transactions Oracle nécessaires ne sont plus disponibles. Dans ce cas, l’administrateur de base de données Oracle doit restaurer les journaux requis pour que l'instance CDC Oracle reprenne le traitement.
Gestion des échecs inattendus d’instance Oracle CDC
Le service CDC Oracle surveille les sous-processus de son instance CDC. Lorsqu'un sous-processus d'instance de capture de données modifiées s'interrompt, le service de capture de données modifiées le désactive dans la table MSXDBCDC.dbo.xdbcdc_databases et met à jour l'état cdc.xdbcdc_state vers ABORTED. Dans ce cas, la boîte de dialogue Rapport d’erreurs Windows standard est utilisée pour signaler cette erreur pour une analyse plus approfondie.