Partager via


Bases de données Oracle CDC

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 d'Oracle CDC est associée à une base de données SQL Server du même nom sur l’instance SQL Server cible. Cette base de données est appelée base de données Oracle CDC (ou base de données CDC).

La base de données CDC est créée et configurée à l’aide de la console Oracle CDC Designer et contient les éléments suivants :

  • Schéma cdc créé en activant la base de données pour SQL Server CDC.

  • Ensemble de tables cdc.xdbcdc_xxxx utilisées par l’instance CDC Oracle.

  • Ensemble de tables miroir vides avec les définitions des tables capturées dans la base de données Oracle source tuphe.

  • Ensemble de tables de modifications et fonctions d'accès aux modifications générées par le mécanisme CDC de SQL Server, identiques à celles utilisées dans le CDC SQL Server standard, non-Oracle.

Le cdc schéma est initialement accessible uniquement aux membres du rôle de base de données fixe dbowner . L’accès aux tables de modification et aux fonctions de suivi des modifications est déterminé par le même modèle de sécurité que le SQL Server CDC. Pour plus d’informations sur le modèle de sécurité, consultez Modèle de sécurité.

Création de la base de données CDC

Dans la plupart des cas, la base de données CDC est créée à l’aide de la CDC Designer Console, mais elle peut également être créée avec un script de déploiement CDC généré à l’aide de la CDC Designer Console. L’administrateur système SQL Server peut modifier les paramètres de base de données si nécessaire (pour les éléments tels que le stockage, la sécurité ou la disponibilité).

Pour plus d'informations sur l'utilisation de la Console du Concepteur CDC pour créer les tables de base de données et les scripts nécessaires, consultez Utilisez l'Assistant Nouvelle instance.

Rôles d’utilisateur de base de données CDC

Lorsqu’une base de données CDC est créée et activée pour la capture de données modifiées, un utilisateur de base de données appelé cdc_service est créé dans la base de données CDC et est associé à la connexion SQL Server avec laquelle le service de capture de données modifiées Oracle a été configuré. Cet utilisateur est membre des rôles de base de données db_datareader, db_datawriter et db_ddladmin. Si la connexion SQL Server est également associée à l’utilisateur dbo , la cdc_service n’est pas créée.

Cette attribution de rôle permet au service Oracle CDC de mettre à jour les tables dans le schéma cdc avec des données capturées et des informations de contrôle.

Lorsqu’une base de données CDC est créée et que les tables sources Oracle de Capture de Données de Changement (CDC) sont configurées, le propriétaire de la base de données CDC peut accorder l’autorisation SELECT sur les tables miroirs et définir des rôles de contrôle pour la Capture de Données de Changement sur SQL Server afin de réguler qui a accès aux données modifiées.

Tables miroirs

Pour chaque table collectée, <nom_schéma>.<nom_table>, dans la base de données source Oracle, une table vide similaire est créée dans la base de données CDC, avec le même schéma et le même nom de table. Les tables sources Oracle du schéma cdc (insensible à la casse) ne peuvent pas être capturées, car le schéma cdc dans SQL Server est réservé pour le Change Data Capture de SQL Server.

Les tables miroirs sont vides ; aucune donnée n’est stockée dans ces tables. Ils sont utilisés pour activer l'infrastructure standard de capture de modifications (CDC) de SQL Server, qui est employée par l'instance CDC Oracle. Pour empêcher l’insertion ou la mise à jour des données dans les tables miroirs, toutes les opérations UPDATE, DELETE et INSERT sont refusées pour PUBLIC. Cela garantit qu’ils ne peuvent pas être modifiés.

Accès aux données modifiées

En raison du modèle de sécurité SQL Server utilisé pour accéder aux données modifiées associées à une instance de capture, l’utilisateur doit avoir select accès à toutes les colonnes capturées de la table miroir associée (les autorisations d’accès aux tables Oracle d’origine ne fournissent pas l’accès aux tables de modification dans SQL Server). Pour plus d’informations sur le modèle de sécurité SQL Server, consultez Modèle de sécurité.

En outre, si un rôle de filtrage est spécifié lors de la création de l’instance de capture, l’appelant doit également être membre du rôle de filtrage spécifié. D’autres fonctions de capture de données modifiées générales pour accéder aux métadonnées sont accessibles à tous les utilisateurs de la base de données par le biais du rôle PUBLIC, bien que l’accès aux métadonnées retournées soit généralement contrôlé à l’aide de l’accès sélectionné aux tables sources sous-jacentes et par l’appartenance à n’importe quel rôle de regroupement défini.

Les données modifiées peuvent être lues en appelant des fonctions spéciales basées sur des tables générées par le composant CDC SQL Server lors de la création d’une instance de capture. Pour plus d’informations sur cette fonction, consultez Fonctions de capture de données modifiées (Transact-SQL).

L’accès aux données CDC par le biais du composant source CDC Integration Services est soumis aux mêmes règles.

Tables de base de données CDC

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

Modifier des tables (_CT)

Les tables de modification sont créées à partir des tables miroirs. Ils contiennent les données modifiées capturées à partir de la base de données Oracle. Les tables sont nommées conformément à la convention suivante :

[cdc].[<instance-de-capture>_CT]

Lorsque la capture est initialement activée pour la table <schema-name>.<table-name>, le nom de l’instance de capture par défaut est <schema-name>_<table-name>. Par exemple, le nom d’instance de capture par défaut pour la table Oracle HR.EMPLOYEES est HR_EMPLOYEES et la table de modifications associée est [cdc]. [HR_EMPLOYEES_CT]

Les tables de capture sont écrites par l’instance de capture de données modifiées Oracle. Ils sont lus à l’aide de fonctions à valeur de table spéciales générées par SQL Server lorsque l’instance de capture est créée. Par exemple : fn_cdc_get_all_changes_HR_EMPLOYEES. Pour plus d’informations sur ces fonctions de CDC, consultez Fonctions de capture de données modifiées (Transact-SQL).

cdc.lsn_time_mapping

Le [cdc].[ lsn_time_mapping] table est générée par le composant CDC SQL Server. Son utilisation dans le cas d’Oracle CDC est différente de son utilisation normale.

Pour oracle CDC, les valeurs LSN stockées dans cette table sont basées sur la valeur SCN (Oracle System Change Number) associée à la modification. Les 6 premiers octets de la valeur LSN sont le numéro Oracle SCN d’origine.

En outre, lors de l’utilisation de la capture de données modifiées Oracle, les colonnes de temps (tran_begin_time et tran_end_time) stockent l’heure UTC de la modification plutôt que l’heure locale comme il le fait avec la capture de données modifiées SQL Server standard. Cela garantit que les modifications apportées à l’heure d’été n’affectent pas les données stockées dans le lsn_time_mapping.

cdc.xdbcdc_config

Ce tableau contient les données de configuration de l’instance de capture de données modifiées Oracle. Elle est mise à jour à l’aide de la CDC Designer Console. Cette table ne comporte qu’une seule ligne.

Le tableau suivant décrit les colonnes de la table cdc.xdbcdc_config .

Élément Descriptif
Version Cela permet de suivre la version de la configuration de l'instance CDC. Il est mis à jour chaque fois que la table est mise à jour et chaque fois qu’une nouvelle instance de capture est ajoutée ou qu’une instance de capture existante est supprimée.
chaîne_de_connexion Chaîne de connexion Oracle. Voici un exemple de base :

<server>:<port>/<instance> (par exemple, erp.contoso.com:1521/orcl).

La chaîne de connexion peut également spécifier un descripteur Oracle Net Connect, par exemple (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=erp.contoso.com) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=orcl))).

Si vous utilisez un serveur d’annuaire ou des noms tnsnames, la chaîne de connexion peut être le nom de la connexion.

Pour en savoir plus sur les chaînes de connexion Oracle, consultez le Guide du programmeur de l’interface d’appel, qui fournit des informations détaillées sur les chaînes de connexion de base de données Oracle pour l'Oracle Instant Client utilisé par l'Oracle CDC Service.
utiliser_authentification_windows Valeur booléenne qui peut être :

0 : Un nom d’utilisateur et un mot de passe Oracle sont fournis pour l’authentification (valeur par défaut)

1 : l’authentification Windows est utilisée pour se connecter à la base de données Oracle. Vous pouvez utiliser cette option uniquement si la base de données Oracle est configurée pour fonctionner avec l’authentification Windows.
nom d'utilisateur Le nom de l'utilisateur de la base de données Oracle pour l'exploration des journaux. Cela n’est obligatoire que si use_windows_authentication = 0.
mot de passe Mot de passe de l’utilisateur de base de données Oracle d’exploration de journaux d’exploration de données. Cela n’est obligatoire que si use_windows_authentication = 0.
délai_d'attente_de_mise_en_scene_de_transaction La durée, exprimée en secondes, pendant laquelle une transaction Oracle non validée est conservée en mémoire avant d’être écrite dans la table cdc.xdbcdc_staged_transactions. La valeur par défaut est de 120 secondes.
limite_de_mémoire Limite de la quantité de mémoire, en Mo, qui peut être utilisée pour la mise en cache des données en mémoire. Un paramètre inférieur entraîne l’écriture d’une transaction supplémentaire dans la table cdc.xdbcdc_staged_transactions . La valeur par défaut est 50 Mo.
Options Liste des options sous la forme de nom[=valeur][ ; ] : elle est utilisée pour spécifier des options secondaires (par exemple, le suivi, le réglage). Consultez le tableau ci-dessous pour obtenir une description des options disponibles.

Le tableau suivant décrit les options disponibles.

Nom Par défaut Min Max Statique Descriptif
trace Faux - - Faux Les valeurs disponibles sont les suivantes :

Vrai

Faux

sur

inactif
intervalle_de_mise_à_jour_état_cdc 10 1 120 Faux Taille (en Kbytes) des blocs de mémoire alloués pour une transaction (une transaction peut allouer plusieurs blocs). Consultez la colonne memory_limit dans cdc.xdbcdc_config table.
nombre_maximal_cible_de_transactions_groupées 100 1 1 000 Vrai Nombre maximal de transactions Oracle qui peuvent être traitées comme une seule transaction dans la mise à jour des tables CT de SQL Server.
intervalle_de_mise_à_jour_lsn_inactif_cible 10 0 1 Faux Intervalle (en secondes) pour la mise à jour de la table lsn_time_mapping lorsque les tables capturées n’ont aucune activité.
période_de_rétention_des_traces Vingt-quatre 1 24*31 Faux Durée (en heures pour conserver les messages dans la table de trace).
interval de reconnexion SQL 2 2 3600 Faux Durée d’attente (en secondes) avant de se reconnecter à SQL Server. Cet intervalle est utilisé en plus du délai de connexion du client SQL Server.
sql_reconnect_limit -1 -1 -1 Faux Nombre maximal de reconnexions SQL Server. La -1 par défaut signifie que le processus tente de se reconnecter jusqu’à ce qu’il s’arrête.
cdc_limite_redémarrage 6 -1 3600 Faux Dans la plupart des cas, le service CDC redémarre automatiquement une instance CDC anormalement terminée. Cette propriété définit après combien d’échecs par heure le service s'arrête avant de redémarrer l’instance. La valeur -1 signifie que l’instance doit toujours être redémarrée.

Le service retourne redémarrer l’instance après toute mise à jour de la table de configuration.
cdc_rapport_mémoire 0 0 1 000 Faux Si la valeur du paramètre a été modifiée, l’Instance CDC imprime le rapport de mémoire sur la table de traces.
délai d'attente de commande cible 600 1 3600 Faux Délai d’expiration des commandes avec SQL Server.
jeu_de_caractères_source - - - Vrai Peut être défini sur un encodage Oracle spécifique à utiliser au lieu de la page de codes de base de données Oracle. Cela peut être utilisé lorsque l’encodage réel que les données de caractères utilisent est différent de celui exprimé par la page de codes de base de données Oracle.
intervalle_de_réessai_d'erreur_source 30 1 3600 Faux Utilisé avant de réessayer sur plusieurs erreurs telles qu’une erreur de connexion ou un manque temporaire de synchronisation entre les tables système.
taille_du_prefetch_source 100 1 10 000 Vrai Taille du lot de prérécupération.
source_max_tables_in_query 100 1 10 000 Vrai Nombre maximal de tables dans la clause WHERE avant de passer à la lecture du journal Oracle sans filtrage de table.
intervalle_de_nouvelle_lecture_source 2 1 3600 Faux Durée d’attente de la source avant d’essayer de lire à nouveau les journaux des transactions Oracle sur EOF.
intervalle_de_reconnexion_source 30 1 3600 Faux Durée (en secondes) d’attente avant d’essayer de se reconnecter à la base de données source.
limite_de_reconnexion_source -1 -1 Faux Nombre maximal de reconnexions de la base de données source. La -1 par défaut signifie que le processus tente de se reconnecter jusqu’à ce qu’il soit arrêté.
source_command_timeout 30 1 3600 Faux Délai d’expiration de la connexion avec Oracle.
expiration_du_temps_de_connexion_source 30 1 3600 Faux Délai d’expiration de connexion avec SQL Server.
erreurs_de_tracé_de_données Vrai - - Faux Propriété booléenne. True indique de consigner les erreurs de conversion et de troncation des données.
Arrêt_CDC_sur_les_modifications_du_schéma_invalidantes Faux - - Faux Propriété booléenne. La valeur True indique d'arrêter lors de la détection d'une modification de schéma incompatible.

False indique de supprimer la table miroir et l’instance de capture.
source_oracle_home - - Faux Peut être défini sur un chemin Oracle Home spécifique ou un nom Oracle Home que l'instance CDC utilisera pour se connecter à Oracle.

cdc.xdbcdc_state

Ce tableau contient des informations sur l’état persistant de l’instance de capture de données modifiées Oracle. L’état de capture est utilisé dans les scénarios de récupération et de basculement et pour la surveillance de l’intégrité.

Le tableau suivant décrit les colonnes de la table cdc.xdbcdc_state .

Élément Descriptif
statut Code d’état actuel de l’instance de capture de données modifiées Oracle actuelle. Le statut décrit l’état actuel pour le CDC.
sous_statut État de second niveau qui fournit des informations supplémentaires sur l’état actuel.
Actif Valeur booléenne qui peut être :

0 : Le processus Oracle DBCDC Instance n’est pas actif.

1 : Le processus Oracle CDC est actif.
erreur Valeur booléenne qui peut être :

0 : Le processus d’instance de capture de données Oracle n’est pas dans un état d’erreur.

1 : l’instance Oracle CDC est dans un état d’erreur.
message de statut Chaîne qui fournit une description de l’erreur ou de l’état.
horodatage L'horodatage indiquant l'heure (UTC) de la dernière mise à jour de l'état de capture.
nœud_de_capture_actif Nom de l’hôte (l’hôte peut être un nœud sur un cluster) qui exécute actuellement le service Oracle CDC et l’instance Oracle CDC (qui traite les journaux des transactions Oracle).
horodatage_dernière_transaction Horodatage indiquant l’heure (UTC) de la dernière transaction qui a été enregistrée dans les tables de modification.
horodatage_dernière_modification Horodatage indiquant l'heure (UTC) à laquelle l'enregistrement de la modification la plus récente a été lu à partir du journal des transactions de l'Oracle source. Cet horodatage permet d’identifier la latence actuelle du processus cdc.
transaction_log_head_cn Numéro de modification (CN) le plus récent lu dans le journal des transactions Oracle.
queue_de_journal_de_transaction_cn Numéro de modification (CN) dans le journal des transactions Oracle dans lequel l’instance Oracle CDC se repositionne en cas de redémarrage ou de récupération.
current_cn Numéro de modification (CN) le plus récent connu dans la base de données source.
version du logiciel Version interne du service Oracle de capture des modifications de données.
transactions terminées Nombre de transactions traitées depuis la dernière réinitialisation de la CDC.
modifications écrites Nombre d’enregistrements de modification écrits dans les tables de modification SQL Server.
lire les changements Nombre d’enregistrements de modification lus dans le journal des transactions Oracle source.
transactions planifiées Nombre de transactions actuellement actives mises en attente dans la table cdc.xdbcdc_staged_transactions.

cdc.xdbcdc_trace

Cette table contient des informations sur le fonctionnement de l’instance de capture de données modifiées. Les informations stockées dans cette table incluent les enregistrements d’erreurs, les modifications d’état notables et les enregistrements de trace. Les informations d’erreur sont également écrites dans le journal des événements Windows pour s’assurer que les informations sont disponibles si la table cdc.xcbcdc_trace n’est pas disponible.

Le tableau suivant décrit les colonnes de la table cdc.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.
données Données supplémentaires pour les cas où l’enregistrement d’erreur ou de trace contient une charge utile (par exemple, un enregistrement de journal endommagé).

cdc.xdbcdc_staged_transactions

Cette table stocke les enregistrements de modifications pour les transactions volumineuses ou longues jusqu'à ce que l'événement de validation ou d'annulation de la transaction soit capturé. Le service Oracle CDC organise les enregistrements capturés du journal par heure de confirmation des transactions, puis par ordre chronologique pour chaque transaction. Les enregistrements de journal pour la même transaction sont stockés en mémoire jusqu’à la fin de la transaction, puis sont écrits dans la table de modifications cible ou ignorés (en cas de restauration). Étant donné qu’il existe une quantité limitée de mémoire disponible, les transactions volumineuses sont écrites dans la table cdc.xdbcdc_staged_transactions jusqu’à ce que la transaction soit terminée. Les transactions sont écrites dans la table intermédiaire lorsque leur exécution dure longtemps. Par conséquent, lorsque l’instance de capture de données modifiées Oracle est redémarrée, les anciennes modifications n’ont pas besoin d’être réécrites à partir des journaux des transactions Oracle.

Le tableau suivant décrit les colonnes de la table cdc.xdbcdc_staged_transactions .

Élément Descriptif
identifiant_de_transaction Identificateur unique de la transaction en cours de préparation.
numéro_de_séquence Nombre de lignes xcbcdc_staged_transactions pour la transaction actuelle (à partir de 0).
data_start_cn Numéro de modification (CN) pour la première modification des données de cette ligne.
fin_données_cn Numéro de modification (CN) pour la dernière modification des données de cette ligne.
données Modifications planifiées de la transaction sous la forme d’un objet BLOB.

Voir aussi

Concepteur de capture des modifications de données pour Oracle par Attunity