Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Konfigurieren der heterogenen Datenbankreplikation – SQL Server zu Oracle

Einführung

Die SQL Server-Replikation ist eine SQL Server-Funktion, mit der wir Daten von einer Instanz auf eine andere übertragen können, um Daten beispielsweise in einer Berichtsumgebung zu konsolidieren oder zu migrieren. Ich persönlich würde die SQL Server-Replikation nicht als Hochverfügbarkeitstechnologie betrachten, auch wenn einige Leute dies für eine solche halten.

Die SQL Server-Replikation verwendet ähnliche Begriffe wie in der Verlagsbranche, um zu beschreiben, wie Daten von der Quelle zum Ziel verarbeitet werden. Die Schlüsselbegriffe lauten wie folgt:

  • Publisher – eine SQL Server-Instanz, die Daten für die Replikation auf andere Instanzen verfügbar macht (als Veröffentlichungen verpackt).
  • Veröffentlichung – eine Einheit, die zur Übergabe an die empfangende Instanz bereit ist und aus einer Sammlung von Artikeln besteht, die eigentlich Datenbankobjekte sind.
  • Distributor – eine SQL Server-Instanz, die für das Speichern von Daten zuständig ist, die einem oder mehreren Herausgebern in einer Datenbank zugeordnet sind, die als Verteilungsdatenbank bezeichnet wird . Ein Lokaler Vertriebspartner wird in derselben Instanz wie der Publisher gespeichert, während er ein Remote-Distributor ist befindet sich in einer anderen Instanz.
  • Abonnent – ​​eine Instanz, die eine replizierte Datenbank empfängt. Ein Abonnentenabonnement ist eine Anfrage für ein Veröffentlichungsexemplar, das es vom Herausgeber zu erhalten erwartet.
  • Schnappschuss.

In dem Artikel werde ich einige Punkte teilen, die ich bei der Konfiguration der SQL Server-Replikation zur Unterstützung eines heterogenen Abonnenten gelernt habe. Ich werde eine Veröffentlichung und anschließend ein Oracle-Abonnement erstellen, das von dieser Veröffentlichung abhängt. Ich werde auch einige Punkte zusammen mit dem Ablauf des Prozesses demonstrieren, die für die Fehlersuche sehr wichtig sind.

Die Schritte zum Konfigurieren einer Snapshot-Replikationssitzung lauten wie folgt:

  1. Konfigurieren Sie einen Verteiler
  2. Konfigurieren Sie einen Herausgeber (zusammen mit der Veröffentlichung einschließlich der zu veröffentlichenden Artikel)
  3. Konfigurieren Sie einen Abonnenten

Ich werde jeden Schritt kurz erläutern.

Konfigurieren eines Verteilers

Ein Verteiler ist eine Instanz, die für das Speichern von Informationen verantwortlich ist, die während der Replikation verwendet werden. Wenn Sie zum ersten Mal versuchen, eine Veröffentlichung in der Instanz zu erstellen, schlägt SQL Server vor, dass Sie einen Verteiler konfigurieren. In diesem Artikel ist unser Vertriebspartner ein lokaler Vertriebspartner .

Erstellen einer Veröffentlichung

Lassen Sie uns die Datenbank identifizieren, die die Objekte enthält, die wir replizieren möchten. Dies wird eine Publikationsdatenbank sein .

Um eine Publikationsdatenbank zu erstellen, befolgen Sie die Anweisungen auf den Screenshots unten.

In diesem Schritt können Sie einen Veröffentlichungstyp auswählen, den Sie konfigurieren möchten. Jeder Veröffentlichungstyp wird im unteren Bereich beschrieben. Aus Gründen der Einfachheit und Kompatibilität wählen wir eine Snapshot-Veröffentlichung. Bitte beachten Sie, dass wir beabsichtigen, Objekte auf eine Oracle-Instanz zu replizieren. In diesem Fall Transaktional und Schnappschuss-Veröffentlichungen sind unterstützt. Es gibt andere gute Anwendungsfälle für eine Peer-to-Peer- und Merge-Replikation.

In diesem Schritt wählen wir die Artikel aus, die wir veröffentlichen möchten. SQL Server ermöglicht es uns, vier Schlüsselobjekttypen zu veröffentlichen, wie zum Beispiel:

  1. Tabellen
  2. Gespeicherte Prozeduren
  3. Aufrufe
  4. Benutzerdefinierte Funktionen

Wie Sie sehen können, werden wir zwei Tabellen veröffentlichen:Orders und OrderLines. Um die Flexibilität der SQL Server-Replikation zu demonstrieren, filtern wir die Datensätze wie unten gezeigt.
Hinweis: Uns interessiert, ob die Anzahl der OrderIDs größer als 1000 ist.

Um unerwünschte Zeilen aus veröffentlichten Tabellen auszuschließen, klicken Sie auf Hinzufügen… und dann Weiter .

Die folgenden Screenshots zeigen, wie Spalten für die OrderLines-Tabelle gefiltert werden.

Konfigurieren Sie als Nächstes die Snapshot-Agent-Eigenschaften. Wir definieren einen anfänglichen Snapshot und das Intervall, in dem ein neuer Snapshot generiert wird. Die in diesem Schritt extrahierten Daten werden in einem Verzeichnis gespeichert, das bei der Erstkonfiguration des Verteilers angegeben wurde.

Richten Sie zunächst einen Zeitplan für den Start eines Snapshot-Agenten ein. Klicken Sie auf Weiter .

Geben Sie für jeden Snapshot-Agent das Konto an, unter dem er ausgeführt wird.

Konfigurieren Sie dann die Sicherheitseinstellungen des Snapshot-Agenten. Die Tabelle „Sicherheitseinstellungen“ öffnet ein weiteres Fenster, in dem wir definieren, wer den Snapshot-Agent-Prozess ausführt, und die SQL Server-Anmeldedaten festlegen, die mit dem Herausgeber verbunden werden sollen. Diese Prinzipale benötigen bestimmte Berechtigungen, die in der Produktion etwas schwierig sein können. Die Verwendung des SQL Server Agent-Dienstkontos ist eine Problemumgehung, um Komplikationen zu vermeiden, wird jedoch NICHT von Microsoft empfohlen.

Gegen Ende müssen Sie entscheiden, ob Sie die Konfiguration als Skript zur späteren Verwendung speichern oder die Veröffentlichung sofort erstellen möchten.

Der nächste Schritt (Abb. 16) fasst alle von Ihnen ausgewählten Optionen zusammen. Es wird empfohlen, eine kurze Überprüfung vorzunehmen, bevor Sie auf Fertig stellen klicken Schaltfläche.

Der Vorgang zum Erstellen einer Veröffentlichung beginnt. Sie können auf Stopp klicken um den Vorgang zu unterbrechen.

Sobald der Vorgang abgeschlossen ist, wird Ihre Veröffentlichung im Objekt-Explorer-Bereich von SQL Server Management Studio sichtbar.

Hinzufügen eines Abonnenten

Ein Abonnent erhält vom Verlag zur Verfügung gestellte Publikationen . Die an einen Abonnenten zu liefernde Kopie der Veröffentlichung wird als Abonnement bezeichnet . Ein Herausgeber kann viele Abonnenten haben. Jeder
Abonnent erhält die von diesem Herausgeber veröffentlichten Artikel als eine Einheit, die für den Herausgeber die Veröffentlichung genannt wird und für den Abonnenten als Abonnement betrachtet wird.

Indem wir ein Abonnement erstellen, teilen wir dem Herausgeber einfach mit:„Ich möchte Kopien dieser Veröffentlichung haben“. So wie ein Herausgeber viele Veröffentlichungen haben kann, kann es auch viele Abonnenten einer
Veröffentlichung geben. Daher ist die Beziehung von Publishern zu Abonnenten eine Eins-zu-Viele-Beziehung.

Der Assistent für neue Abonnements lässt uns entscheiden, welche Publikation wir abonnieren möchten. Wir können aus einer Liste der zuvor erstellten Publikationen auswählen, wie in Abb. 20 gezeigt.

Als Nächstes entscheiden wir, ob wir statt eines Pull-Abonnements ein Push-Abonnement ausführen möchten. Während ein Pull-Abonnement für die Leistung besser ist, wenn Sie mehrere Abonnenten ins Auge fassen, funktioniert es
nicht für eine heterogene Datenbankreplikation. Nicht-SQL Server-Abonnenten müssen ein Pullabonnement verwenden. Erwähnenswert ist, dass die in diesem Szenario veröffentlichten Artikel ebenfalls auf Tabellen und indizierte Ansichten beschränkt sind.

Fügen Sie einen Oracle-Abonnenten mit einem Datenquellennamen (DSN) hinzu. Dieser DSN muss bereits erstellt, getestet und als funktionsfähig befunden worden sein, um sich über Oracle Net mit der Oracle-Instanz verbinden zu können. Das bedeutet, dass Sie einen auf dem SQL Server-Host installierten Oracle-Client mit einem Eintrag in einer Datei namens tnsnames.ora benötigen Definieren des Ziels der Verbindung. Dieser TNS-Eintrag wird wiederum verwendet, um den Datenquellennamen zu konfigurieren, nach dem der Assistent für neue Abonnements in diesem Stadium fragt.

Der Eintrag, den ich in meiner Datei tnsnames.ora erstellt habe, sieht folgendermaßen aus:

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

Der hervorgehobene Teil ist der Alias, während die anderen Details das Ziel der Verbindung definieren. Wir können überprüfen, ob dieser Eintrag richtig funktioniert und ob meine Oracle-Umgebungsvariablen richtig konfiguriert sind, indem wir tnsping verwenden wie unten gezeigt.

Nach der Bestätigung wird dieser TNS-Eintrag verwendet, um den DSN zu konfigurieren, den wir verwenden möchten. Unser TNS-Dienstname lautet ORCL10G während der DSN ORCLDC heißt . Es ist der DSN, den wir im Assistenten für neue Abonnements verwenden.

Beachten Sie, dass wir die 64-Bit-Version von ODBC verwendet haben, um den DSN zu konfigurieren, und dass es sich um einen System-DSN handelt, nicht um einen Benutzer-DSN. Die Konfiguration ist unabhängig davon, wer am Computer angemeldet ist.

Wählen Sie einen hinzuzufügenden Abonnententyp aus und geben Sie den Namen der Datenquelle ein. Klicken Sie auf OK .

Wählen Sie einen oder mehrere Abonnenten aus und geben Sie für jedes Abonnement eine Datenbank an.

Sobald der DSN hinzugefügt wurde, können wir mit der Konfiguration der Sicherheit des Verteilungsagenten fortfahren. Wir stellen fest, dass dies dem Fall ähnlich ist, als wir eine Snapshot Agent Security konfiguriert haben im Assistenten für neue Veröffentlichungen.

Hier haben wir jedoch einen Abschnitt, in dem wir eine Verbindung zum Abonnenten herstellen und nicht an den Publisher (Denken Sie daran, dass dies ein Push-Abonnement ist). Dieses Benutzerkonto muss auf der Oracle-Instanz erstellt worden sein und sollte über Berechtigungen zum Erstellen von Tabellen und Kontingenten auf seinem Standard-Tablespace verfügen (hier benötigen Sie möglicherweise einen Oracle-DBA).

Fügen Sie Parameter zur Sicherheit des Verteilungsagenten hinzu und klicken Sie auf OK .

Geben Sie die Konto- und Verbindungsoptionen für jeden Verteilungsagenten an und klicken Sie auf Weiter .

Definieren Sie den Synchronisierungszeitplan für jeden Agenten. In unserem Fall haben wir uns für eine kontinuierliche Synchronisierung entschieden. Klicken Sie auf Weiter .

Wählen Sie die Option, um das Abonnement sofort zu initialisieren, was bedeutet, dass ALLE im Snapshot-Ordner verfügbaren Daten erneut kopiert werden. NoSQL Server-Abonnenten wird empfohlen, das Abonnement neu zu initialisieren, wenn der Veröffentlichung neue Artikel hinzugefügt werden. Klicken Sie auf Weiter .

Wählen Sie die Optionen aus, die nach erfolgreichem Abschluss des Vorgangs ausgeführt werden sollen. Klicken Sie auf Weiter .

Überprüfen Sie die hinzugefügten Informationen und klicken Sie auf Fertig stellen .

Der Vorgang zum Erstellen eines Abonnements wird ausgeführt.

Das soeben erstellte Abonnement zeigt einen Eintrag im Objekt-Explorer (auf dem Verleger), der seiner übergeordneten Publikation zugeordnet ist. Beachten Sie, dass es nicht im Knoten „Lokale Abonnements“ angezeigt wird, der Ihnen eine Liste der Abonnements bereitstellt, die auf der aktuellen Instanz erstellt wurden, was in diesem Fall nicht der Fall ist.

Überwachung und Fehlerbehebung

SQL Server stellt den Replikationsmonitor bereit, um Details aller Replikationssitzungen auf der Instanz zu überprüfen und zu überwachen. Der Replikationsmonitor kann den Administrator informieren, wenn der Snapshot-Agent ausgeführt und abgeschlossen wird. Es kann uns auch zeigen, ob die Abonnements initialisiert sind und ob der Verteilungsagent reibungslos läuft.

Es gibt acht SQL Server-Agent-Jobs, die unserer aktuellen Konfiguration zugeordnet sind. Die Anzeige des Verlaufs dieser Jobs gibt auch Auskunft darüber, ob alles in Ordnung ist.

Tatsächliche Oracle-Fehler werden im Replikationsmonitor und im SQL Server-Fehlerprotokoll aufgelistet, wenn sie auftreten. Diese Detailgenauigkeit macht die Problembehandlung für die SQL Server-Replikation interessant. Kenntnisse über Oracle (für den SQL Server-DBA) werden einen langen Weg zum Verständnis der Fehler, die auftreten können, erfordern.

Sehen Sie sich das Beispiel des Fehlers in Abb. 34 an. Dieser Fehler trat auf, bevor die Oracle Net- und ODBC-Umgebungen korrekt konfiguriert wurden. Die Fehler geben einen sehr klaren Hinweis darauf, wo das Problem liegt.

Die Job Activity Monitor-Ansicht informiert uns auch darüber, welche Jobs erfolgreich waren und bei welchen Jobs wir Fehler im Detail beheben müssen, indem wir den Jobverlauf untersuchen.

Sobald alle vorherigen Fehler behoben sind, erhalten wir durch Öffnen eines Abonnements durch Doppelklicken eine detaillierte Ansicht aller Sitzungen, Fehler und Ergebnisse, die wir erwarten, wenn alles in Ordnung ist. Beachten Sie, dass der Agent stapelweise Daten vom Verleger zum Abonnenten kopiert. Wir können auch die Tabellen abfragen, die in der Oracle-Instanz erstellt wurden, und die Datensätze vergleichen. (Abb. 37).

Wie Sie sehen können, bereitet SQL Server die Tabelle ohne das Quellschema (Sales) vor, bevor die Tabelle in Oracle erstellt und die Daten kopiert werden.

Die Datensatzanzahl in der Oracle-Instanz stimmt mit der in der Quelltabelle überein und berücksichtigt die Tatsache, dass wir die OrderLines-Tabelle nach OrderIDs größer als 1000 filtern.

Schlussfolgerung

Wir haben kurz den Prozess der Konfiguration einer heterogenen Datenbankreplikation mit einer Oracle-Instanz als Abonnent durchlaufen. Obwohl diese Option von Microsoft nach und nach als veraltet markiert wird, gibt es Anwendungsfälle, die immer noch von den Funktionen dieser alten SQL Server-Funktion profitieren könnten. Der Abschnitt „Referenzen“ bietet eine breitere Lektüre zu diesem Thema, von der ich glaube, dass sie für diejenigen nützlich sein wird, die mehr üben möchten.

Referenzen

Konfigurieren Sie die Replikation für Always-On-Verfügbarkeitsgruppen
Nicht-Oracle-Abonnenten
Heterogene Datenbankreplikation
Oracle-Abonnenten