Bases de données de capture de données modifiées Oracle

Important

La capture des changements de données pour Oracle d'Attunity est désormais déconseillé. Pour les détails, référez-vous à l'annonce.

Une instance Oracle CDC est associée à une base de données SQL Server par le même nom sur l'instance SQL Server cible. Cette base de données est appelée base de données de capture de données modifiées Oracle (ou base de données CDC).

La base de données CDC est créée et configurée à l'aide de la console du concepteur de capture de données modifiées Oracle et contient les éléments suivants :

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

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

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

  • Un ensemble de tables de modifications et de fonctions de modification d'accès qui sont générées par le mécanisme SQL Server CDC et sont identiques à celles utilisées dans SQL Server CDC standard qui n'est pas fourni par Oracle.

Le schéma cdc n’est initialement accessible qu’aux membres du rôle de base de données fixe dbowner . L'accès aux tables de modifications et aux fonctions de modification est déterminé par le même modèle de sécurité que celui de 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 console du concepteur CDC, mais elle peut également être créée à l'aide d'un script de déploiement de capture de données modifiées qui est généré à l'aide de la console du concepteur CDC. L'administrateur système SQL Server peut modifier les paramètres de la base de données si nécessaire (pour des é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 des tables de base de données et les scripts nécessaires, consultez Utiliser l’Assistant Nouvelle instance.

Rôles de l'utilisateur de base de données CDC

Quand 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_datawriteret db_ddladmin . Si la connexion SQL Server est également associée à l’utilisateur dbo , l’utilisateur cdc_service n’est pas créé.

Cette attribution de rôle permet au service de capture de données modifiées Oracle 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 des tables Oracle de source CDC sont installées, le propriétaire de la base de données CDC peut accorder l'autorisation SELECT des tables miroir et définir des rôles de régulation SQL Server CDC pour contrôler l'accès aux données modifiées.

Tables miroir

Pour chaque table capturée, <schema-name>.<table-name>, dans la base de données source Oracle, une table vide similaire est créée dans la base de données CDC, avec les mêmes noms de schéma et de table. Les tables sources Oracle avec le nom de schéma cdc (ne respectant pas la casse) ne peuvent pas être capturées, car le schéma cdc dans SQL Server est réservé pour SQL Server CDC.

Les tables miroir sont vides ; aucune donnée n'est stockée dans ces dernières. Elles servent à activer l'infrastructure standard SQL Server CDC utilisée par l'instance Oracle CDC. Pour empêcher l'insertion ou la mise à jour des données dans les tables miroir, toutes les opérations UPDATE, DELETE et INSERT sont refusées pour le rôle PUBLIC. Cela garantit qu'elles ne peuvent pas être modifiées.

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 disposer de l'accès select à toutes les colonnes capturées de la table miroir associée (les autorisations d'accès aux tables d'origine Oracle ne permettent pas d'accéder aux tables de modifications dans SQL Server). Pour plus d’informations sur le modèle de sécurité SQL Server , consultez Modèle de sécurité.

De plus, si un rôle de régulation est spécifié lors de la création de l'instance de capture, l'appelant doit également être membre du rôle de régulation spécifié. Les 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 base de données par le biais du rôle PUBLIC, bien que l'accès aux métadonnées retournées soit en général également régulé par le biais de l'accès choisi aux tables sources sous-jacentes et par l'appartenance aux rôles de régulation définis.

Les données modifiées peuvent être lues en appelant les fonctions table spéciales générées par le composant SQL Server CDC lorsqu'une instance de capture est créée. 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 via le composant source Integration Services CDC est soumis aux mêmes règles.

Tables de base de données CDC

Cette section décrit les tables suivantes dans la base de données CDC.

Tables de modifications (_CT)

Les tables de modifications sont créées à partir des tables miroir. Elles contiennent les données modifiées qui sont capturées dans la base de données Oracle. Les tables sont nommées en fonction de la convention suivante :

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

Lorsque la capture est initialement activée pour la table <schema-name>.<table-name>, le nom par défaut de l'instance de capture est <schema-name>_<table-name>. Par exemple, le nom par défaut de l'instance de capture 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 Oracle CDC. Elles sont lues à l'aide de fonctions 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 CDC, consultez Fonctions de capture de données modifiées (Transact-SQL).

cdc.lsn_time_mapping

La table [cdc].[lsn_time_mapping] est générée par le composant SQL Server CDC. Son utilisation dans le cas de capture de données modifiées Oracle est différente de son utilisation normale.

Pour la capture de données modifiées Oracle, les valeurs LSN stockées dans cette table reposent sur la valeur SCN (System Change Number) Oracle associée à la modification. Les 6 premiers octets de la valeur LSN constituent le numéro SCN Oracle d'origine.

En outre, lors de l'utilisation d'Oracle CDC, 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 avec SQL Server CDC standard. Cela garantit que les modifications de l'heure d'été n'affectent pas les données stockées dans lsn_time_mapping.

cdc.xdbcdc_config

Cette table contient les données de configuration de l'instance Oracle CDC. Elle est mise à jour à l'aide de la console du concepteur CDC. Cette table a une seule ligne.

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

Élément Description
version Effectue le suivi de la version de la configuration de l'instance CDC. Elle est mise à 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.
connect_string 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 de connexion Oracle Net, 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 TNS, la chaîne de connexion peut être le nom de la connexion.

Pour plus d’informations sur les chaînes de connexion Oracle, consultez https://go.microsoft.com/fwlink/?LinkId=231153 pour obtenir des informations détaillées sur les chaînes de connexion de base de données Oracle pour le client Oracle Instant qui est utilisée par le service de capture des changements de données Oracle.
use_windows_authentication 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 la connexion à la base de données Oracle. Vous ne pouvez utiliser cette option que si la base de données Oracle est configurée pour utiliser l'authentification Windows.
username Nom de l'utilisateur de la base de données Oracle d'exploration de données de journaux. Requis uniquement si use_windows_authentication = 0.
password Mot de passe de l'utilisateur de la base de données Oracle d'exploration de données de journaux. Requis uniquement si use_windows_authentication = 0.
transaction_staging_timeout Durée, en secondes, pendant laquelle une transaction Oracle non enregistrée est gardée en mémoire avant d’être écrite dans la table cdc.xdbcdc_staged_transactions . La valeur par défaut est 120 secondes.
memory_limit Quantité de mémoire limite, en Mo, qui permet de mettre en cache des données en mémoire. Un paramètre inférieur provoque l’écriture de davantage de transactions dans la table cdc.xdbcdc_staged_transactions . La valeur par défaut est 50 Mo.
options Liste des options au format name[=value][; ] - elle sert à spécifier des options secondaires (par exemple, traçage, paramétrage). Consultez le tableau ci-dessous pour obtenir une description des options disponibles.

Le tableau suivant décrit les options disponibles.

Name Default Min Max statique Description
trace False - - False Les valeurs disponibles sont :

True

False

sur

arrêt
cdc_update_state_interval 10 1 120 False Taille (en kilo-octets) des segments de mémoire alloués pour une transaction (une transaction peut allouer plusieurs segments). Consultez la colonne memory_limit dans la table cdc.xdbcdc_config .
target_max_batched_transactions 100 1 1 000 True Nombre maximal de transactions Oracle qui peuvent être traitées comme une transaction avec mise à jour de tables SQL Server CT.
target_idle_lsn_update_interval 10 0 1 False Intervalle (en secondes) de mise à jour de la table lsn_time_mapping quand les tables capturées n’ont aucune activité.
trace_retention_period 24 1 24*31 False Durée (en heures pour conserver les messages dans la table de trace).
sql_reconnect_interval 2 2 3600 False Délai (en secondes) qui doit s'écouler avant la reconnexion à SQL Server. Cet intervalle est utilisé en plus du délai d’attente de connexion du client SQL Server.
sql_reconnect_limit -1 -1 -1 False Nombre maximal de reconnexions SQL Server . La valeur par défaut -1 signifie que le processus tente de se reconnecter jusqu'à ce qu'il s'arrête.
cdc_restart_limit 6 -1 3600 False Dans la plupart des cas, le service de capture de données modifiées redémarre automatiquement une instance CDC qui s'est terminée de façon anormale. Cette propriété définit après combien d'échecs par heure le service cesse de redémarrer l'instance. La valeur -1 signifie que l'instance doit toujours être redémarrée.

Le service retourne pour redémarrer l'instance après toute mise à jour de la table de configuration.
cdc_memory_report 0 0 1 000 False Si la valeur du paramètre a été modifiée, l'instance CDC imprime son rapport mémoire sur la table de trace.
target_command_timeout 600 1 3600 False Délai d'attente de commande utilisé avec SQL Server.
source_character_set - - - True Peut être défini sur un encodage Oracle spécifique pour être utilisé à la place de la page de code de la base de données Oracle. Cela peut être utile lorsque l'encodage réel que les données caractères utilisent est différent de celui exprimé par la page de codes de la base de données Oracle.
source_error_retry_interval 30 1 3600 False Utilisé avant reprise en cas de plusieurs erreurs, telles qu'une erreur de connexion ou un échec temporaire de synchronisation entre les tables système.
source_prefetch_size 100 1 10000 True Taille du lot de prérécupération.
source_max_tables_in_query 100 1 10000 True Nombre maximal de tables dans la clause WHERE avant le basculement vers la lecture du journal Oracle sans filtrage de table.
source_read_retry_interval 2 1 3600 False Durée pendant laquelle la source attend avant d'essayer de lire les journaux des transactions Oracle sur EOF.
source_reconnect_interval 30 1 3600 False Durée d'attente (en secondes) avant une nouvelle tentative de connexion à la base de données source.
source_reconnect_limit -1 -1 False Nombre maximal de reconnexions à la base de données source. La valeur par défaut -1 signifie que le processus tente de se reconnecter jusqu’à ce qu’il soit arrêté.
source_command_timeout 30 1 3600 False Délai de connexion utilisé avec Oracle.
source_connection_timeout 30 1 3600 False Délai de connexion utilisé avec SQL Server.
trace_data_errors True - - False Propriété booléenne. True indique l’enregistrement des erreurs de conversion de données et de troncation.
CDC_stop_on_breaking_schema_changes False - - False Propriété booléenne. True indique l’arrêt quand une modification avec rupture du schéma est détectée.

False indique la suppression de la table miroir et de l’instance de capture.
source_oracle_home - - False Peut être défini sur un chemin racine Oracle spécifique ou un nom de dossier racine Oracle que l'instance de capture de données modifiées utilisera pour se connecter à Oracle.

cdc.xdbcdc_state

Cette table contient des informations sur l'état persistant de l'instance Oracle CDC. L'état de capture est utilisé dans des scénarios de récupération et de basculement et à des fins de contrôle d'intégrité.

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

Élément Description
status Code d'état actuel de l'instance Oracle CDC active. Décrit l'état actuel de l'instance CDC.
sub_status État de deuxième niveau qui fournit des informations supplémentaires sur l'état actuel.
active Valeur booléenne qui peut être :

0: le processus d’instance Oracle CDC n’est pas actif.

1: le processus d’instance Oracle CDC est actif.
error Valeur booléenne qui peut être :

0: le processus d’instance Oracle CDC n’est pas dans un état d’erreur.

1: l’instance Oracle CDC est dans un état d’erreur.
status_message Chaîne qui fournit une description de l'erreur ou de l'état.
timestamp Horodateur avec l'heure (UTC) à laquelle l'état de capture a été mis à jour pour la dernière fois.
active_capture_node Nom de l'hôte (l'hôte peut être un nœud dans un cluster) qui exécute actuellement le service de capture de données modifiées Oracle et l'instance Oracle CDC (qui traite les journaux des transactions Oracle).
last_transaction_timestamp Horodateur avec l'heure (UTC) à laquelle la dernière transaction a été écrite dans les tables de modifications.
last_change_timestamp Horodateur avec l'heure (UTC) à laquelle l'enregistrement de modification le plus récent a été lu dans le journal des transactions Oracle source. Cet horodateur aide à identifier la latence actuelle du processus de capture de données modifiées.
transaction_log_head_cn Numéro de modification (CN) le plus récent lu dans le journal des transactions Oracle.
transaction_log_tail_cn Numéro de modification (CN) dans le journal des transactions Oracle où 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 (CN) connu dans la base de données source.
software_version Version interne du service de capture de données modifiées Oracle.
completed_transactions Nombre de transactions traitées depuis la dernière réinitialisation CDC.
written_changes Nombre d'enregistrements de modification écrits dans les tables de modifications SQL Server .
read_changes Nombre d'enregistrements de modification lus dans le journal des transactions Oracle source.
staged_transactions Nombre de transactions actives intermédiaires 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'erreur, les modifications notables d'état et les enregistrements de trace. Les informations d’erreur sont également écrites dans le journal des événements Windows pour garantir 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 Description
timestamp Horodateur UTC exact de l'enregistrement de trace.
type Contient l'une des valeurs suivantes :

ERROR

INFO

TRACE
node Nom du nœud sur lequel l'enregistrement a été écrit.
status Code d'état utilisé par la table d'état.
sub_status Code de sous-état utilisé par la table d'état.
status_message Message d'état utilisé par la table d'état.
data Informations supplémentaires pour les cas où l'erreur ou l'enregistrement de trace contient une charge utile (par exemple, un enregistrement de journal endommagé).

cdc.xdbcdc_staged_transactions

Cette table stocke les enregistrements de modification des transactions de grande taille ou longues jusqu'à ce que l'événement de validation ou de restauration de transaction soit capturé. Le service de capture de données modifiées Oracle classe les enregistrements de journal capturés par heure de validation de transaction, puis par ordre chronologique pour chaque transaction. Les enregistrements de journaux pour la même transaction sont stockés en mémoire jusqu'à ce que la transaction se termine, puis sont écrits dans la table de modifications cible ou ignorés (en cas de restauration). Comme il existe une quantité limitée de mémoire disponible, les grandes transactions sont écrites dans la table cdc.xdbcdc_staged_transactions jusqu’à ce que la transaction soit terminée. Les transactions sont également écrites dans la table de mise en lots lorsqu'elles s'exécutent longtemps. Par conséquent, lorsque l'instance Oracle CDC est redémarrée, les anciennes modifications n'ont pas besoin d'être relues dans les journaux des transactions Oracle.

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

Élément Description
transaction_id Identificateur unique de la transaction intermédiaire.
seq_num Numéro de la ligne xcbcdc_staged_transactions pour la transaction active (commence par 0).
data_start_cn Numéro de modification (CN) pour la première modification des données de cette ligne.
data_end_cn Numéro de modification (CN) pour la dernière modification des données de cette ligne.
data Modifications intermédiaires pour la transaction sous forme d'un objet BLOB.

Voir aussi

Concepteur de capture de données modifiées pour Oracle par Attunity