Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Das Veröffentlichen über Oracle-Datenbanken erfolgt nahezu auf die gleiche Weise wie das Veröffentlichen über Microsoft SQL Server-Datenbanken. Beachten Sie jedoch die folgenden Punkte und Einschränkungen:
Die Option Oracle (Gateway) bietet eine bessere Leistung im Vergleich zur Option Oracle (Vollständig), allerdings ist es mit dieser Option nicht möglich, dieselbe Tabelle in mehreren Transaktionsveröffentlichungen zu veröffentlichen. Eine Tabelle kann in höchstens eine Transaktionsveröffentlichung und in beliebig viele Momentaufnahmeveröffentlichungen aufgenommen werden. Wenn Sie dieselbe Tabelle in mehreren Transaktionsveröffentlichungen veröffentlichen müssen, wählen Sie die Option Oracle (Vollständig) aus.
Die Replikation unterstützt die Veröffentlichung von Tabellen, Indizes und materialisierten Ansichten. Andere Objekte werden nicht repliziert.
Es bestehen einige geringfügige Unterschiede zwischen dem Speichern und Verarbeiten von Daten in Oracle- und in SQL Server-Datenbanken, die sich auf die Replikation auswirken.
Es gibt eine Reihe von Unterschieden bei der Unterstützung von Features der Transaktionsreplikation bei Verwendung eines Oracle-Publishers.
Unterstützung für das Veröffentlichen von Objekten aus Oracle-Datenbanken
Das Replizieren der folgenden Objekte aus Oracle-Datenbanken wird von der Replikation unterstützt:
Tabellen
Durch Indizes organisierte Tabellen
Indizes
Materialisierte Sichten (sie werden als Tabellen repliziert)
Folgendes kann bei veröffentlichten Tabellen vorhanden sein, wird jedoch nicht repliziert:
Domänenbasierte Indizes
Funktionsbasierte Indizes
Standardwerte
Prüfbedingungen
Fremdschlüssel
Speicheroptionen (Tabellenbereiche, Cluster usw.)
Die folgenden Objekte können nicht repliziert werden:
Geschachtelte Tabellen
Ansichten
Pakete, Paketkörper, Prozeduren und Trigger
Warteschlangen
Sequenzen
Synonyme
Informationen zu unterstützten Datentypen finden Sie unter Data Type Mapping for Oracle Publishers.
Unterschiede zwischen Oracle und SQL Server
Bei Oracle unterscheidet sich die maximal zulässige Größe für einige Objekte. Die Größe der Objekte, die in der Oracle-Veröffentlichungsdatenbank erstellt werden, muss mit der maximal zulässigen Größe der entsprechenden Objekte in SQL Server übereinstimmen. Weitere Informationen zu Einschränkungen in SQL Server finden Sie unter Spezifikationen der maximalen Kapazität für SQL Server.
Standardmäßig werden Oracle-Objektnamen in Großbuchstaben erstellt. Stellen Sie sicher, dass beim Veröffentlichen von Oracle-Objekten über einen SQL Server-Verteiler die Namen der Objekte Großbuchstaben aufweisen, wenn sie in der Oracle-Datenbank in Großbuchstaben vorliegen. Wenn die Objekte nicht mit der korrekten Groß- und Kleinschreibung angegeben werden, kann dies zu einer Fehlermeldung führen, die angibt, dass das Objekt nicht gefunden werden kann.
Der SQL-Dialekt von Oracle und SQL Server unterscheidet sich leicht. Schreiben Sie Zeilenfilter in einer mit Oracle kompatiblen Syntax.
Überlegungen zu großen Objekten
Large Object (LOB)-Daten werden nicht in der Artikelprotokolltabelle gespeichert; Aktualisierungen von LOB-Daten werden immer direkt aus der publizierten Tabelle abgerufen. Eine Replikation von Updates erfolgt bei Transaktionsveröffentlichungen nur dann, wenn der Vorgang, der das LOB betrifft, den Replikationstrigger für die replizierte Tabelle auslöst. Oracle-Trigger werden beim Einfügen oder Löschen von Zeilen ausgelöst, die LOBs enthalten; Updates an LOB-Spalten lösen jedoch keine Trigger aus. Eine Aktualisierung einer LOB-Spalte wird nur dann sofort repliziert, wenn eine Nicht-LOB-Spalte derselben Zeile ebenfalls innerhalb derselben Oracle-Transaktion aktualisiert wird. Anderenfalls wird die LOB-Spalte nicht auf dem Abonnenten aktualisiert, wenn das nächste Update an einer Spalte, die sich nicht auf ein LOB bezieht, in derselben Zeile stattfindet. Stellen Sie sicher, dass dieses Verhalten bei Ihrer Anwendung toleriert werden kann.
Um Updates an LOB-Spalten in Transaktionsveröffentlichungen zu replizieren, berücksichtigen Sie beim Schreiben der Anwendung eine der folgenden Strategien:
Löschen Sie die Zeile(n) innerhalb einer Transaktion und fügen Sie sie erneut ein, anstatt die Zeile zu aktualisieren: Geben Sie das neue LOB beim erneuten Einfügen der Zeile(n) an. Da beim Löschen und auch beim Einfügen Trigger ausgelöst werden, wird die Zeile repliziert.
Nehmen Sie zusammen mit der LOB-Spalte eine Spalte auf, die sich nicht auf ein LOB bezieht, oder aktualisieren Sie eine solche Spalte im Rahmen derselben Oracle-Transaktion. In beiden Fällen stellt das Aktualisieren der Spalte, die sich nicht auf ein LOB bezieht, das Auslösen des Triggers sicher.
Weitere Informationen zu LOBs finden Sie unter Data Type Mapping for Oracle Publishers.
Eindeutige Indizes und Einschränkungen
Bei der Momentaufnahme- und der Transaktionsreplikation unterliegen Spalten, die in eindeutigen Indizes und Einschränkungen (einschließlich PRIMARY KEY-Einschränkungen) enthalten sind, bestimmten Bedingungen. Werden diese Bedingungen nicht erfüllt, wird die Einschränkung oder der Index nicht repliziert.
Die maximale Zahl zulässiger Spalten in einem SQL Server-Index beträgt 16.
Alle in UNIQUE-Einschränkungen aufgenommene Spalten müssen unterstützte Datentypen aufweisen. Weitere Informationen zu Datentypen finden Sie unter Data Type Mapping for Oracle Publishers.
Alle Spalten, die in eindeutigen Einschränkungen enthalten sind, müssen veröffentlicht werden (sie können nicht gefiltert werden).
Spalten, die an UNIQUE-Einschränkungen oder Indizes beteiligt sind, dürfen nicht NULL sein.
Berücksichtigen Sie außerdem die folgenden Punkte:
Oracle und SQL Server verarbeiten NULL-Werte unterschiedlich: Oracle lässt mehrere Zeilen mit NULL-Werten für Spalten zu, bei denen NULL-Werte zulässig sind und die in UNIQUE-Einschränkungen oder -Indizes eingeschlossen sind. SQL Server erzwingt die Eindeutigkeit, indem nur eine einzige Zeile mit einem NULL-Wert für die gleiche Spalte zulässig ist. UNIQUE-Einschränkungen oder -Indizes, die NULL zulassen, können nicht veröffentlicht werden. Anderenfalls würde eine Einschränkungsverletzung auf dem Abonnenten eintreten, wenn die veröffentlichte Tabelle für eine der im Index oder der Einschränkung enthaltenen Spalten mehrere Zeilen mit NULL-Werten enthält.
Beim Testen der Eindeutigkeit ignoriert SQL Server nachfolgende Leerzeichen in einem Feld, nicht jedoch Oracle.
Tabellen in Oracle-Transaktionsveröffentlichungen erfordern wie bei der SQL Server-Transaktionsreplikation einen Primärschlüssel und müssen gemäß den oben stehenden Regeln eindeutig sein. Wenn der Primärschlüssel nicht den oben beschriebenen Regeln folgt, kann die Tabelle nicht für die Transaktionsreplikation veröffentlicht werden.
Unterschiede zwischen dem Veröffentlichen mit Oracle und der Standardtransaktionsreplikation
Oracle-Verleger können nicht den gleichen Namen aufweisen, wie deren SQL Server-Verteiler, einer der SQL Server-Verleger, die den Verteiler verwenden, oder einer der Abonnenten, die die Veröffentlichung erhalten. Von demselben Verteiler bediente Veröffentlichungen müssen jeweils einen eindeutigen Namen haben.
Eine in einer Oracle-Veröffentlichung veröffentlichte Tabelle kann keine replizierten Daten erhalten. Daher unterstützen Oracle-Veröffentlichungen Folgendes nicht: Veröffentlichungen mit Abonnements mit sofortigem Update und mit verzögertem Update über eine Warteschlange oder Topologien, in denen Veröffentlichungstabellen auch als Abonnementtabellen dienen, z. B. bei der Peer-zu-Peer- und bidirektionalen Replikation.
Primärschlüssel/Fremdschlüssel-Beziehungen in der Oracle-Datenbank werden nicht auf die Abonnenten repliziert. Die Beziehungen bleiben jedoch in den Daten erhalten, wenn Änderungen übermittelt werden.
Transaktionsveröffentlichungen unterstützen standardmäßig Tabellen mit bis zu 1000 Spalten. Oracle-Transaktionsveröffentlichungen unterstützen 995 Spalten (bei der Replikation werden jeder veröffentlichten Tabelle fünf Spalten hinzugefügt).
Sortierklauseln werden den CREATE TABLE-Anweisungen hinzugefügt, damit Groß- und Kleinbuchstaben bei Vergleichen berücksichtigt werden, was bei Primärschlüsseln und UNIQUE-Einschränkungen eine wichtige Rolle spielt. Dieses Verhalten wird durch die Schemaoption 0x1000 gesteuert, die mit dem
@schema_option-Parameter von sp_addarticle (Transact-SQL) angegeben wird.Wenn Sie zur Konfiguration oder Verwaltung eines Oracle-Verlegers gespeicherte Prozeduren verwenden, nehmen Sie die Prozeduren nicht innerhalb einer expliziten Transaktion auf. Dies wird über den Verbindungsserver nicht unterstützt, mit dem die Verbindung mit dem Oracle-Verleger hergestellt wird.
Wenn Sie ein Pullabonnement für eine Oracle-Veröffentlichung mithilfe eines Assistenten erstellen, müssen Sie den Assistent für neue Abonnements verwenden, der mit SQL Server 2005 (9.x) und höheren Versionen bereitgestellt wird. Bei früheren Versionen von SQL Server können Sie jedoch die gespeicherte Prozedur und die SQL-DMO-Schnittstellen verwenden, um Pullabonnements für Oracle-Publikationen einzurichten.
Bei der Weitergabe von Änderungen mithilfe gespeicherter Prozeduren an Abonnenten (Standardverfahren) wird die MCALL-Syntax zwar unterstützt, weist jedoch ein anderes Verhalten auf, wenn die Veröffentlichung von einem Oracle-Verleger stammt. In der Regel stellt MCALL ein Bitmuster bereit, das angibt, welche Spalten beim Publisher aktualisiert wurden. Bei einer Oracle-Veröffentlichung zeigt das Bitmuster immer, dass alle Spalten aktualisiert wurden. Weitere Informationen zur Verwendung gespeicherter Prozeduren finden Sie unter Angeben der Weitergabemethode für Änderungen bei Transaktionsartikeln.
Unterstützte Funktionen der Transaktionsreplikation
Oracle-Veröffentlichungen unterstützen nicht alle Schemaoptionen, die von SQL Server-Veröffentlichungen unterstützt werden. Weitere Informationen zu Schemaoptionen finden Sie unter sp_addarticle (Transact-SQL).
Abonnenten von Oracle-Veröffentlichungen können weder Abonnements mit unmittelbarer Aktualisierung noch Abonnements mit Warteschlangenaktualisierung verwenden oder Knoten in einer Peer-to-Peer- oder bidirektionalen Topologie sein.
Abonnenten von Oracle-Veröffentlichungen können nicht automatisch von einer Sicherung initialisiert werden.
SQL Server unterstützt zwei Überprüfungstypen: binär und Zeilenanzahl. Oracle-Verleger unterstützen die Zeilenanzahlüberprüfung. Weitere Informationen finden Sie unter Überprüfen von replizierten Daten.
SQL Server stellt zwei Momentaufnahmeformate bereit: systemeigener BCP-Modus und Zeichenmodus. Oracle-Verleger unterstützen Momentaufnahmen im Zeichenmodus.
Schemaänderungen an veröffentlichten Oracle-Tabellen werden nicht unterstützt. Wenn Sie das Schema ändern möchten, löschen Sie zuerst die Veröffentlichung, nehmen Sie die Änderungen vor, und erstellen Sie dann die Veröffentlichung und alle Abonnements neu.
Hinweis
Wenn die Schemaänderungen und das anschließende Löschen sowie Neuerstellen der Veröffentlichung und Abonnements dann vorgenommen werden, wenn keine Aktivität an den veröffentlichten Tabellen stattfindet, können Sie die Option 'Nur Replikationsunterstützung' für die Abonnements angeben. Die Abonnements werden dann synchronisiert, ohne dass eine Momentaufnahme auf jeden Abonnenten kopiert werden muss. Weitere Informationen finden Sie unter Initialisieren eines Transaktionsabonnements ohne Snapshot.
Replikationssicherheitsmodell
Das Sicherheitsmodell für die Oracle-Veröffentlichung ist dasselbe wie das Sicherheitsmodell für die Standardtransaktionsreplikation, mit folgenden Ausnahmen:
Das Konto, unter dem der Snapshot-Agent und der Log Reader-Agent Verbindungen vom Distributor zum Publisher herstellen, wird durch eine der folgenden Methoden festgelegt:
Mit dem
@security_mode-Parameter von sp_adddistpublisher (Transact-SQL) (Sie geben bei Verwendung der Oracle-Authentifizierung auch Werte für@loginund@passwordan)Im Dialogfeld Mit Server verbinden in SQL Server Management Studio, das Sie beim Konfigurieren des Oracle Publishers beim SQL Server-Distributor verwenden.
Das Konto wird bei der standardmäßigen Transaktionsreplikation mit sp_addpublication_snapshot (Transact-SQL) und sp_addlogreader_agent (Transact-SQL) angegeben.
Das Konto, unter dem der Momentaufnahmeagent und der Protokollleseagent Verbindungen herstellen, kann nicht mithilfe von sp_changedistpublisher (Transact-SQL) oder einem Eigenschaftenblatt geändert werden. Das Kennwort können Sie jedoch ändern.
Wenn Sie den Wert 1 (integrierte Windows-Authentifizierung) für den
@security_mode-Parameter von sp_adddistpublisher (Transact-SQL) angeben, gilt Folgendes:Das Prozesskonto und das Kennwort, die sowohl für den Momentaufnahme-Agent als auch für den Protokolllese-Agent verwendet werden (die
@job_login- und@job_password-Parameter von sp_addpublication_snapshot (Transact-SQL) und sp_addlogreader_agent (Transact-SQL)), müssen mit dem Konto und dem Kennwort übereinstimmen, die für die Verbindung mit dem Oracle-Herausgeber verwendet werden.Sie können den
@job_login-Parameter nicht über sp_changepublication_snapshot (Transact-SQL) oder sp_changelogreader_agent (Transact-SQL) ändern, das Kennwort kann jedoch geändert werden.
Weitere Informationen zur Replikationssicherheit finden Sie unter Anzeigen und Ändern von Replikationssicherheitseinstellungen.