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 aus einer Oracle-Datenbank funktioniert fast genauso wie das Veröffentlichen aus einer Microsoft SQL Server Datenbank. Beachten Sie jedoch die folgenden Einschränkungen und Probleme:
Die Oracle Gateway-Option bietet eine bessere Leistung als die Oracle Complete-Option. Allerdings kannst du die Oracle Gateway-Option nicht nutzen, um dieselbe Tabelle in mehreren transaktionalen Publikationen zu veröffentlichen. Eine Tabelle kann nur in einer transaktionalen Publikation erscheinen, kann aber in beliebig vielen Snapshot-Publikationen erscheinen. 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. Es repliziert keine anderen Objekte.
Einige kleine Unterschiede zwischen der Speicherung und Verarbeitung von Daten in Oracle- und SQL Server-Datenbanken beeinflussen die Replikation.
Es gibt Unterschiede darin, wie transaktionale Replikationsfunktionen unterstützt werden, wenn man einen Oracle Publisher verwendet.
Unterstützung für die Veröffentlichung von Objekten aus Oracle
Das Replizieren der folgenden Objekte aus Oracle-Datenbanken wird von der Replikation unterstützt:
Tabellen
Durch Indizes organisierte Tabellen
Indizes
Materialisierte Ansichten (repliziert als Tabellen)
Die folgenden Objekte können auf veröffentlichten Tabellen vorhanden sein, aber nicht repliziert werden:
Domänenbasierte Indizes
Funktionsbasierte Indizes
Standardwerte
Prüfbedingungen
Fremdschlüssel
Speicheroptionen (Tabellenräume, 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. Alle Objekte, die Sie in der Oracle-Publikationsdatenbank erstellen, sollten die maximalen Größenbeschränkungen für die entsprechenden Objekte im SQL Server einhalten. Weitere Informationen zu Einschränkungen in SQL Server finden Sie unter Spezifikationen der maximalen Kapazität für SQL Server.
Standardmäßig erstellt Oracle Objektnamen in Großbuchstaben. Stellen Sie sicher, dass Sie die Namen der Oracle-Objekte in Großbuchstaben angeben, wenn Sie sie über einen SQL Server Distributor veröffentlichen, falls sie in der Oracle-Datenbank Großbuchstaben sind. Wenn die Objekte nicht im richtigen Fall angegeben werden, kann dies zu einer Fehlermeldung führen, die anzeigt, dass das Objekt nicht gefunden werden kann.
Oracle verwendet einen leicht anderen SQL-Dialekt als SQL Server; schreibt Zeilenfilter in Oracle-konformer Syntax.
Überlegungen für große Objekte
Die Artikel-Log-Tabelle speichert keine großen Objektdaten (LOB). Aktualisierungen der LOB-Daten werden immer direkt aus der veröffentlichten 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 löst Fire aus, wenn Zeilen mit LOBs eingefügt oder gelöscht werden. Allerdings lösen Aktualisierungen der LOB-Spalten keine Auslöser aus. Eine Aktualisierung einer LOB-Spalte wird nur dann sofort repliziert, wenn auch eine nicht-LOB-Spalte derselben Zeile in derselben Oracle-Transaktion aktualisiert wird. Falls nicht, wird die LOB-Spalte beim Abonnenten aktualisiert, wenn das nächste Update einer Nicht-LOB-Spalte in derselben Zeile erfolgt. 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 und fügen Sie die Zeilen innerhalb einer Transaktion wieder ein, anstatt die Zeile zu aktualisieren: Geben Sie beim erneuten Einfügen der Zeile das neue LOB an. Da Löschen und Einfügen beide Feuerauslöser auslösen, 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
Sowohl für die Snapshot- als auch für die transaktionale Replikation unterliegen Spalten in eindeutigen Indizes und Constraints (einschließlich Primärschlüsselconstraints) bestimmten Einschränkungen. Wenn sie diese Einschränkungen nicht einhalten, wird die Einschränkung oder der Index nicht repliziert.
Sie können bis zu 16 Spalten in einem Index auf SQL Server aufnehmen.
Alle Spalten in Unique-Constraints müssen einen unterstützten Datentyp haben. Weitere Informationen zu Datentypen finden Sie unter Data Type Mapping for Oracle Publishers.
Du musst alle Spalten in eindeutigen Constraints veröffentlichen (du kannst sie nicht filtern).
Spalten in eindeutigen Constraints oder Indizes sollten 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. Sie können keine eindeutige Constraint oder einen Index veröffentlichen, der NULL erlaubt, da eine Constraint-Verletzung beim Subscriber auftreten würde, wenn die veröffentlichte Tabelle mehrere Zeilen mit NULL-Werten für eine der im Index oder der Constraint enthaltenen Spalten enthält.
Beim Testen auf Eindeutigkeit ignoriert SQL Server nachlaufende Leerzeichen in einem Feld, aber Oracle nicht.
Wie bei der transaktionalen Replikation von SQL Server benötigen Tabellen in Oracle-Transaktionsveröffentlichungen einen Primärschlüssel. Der Primärschlüssel muss gemäß den zuvor festgelegten Regeln eindeutig sein. Wenn der Primärschlüssel diesen Regeln nicht entspricht, kannst du die Tabelle nicht für die transaktionale Replikation veröffentlichen.
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ützung für transaktionale Replikationsfunktionen
Oracle-Publikationen unterstützen nicht alle Schema-Optionen, die SQL Server-Publikationen unterstützen. Weitere Informationen zu den Schemaoptionen finden Sie unter sp_addarticle (Transact-SQL).
Abonnenten von Oracle-Publikationen können keine Abonnements mit sofortiger Aktualisierung oder mit Warteschlangenaktualisierung verwenden und auch nicht als Knoten in einer Peer-to-Peer- oder bidirektionalen Topologie fungieren.
Abonnenten von Oracle-Publikationen können nicht automatisch aus einem Backup 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 Sie Schemaänderungen vornehmen und die Veröffentlichung und Abonnements entfernen und neu erstellen, wenn keine Aktivität auf den veröffentlichten Tabellen stattfindet, können Sie die Option
replication support onlyfür die Abonnements festlegen. Diese Option synchronisiert diese, ohne für jeden Abonnenten eine Momentaufnahme zu kopieren. Weitere Informationen finden Sie unter Initialisieren eines Transaktionsabonnements ohne Snapshot.
Replication-Sicherheitsmodell
Das Replicationssicherheitsmodell für Oracle-Veröffentlichungen ist dasselbe wie das Sicherheitsmodell für die Standard-Transaktionsreplikation, mit folgenden Ausnahmen:
Sie geben das Konto an, unter dem der Momentaufnahmen-Agent und der Log Reader Agent Verbindungen vom Distributor zum Publisher über eine der folgenden Methoden herstellen:
Der Parameter
@security_modevon sp_adddistpublisher (Transact-SQL) (geben Sie auch Werte für@loginund@passwordan, wenn die Oracle-Authentifizierung verwendet wird)Das Dialogfeld "Zum Server verbinden" im SQL Server Management Studio, das Sie verwenden, wenn Sie den Oracle Publisher im SQL Server Distributor konfigurieren.
Bei der Standard-Transaktionsreplikation geben Sie das Konto mit sp_addpublication_snapshot (Transact-SQL) und sp_addlogreader_agent (Transact-SQL) an.
Du kannst das Konto, unter dem der Momentaufnahmen-Agent und der Log Reader Agent Verbindungen herstellen, nicht durch sp_changedistpublisher (Transact-SQL) oder über ein Property-Sheet ändern, aber du kannst das Passwort ä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.Du kannst den Parameter
@job_loginnicht über sp_changepublication_snapshot (Transact-SQL ) oder sp_changelogreader_agent (Transact-SQL) ändern, aber du kannst das Passwort ändern.
Weitere Informationen zur Replikationssicherheit finden Sie unter Anzeigen und Ändern von Replikationssicherheitseinstellungen.