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 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
cdccréé 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)
- cdc.lsn_time_mapping
- cdc.xdbcdc_config
- cdc.xdbcdc_state
- cdc.xdbcdc_trace
- cdc.xdbcdc_staged_transactions
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