Journal des transactions de SQL augmente lorsque vous utilisez la Capture de données modifiées pour Oracle par Attunity

Symptômes

Considérez le scénario suivant :

  • Vous utilisez SQL Server 2017 sur Windows, Microsoft SQL Server 2016, 2012, 2014 ou de Capture de données modifiées pour Oracle par Attunity.

  • Vous créez une instance de CDC pour capturer les modifications des tables de base de données Oracle.

  • Les valeurs de capture de modification sont stockées dans les bases de données SQL Server Modification capture.

  • Le journal des transactions sur la base de données SQL Server augmente et les transactions ne sont pas marquées pour la troncature comme les modifications de données sont capturées.

Dans ce scénario, la croissance du fichier journal des transactions SQL Server de base de données s’accumulent et occupe trop d’espace disque au fil du temps.

 

Cause

Lors de la modification de Capture de données pour les instances Oracle sont configurés, la base de données SQL qui reçoit les données de modification est ont mis en miroir tables, avec des transactions marquées pour la réplication. Ce problème se produit car le CDC pour Oracle s’appuie sur des procédures stockées du système sous-jacent qui ressemblent à ceux qui sont utilisés dans le CDC de SQL Server. Toutefois, car aucune réplication SQL CDC n’est impliqué CDC pour Oracle est utilisé seul, il n’existe aucun lecteur de journal pour effacer les transactions qui sont marquées pour la réplication. Car la transaction n’a pas à être répliqués dans SQL Server, il est recommandé de marquer manuellement les transactions distribuées à l’aide de la solution de contournement est décrite plus loin dans cet article.

Pour vérifier cette cause exacte, exécutez la commande DBCC OPENTRAN alors que vous êtes connecté à la base de données SQL Server CDC. Vous verrez un numéro LSN non distribuée comme indiqué dans l’exemple suivant :

Informations sur les transactions répliquées :
Plus ancien LSN distribué : (0:0:0)
Plus ancien LSN non distribué : (38:272:1)
Exécution de DBCC terminée. Si DBCC vous a adressé des messages d’erreur, contactez votre administrateur système.Vous pouvez avoir un LSN non distribuée car CDC pour Oracle utilise CDC pour les procédures stockée de SQL, et qui, à son tour, le lecteur de journal de réplication. Ce numéro non distribuée correspond aux entrées du journal pour ajouter la table de mise en miroir de la base de données Attunity CDC.

Si vous exécutez cette requête, l’option log_reuse_wait_desc renvoie une valeur de la réplication, indiquant la cause. Sélectionnez le nom de log_reuse_wait_desc dans sys.databases, où le nom est < your_cdc_database > :

Réplication < your_cdc_database >

Résolution

  1. Exécutez la commande suivante dans une fenêtre de requête qui est connectée à la base de données CDC activé dans SQL Server :

    EXEC sp_repltransVous recevrez une sortie semblable à la suivante :

    xact_seqno xact_seqno de xdesid
    0x000000260000012C0001 0x0000002A000001B50001Copier les numéros de séquence de transaction LSN de la commande suivante.

  2. En utilisant les numéros de l’étape 1, exécutez la commande sp_repldone comme suit afin de signaler que les paires de BeginTran et de CommitTran LSN sont déjà répliqués :

    sp_repldone @xactid = 0x000000260000012C0001, @xact_segno = 0x0000002A000001B50001

  3. Exécutez la commande suivante pour vérifier que la transaction est marquée comme répliquées dans la base de données de CDC :

    DBCC OPENTRANCeci renvoie une sortie semblable à la suivante :

    Aucune transaction ouverte active.
    Exécution de DBCC terminée. Si DBCC vous a adressé des messages d’erreur, contactez votre administrateur système.

  4. Pour vous assurer que le journal des transactions peut être réutilisé, vérifiez qu’il n’existe aucune raison de réutilisation indiquée sur la base de données :

    Sélectionnez log_reuse_wait_desc, nom from sys.databases où name = 'your_cdc_database'
    Ceci renvoie une sortie semblable à la suivante :

    nom de log_reuse_wait_desc
    Rien n’your_cdc_database

  5. Vous devez maintenant être en mesure de tronquer le journal des transactions à l’aide de sauvegardes de journaux. Doit également vous permettre de réduire le fichier journal des transactions pour réduire l’espace disque qui est consommé.

    Par exemple, exécutez la commande suivante :

    BACKUP LOG your_cdc_database à DISK='c:\folder\logbackup.trn'
    DBCC SHRINKFILE (yourcdcdatabase_log, 1024)

Pour plus d’informations, voir Gérer la taille du fichier journal des transactions.

Plus d'informations

Pour plus d’informations, consultez erreurs d’instance CDC de résoudre les problèmes dans Microsoft modifier la capture de données pour Oracle par Attunity.

Les produits tiers dont traite cet article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute forme de garantie, expresse ou implicite, concernant les performances ou la fiabilité de ces produits.

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×