Oracle
 sql >> Base de données >  >> RDS >> Oracle

Configuration de la réplication de base de données hétérogène – SQL Server vers Oracle

Présentation

La réplication SQL Server est une fonctionnalité SQL Server qui nous permet de transférer des données d'une instance à une autre à des fins telles que la consolidation des données dans un environnement de reporting ou les migrations. Personnellement, je ne considérerais pas la réplication SQL Server comme une technologie à haute disponibilité, même si certaines personnes la considèrent comme telle.

La réplication SQL Server utilise des termes similaires à ceux de l'industrie de l'édition pour décrire la manière dont les données sont gérées de la source à la destination. Les termes clés sont les suivants :

  • Publisher :une instance SQL Server qui rend les données disponibles pour être répliquées sur d'autres instances (conditionnées sous forme de publications).
  • Publication :une unité prête à être transmise à l'instance réceptrice composée d'une collection d'articles qui sont en fait des objets de base de données.
  • Distributeur :une instance SQL Server responsable du stockage des données associées à un ou plusieurs éditeurs dans une base de données appelée base de données de distribution . Un distributeur local est stocké dans la même instance que l'éditeur tandis qu'un distributeur distant se trouve dans une autre instance.
  • Abonné - une instance qui reçoit une base de données répliquée. Un abonnement d'abonné est une demande d'exemplaire de publication qu'il s'attend à recevoir de l'éditeur.
  • Instantané.

Dans l'article, je vais partager quelques points que j'ai appris en configurant la réplication SQL Server pour prendre en charge un abonné hétérogène. Je vais créer une publication et par la suite un abonnement Oracle qui dépendra de cette publication. Je démontrerai également quelques points ainsi que le déroulement du processus qui sont très importants pour résoudre les problèmes.

Les étapes de configuration d'une session de réplication d'instantané sont les suivantes :

  1. Configurer un distributeur
  2. Configurer un éditeur (ainsi que la publication, y compris les articles en cours de publication)
  3. Configurer un abonné

Je vais fournir une brève explication de chaque étape.

Configuration d'un distributeur

Un distributeur est une instance responsable du stockage des informations utilisées lors de la réplication. Lorsque vous essayez de créer une publication dans l'instance pour la première fois, SQL Server vous propose de configurer un distributeur. Dans cet article, notre distributeur est un distributeur local .

Créer une publication

Identifions la base de données qui contient les objets que nous souhaitons répliquer. Ce sera une base de données de publication .

Pour créer une base de données de publication, suivez les instructions sur les captures d'écran ci-dessous.

Cette étape vous permet de sélectionner un type de publication que vous souhaitez configurer. Chaque type de publication est décrit dans le volet inférieur. Pour des raisons de simplicité et de compatibilité, nous choisissons une publication instantanée. Veuillez noter que nous avons l'intention de répliquer des objets sur une instance Oracle. Dans ce cas, Transactionnel et Publications instantanées sont pris en charge. Il existe d'autres bons cas d'utilisation pour une réplication peer-to-peer et de fusion.

A cette étape, nous choisissons les articles que nous souhaitons publier. SQL Server nous permet de publier quatre types d'objets clés tels que :

  1. Tableaux
  2. Procédures stockées
  3. Vues
  4. Fonctions définies par l'utilisateur

Comme vous pouvez le voir, nous allons publier deux tables :Orders et OrderLines. Afin de démontrer la flexibilité de la réplication SQL Server, nous filtrerons les enregistrements comme indiqué ci-dessous.
Remarque : Nous souhaitons que le nombre de OrderID soit supérieur à 1000.

Pour exclure les lignes indésirables des tableaux publiés, cliquez sur Ajouter… puis Suivant .

Les captures d'écran ci-dessous montrent comment filtrer les colonnes de la table OrderLines.

Ensuite, configurez les propriétés de l'Agent d'instantané. Nous définissons un instantané initial et l'intervalle pendant lequel un nouvel instantané est généré. Les données extraites à cette étape sont stockées dans un répertoire spécifié lors de la configuration initiale du distributeur.

Tout d'abord, configurez une planification pour le démarrage d'un agent d'instantanés. Cliquez sur Suivant .

Pour chaque agent d'instantané, spécifiez le compte sous lequel il sera exécuté.

Ensuite, configurez les paramètres de sécurité de l'Agent d'instantané. Le tableau Paramètres de sécurité ouvre une autre fenêtre dans laquelle nous définissons qui exécute le processus de l'Agent d'instantané et déterminons les informations de connexion SQL Server à connecter à l'éditeur. Certaines autorisations requises par ces directeurs peuvent être un peu douteuses en production. L'utilisation du compte SQL Server Agent Service est une solution de contournement pour éviter les complications, mais elle n'est PAS recommandée par Microsoft.

Vers la fin, vous devrez décider si vous souhaitez enregistrer la configuration sous forme de script pour une utilisation ultérieure ou créer la publication immédiatement.

L'étape suivante (Fig. 16) résume toutes les options que vous avez sélectionnées. Il est recommandé de faire un examen rapide avant de cliquer sur Terminer bouton.

Le processus de création de la publication démarre. Vous pouvez cliquer sur Arrêter pour interrompre le processus.

Une fois le processus terminé, votre publication devient visible dans le volet Explorateur d'objets sur SQL Server Management Studio.

Ajouter un abonné

Un abonné reçoit les publications mises à disposition par l'Editeur . L'exemplaire de la publication à remettre à un abonné s'appelle un abonnement . Un éditeur peut avoir de nombreux abonnés. Chaque
abonné reçoit les articles publiés par cet Éditeur sous la forme d'une unité appelée la publication en ce qui concerne l'éditeur et considérée comme l'abonnement de l'Abonné.

En créant un abonnement, nous disons simplement à l'éditeur :« Je souhaite avoir des exemplaires de cette publication ». Autant un éditeur peut avoir de nombreuses publications, autant il peut y avoir de nombreux abonnés à une publication. Ainsi, la relation entre les éditeurs et les abonnés est une relation un-à-plusieurs.

L'assistant de nouvel abonnement nous permet de décider à quelle publication nous souhaitons nous abonner. Nous pouvons choisir parmi une liste de publications créées précédemment, comme illustré à la Fig. 20.

Ensuite, nous décidons si nous voulons exécuter un abonnement Push au lieu d'un abonnement Pull. Bien qu'un abonnement Pull offre de meilleures performances lorsque vous envisagez plusieurs abonnés, il ne fonctionnera pas pour une réplication de base de données hétérogène. Les abonnés non-SQL Server doivent utiliser un abonnement Pull. Il convient de mentionner que les articles publiés dans ce scénario sont également limités aux tableaux et aux vues indexées.

Ajoutez un abonné Oracle à l'aide d'un nom de source de données (DSN). Ce DSN doit déjà avoir été créé, testé et trouvé pour fonctionner en termes de possibilité de se connecter à l'instance Oracle via Oracle Net. Cela signifie que vous avez besoin d'un client Oracle installé sur l'hôte SQL Server avec une entrée dans un fichier appelé tnsnames.ora définissant la destination de la connexion. Cette entrée TNS est à son tour utilisée pour configurer le nom de la source de données que l'assistant de nouvel abonnement demande à ce stade.

L'entrée que j'ai créée dans mon fichier tnsnames.ora ressemble à ceci :

ORCL10G =
 (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = IGIRI-LP)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl10g)
    )
 )

La partie en surbrillance est l'alias tandis que les autres détails définissent la destination de la connexion. Nous pouvons confirmer si cette entrée fonctionne correctement et si mes variables d'environnement Oracle sont correctement configurées en utilisant le tnsping utilitaire comme indiqué ci-dessous.

Une fois confirmée, cette entrée TNS est utilisée pour configurer le DSN que nous avons l'intention d'utiliser. Notre nom de service TNS s'appelle ORCL10G tandis que la DSN s'appelle ORCLDC . C'est le DSN que nous utilisons dans l'assistant de nouvel abonnement.

Notez que nous avons utilisé la version 64 bits d'ODBC pour configurer le DSN et qu'il s'agit d'un DSN système et non d'un DSN utilisateur. La configuration ne dépend pas de qui est connecté à l'ordinateur.

Sélectionnez un type d'abonné à ajouter et saisissez le nom de la source de données. Cliquez sur OK .

Choisissez un ou plusieurs abonnés, ainsi que spécifiez une base de données pour chaque abonnement.

Une fois le DSN ajouté, nous pouvons procéder à la configuration de la sécurité de l'agent de distribution. Nous découvrons que cela est similaire au cas où nous avons configuré un Snapshot Agent Security dans l'assistant de nouvelle publication.

Ici, cependant, nous avons une section où nous établissons une connexion avec l'Abonné plutôt qu'à l'éditeur (rappelons qu'il s'agit d'un abonnement push). Ce compte utilisateur doit avoir été créé sur l'instance Oracle et doit disposer des privilèges pour créer des tables et des quotas sur son espace de table par défaut (ici, vous aurez peut-être besoin d'un DBA Oracle).

Ajoutez des paramètres à la sécurité de l'agent de distribution et cliquez sur OK .

Spécifiez les options de compte et de connexion pour chaque agent de distribution et cliquez sur Suivant .

Définissez le calendrier de synchronisation pour chaque agent. Dans notre cas, nous avons choisi de synchroniser en continu. Cliquez sur Suivant .

Sélectionnez l'option pour initialiser l'abonnement immédiatement, ce qui signifie copier à nouveau TOUTES les données disponibles dans le dossier Snapshot. Il est conseillé aux abonnés NoSQL Server de réinitialiser l'abonnement lorsque de nouveaux articles sont ajoutés à la Publication. Cliquez sur Suivant .

Sélectionnez les options à exécuter une fois le processus terminé avec succès. Cliquez sur Suivant .

Vérifiez les informations que vous avez ajoutées et cliquez sur Terminer .

Le processus de création d'abonnement s'exécute.

L'abonnement que nous venons de créer affiche une entrée dans l'Explorateur d'objets (sur l'éditeur) mappée à sa publication parente. Notez qu'il n'apparaît pas dans le nœud Abonnements locaux qui vous fournit une liste des abonnements créés sur l'instance actuelle qui n'est pas dans ce cas.

Surveillance et dépannage

SQL Server fournit le moniteur de réplication pour examiner et surveiller les détails de toutes les sessions de réplication sur l'instance. Le moniteur de réplication peut informer l'administrateur lorsque l'Agent d'instantané s'exécute et se termine. Il peut également nous indiquer si les abonnements sont initialisés et si l'agent de distribution fonctionne correctement.

Il existe huit travaux de l'Agent SQL Server associés à notre configuration actuelle. L'affichage de l'historique de ces tâches permet également de savoir si tout va bien.

Les erreurs Oracle réelles sont répertoriées dans le moniteur de réplication et dans le journal des erreurs SQL Server lorsqu'elles sont rencontrées. Ce niveau de détails rend la réplication SQL Server intéressante à dépanner. Avoir une connaissance d'Oracle (pour le DBA SQL Server) sera long pour comprendre les erreurs qui pourraient survenir.

Examinez l'exemple de l'erreur dans la Fig. 34. Cette erreur s'est produite avant que les environnements Oracle Net et ODBC aient été configurés correctement. Les erreurs donnent une indication très claire de l'endroit où se situe le problème.

La vue Moniteur d'activité des tâches nous informe également des tâches qui réussissent et de celles que nous devons résoudre en détail en examinant l'historique des tâches.

Une fois toutes les erreurs précédentes résolues, l'ouverture d'un abonnement en double-cliquant dessus nous donne une vue détaillée de toutes les sessions, erreurs et résultats que nous espérons voir quand tout va bien. Observez que l'agent en masse copie les données de l'éditeur vers l'abonné par lots. Nous pouvons également interroger les tables qui ont été créées dans l'instance Oracle et comparer les enregistrements. (Fig. 37).

Comme vous pouvez le voir, SQL Server prépare la table en excluant le schéma source (Sales) avant de créer la table dans Oracle et de copier les données.

Le nombre d'enregistrements dans l'instance Oracle correspond à celui de la table source et tient compte du fait que nous filtrons la table OrderLines pour les OrderID supérieurs à 1 000.

Conclusion

Nous avons brièvement parcouru le processus de configuration de la réplication de base de données hétérogène avec une instance Oracle en tant qu'abonné. Bien que cette option soit progressivement obsolète par Microsoft, certains cas d'utilisation pourraient encore bénéficier des fonctionnalités fournies par cette ancienne fonctionnalité SQL Server. La section Références fournit une lecture plus large sur le sujet qui, je pense, sera utile pour ceux qui souhaitent s'entraîner davantage.

Références

Configurer la réplication pour les groupes de disponibilité permanents
Abonnés non Oracle
Réplication de base de données hétérogène
Abonnés Oracle