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.
Die Veröffentlichung aus einer Oracle-Datenbank ist so konzipiert, dass sie nahezu identisch mit der Veröffentlichung aus einer Microsoft SQL Server-Datenbank funktioniert. Beachten Sie jedoch die folgenden Einschränkungen und Probleme:
Die Oracle Gateway-Option bietet eine verbesserte Leistung gegenüber der Oracle Complete-Option. Diese Option kann jedoch nicht verwendet werden, um dieselbe Tabelle in mehreren Transaktionspublikationen zu veröffentlichen. Eine Tabelle kann in höchstens einer Transaktionspublikation und einer beliebigen Anzahl von Snapshotpublikationen angezeigt werden. Wenn Sie dieselbe Tabelle in mehreren Transaktionspublikationen veröffentlichen müssen, wählen Sie die Option Oracle Complete aus.
Die Replikation unterstützt die Veröffentlichung von Tabellen, Indizes und materialisierten Ansichten. Andere Objekte werden nicht repliziert.
Es gibt einige kleine Unterschiede zwischen der Speicherung und Verarbeitung von Daten in Oracle- und SQL Server-Datenbanken, die sich auf die Replikation auswirken.
Es gibt eine Reihe von Unterschieden bei der Unterstützung der Funktionen der Transaktionsreplikation bei Verwendung eines Oracle-Publishers.
Unterstützung für Veröffentlichungsobjekte von Oracle
Replikation unterstützt das Replizieren der folgenden Objekte aus Oracle-Datenbanken:
Tabellen
Index-organisierte Tabellen
Indizes
Materialisierte Ansichten (sie werden als Tabellen repliziert)
Folgendes kann in veröffentlichten Tabellen vorhanden sein, aber nicht repliziert werden:
Domänenbasierte Indizes
Funktionsbasierte Indizes
Standardeinstellungen
Einschränkungen überprüfen
Fremdschlüssel
Speicheroptionen (Tablespaces, Cluster usw.)
Die folgenden Objekte können nicht repliziert werden:
Geschachtelte Tabellen
Ansichten
Pakete, Pakettexte, Prozeduren und Trigger
Warteschlangen
Sequenzen
Synonyme
Informationen zu unterstützten Datentypen finden Sie unter Data Type Mapping for Oracle Publisher.
Unterschiede zwischen Oracle und SQL Server
Oracle hat unterschiedliche maximale Größenbeschränkungen für einige Objekte. Alle objekte, die in der Oracle-Publikationsdatenbank erstellt wurden, sollten die maximalen Größenbeschränkungen für die entsprechenden Objekte in SQL Server einhalten. Informationen zu Grenzwerten in SQL Server finden Sie unter "Maximale Kapazitätsspezifikationen für SQL Server".
Standardmäßig werden Oracle-Objektnamen in Großbuchstaben erstellt. Stellen Sie sicher, dass Sie die Namen von Oracle-Objekten im Großbuchstaben angeben, wenn sie über einen SQL Server-Distributor veröffentlicht werden, wenn sie in der Oracle-Datenbank großgeschrieben sind. Fehler beim Angeben der Objekte im richtigen Fall kann zu einer Fehlermeldung führen, die angibt, dass das Objekt nicht gefunden werden kann.
Oracle hat einen etwas anderen SQL-Dialekt als SQL Server; Zeilenfilter sollten in Oracle-kompatibler Syntax geschrieben werden.
Überlegungen für große Objekte
Große Objektdaten (LOB) werden nicht in der Protokolltabelle des Artikels gespeichert; Aktualisierungen von LOB-Daten werden immer direkt aus der veröffentlichten Tabelle abgerufen. Updates werden nur in Transaktionspublikationen repliziert, wenn der Vorgang, der sich auf die LOB auswirkt, den Replikationstrigger für die replizierte Tabelle auslöst. Oracle-Trigger werden ausgelöst, wenn Zeilen mit LOBs eingefügt oder gelöscht werden; Aktualisierungen 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 auch in derselben Oracle-Transaktion aktualisiert wird. Wenn dies nicht der Fall ist, wird die LOB-Spalte beim Abonnenten aktualisiert, wenn die nächste Aktualisierung einer Nicht-LOB-Spalte in derselben Zeile erfolgt. Stellen Sie sicher, dass dieses Verhalten für Ihre Anwendung akzeptabel ist.
Um Aktualisierungen von LOB-Spalten in transaktionalen Veröffentlichungen zu replizieren, sollten Sie beim Entwickeln der Anwendung eine der folgenden Strategien in Betracht ziehen:
Löschen Sie die Zeile(n) innerhalb einer Transaktion und fügen Sie sie erneut ein, anstatt die Zeile zu aktualisieren: Geben Sie den neuen LOB an, wenn Sie die Zeile erneut einfügen. Da beide Auslöser gelöscht und eingefügt werden, wird die Zeile repliziert.
Fügen Sie zusätzlich zur LOB-Spalte eine Nicht-LOB-Spalte zur Zeilenaktualisierung hinzu, oder aktualisieren Sie eine Nicht-LOB-Spalte der Zeile als Teil derselben Oracle-Transaktion. In beiden Fällen stellt die Aktualisierung der Nicht-LOB-Spalte sicher, dass der Trigger aktiviert wird.
Weitere Informationen zu LOBs finden Sie unter Data Type Mapping for Oracle Publisher.
Eindeutige Indizes und Einschränkungen
Bei der Snapshot- und Transaktionsreplikation müssen Spalten, die in eindeutigen Indizes und Einschränkungen (einschließlich Primärschlüsseleinschränkungen) enthalten sind, bestimmte Vorgaben einhalten. Wenn sie diese Einschränkungen nicht einhalten, wird die Einschränkung oder der Index nicht repliziert.
Die maximale Anzahl von Spalten, die in einem Index in SQL Server zulässig sind, beträgt 16.
Alle Spalten, die in eindeutigen Einschränkungen enthalten sind, müssen unterstützte Datentypen aufweisen. Weitere Informationen zu Datentypen finden Sie unter Data Type Mapping for Oracle Publisher.
Alle Spalten, die in eindeutigen Einschränkungen enthalten sind, müssen veröffentlicht werden (sie können nicht gefiltert werden).
Spalten, die an eindeutigen Einschränkungen oder Indizes beteiligt sind, dürfen nicht null sein.
Berücksichtigen Sie außerdem die folgenden Probleme:
Oracle und SQL Server behandeln NULL anders: Oracle lässt mehrere Zeilen mit NULL-Werten für Spalten zu, die NULL zulassen und in eindeutigen Einschränkungen oder Indizes enthalten sind. SQL Server erzwingt Eindeutigkeit, indem nur eine einzelne Zeile mit einem NULL-Wert für dieselbe Spalte zulässig ist. Sie können keine eindeutige Einschränkung oder einen eindeutigen Index veröffentlichen, der NULL zulässt, da beim Abonnenten eine Einschränkungsverletzung auftritt, wenn die veröffentlichte Tabelle mehrere Zeilen mit NULL-Werten für eine der Spalten enthält, die im Index oder der Einschränkung enthalten sind.
Beim Testen auf Eindeutigkeit werden nachfolgende Leerzeichen in einem Feld von SQL Server, aber nicht von Oracle ignoriert.
Wie bei der TRANSAKTIONSreplikation von SQL Server erfordern Tabellen in Oracle-Transaktionspublikationen einen Primärschlüssel; Der Primärschlüssel muss basierend auf den oben angegebenen Regeln eindeutig sein. Wenn der Primärschlüssel nicht den regeln entspricht, die in den vorherigen Aufzählungszeichen beschrieben sind, kann die Tabelle nicht für die Transaktionsreplikation veröffentlicht werden.
Unterschiede zwischen Oracle Publishing und Standard Transaktionsreplikation
Ein Oracle Publisher darf nicht denselben Namen haben wie: seinen SQL Server-Distributor; einer der SQL Server-Herausgeber, die den Distributor verwenden; oder alle Abonnenten, die die Publikation erhalten. Publikationen, die von demselben Distributor bedient werden, müssen jeweils einen eindeutigen Namen haben.
Eine tabelle, die in einer Oracle-Publikation veröffentlicht wurde, kann keine replizierten Daten empfangen. Daher wird die Oracle-Veröffentlichung nicht unterstützt: Publikationen mit sofortiger Aktualisierung oder in die Warteschlange gestellten Aktualisierungsabonnements; oder Topologien, in denen Publikationstabellen auch als Abonnementtabellen fungieren, z. B. Peer-to-Peer- und bidirektionale Replikation.
Primärschlüssel zu Fremdschlüsselbeziehungen in Oracle-Datenbanken werden nicht zu Teilnehmern repliziert. Die Beziehungen werden jedoch in den Daten beibehalten, da Änderungen übermittelt werden.
Standardtransaktionspublikationen unterstützen Tabellen mit bis zu 1000 Spalten. Oracle-Transaktionspublikationen unterstützen 995 Spalten (Replikation fügt jeder veröffentlichten Tabelle fünf Spalten hinzu).
Kollationsklauseln werden den CREATE TABLE-Anweisungen hinzugefügt, um groß-/kleinschreibungssensitive Vergleiche zu ermöglichen, was für Primärschlüssel und eindeutige Einschränkungen wichtig ist. Dieses Verhalten wird mit der Schemaoption 0x1000 gesteuert, die mit dem @schema_option Parameter von sp_addarticle (Transact-SQL) angegeben wird.
Wenn Sie gespeicherte Prozeduren zum Konfigurieren oder Verwalten eines Oracle Publisher verwenden, platzieren Sie die Prozeduren nicht innerhalb einer expliziten Transaktion. Dies wird nicht über den verknüpften Server unterstützt, der zum Herstellen einer Verbindung mit Oracle Publisher verwendet wird.
Wenn Sie ein Pullabonnement für eine Oracle-Publikation mit einem Assistenten erstellen, müssen Sie den Assistenten für neue Abonnements verwenden, der mit SQL Server 2005 und höheren Versionen bereitgestellt wird. Bei früheren Versionen von SQL Server können Sie jedoch die gespeicherte Prozedur und SQL-DMO Schnittstellen verwenden, um Pullabonnements für Oracle-Publikationen einzurichten.
Wenn Sie gespeicherte Prozeduren verwenden, um Änderungen an Abonnenten zu verteilen (Standardeinstellung), beachten Sie, dass die MCALL-Syntax unterstützt wird, aber ein anderes Verhalten hat, wenn die Publikation von einem Oracle Publisher stammt. In der Regel stellt MCALL eine Bitmap bereit, die anzeigt, welche Spalten im Publisher aktualisiert wurden. Bei einer Oracle-Publikation zeigt die Bitmap immer an, dass alle Spalten aktualisiert wurden. Weitere Informationen zur Verwendung gespeicherter Prozeduren finden Sie unter Angeben, wie Änderungen für Transaktionsartikel weitergegeben werden.
Unterstützung von Transaktionsreplikationsfunktionen
Oracle-Publikationen unterstützen nicht alle Schemaoptionen, die SQL Server-Publikationen unterstützen. Weitere Informationen zu Schemaoptionen finden Sie unter sp_addarticle (Transact-SQL).
Abonnenten von Oracle-Publikationen können keine Abonnements mit sofortiger Aktualisierung oder Warteschlangenaktualisierung verwenden und nicht Knoten in einer Peer-to-Peer- oder bidirektionalen Topologie sein.
Abonnenten von Oracle-Publikationen können nicht automatisch aus einer Sicherung initialisiert werden.
SQL Server unterstützt zwei Arten von Überprüfung: Binär- und Zeilenanzahl. Oracle Publisher unterstützt die Zeilenanzahl-Überprüfung. Weitere Informationen finden Sie unter Überprüfen replizierter Daten.
SQL Server bietet zwei Momentaufnahmenformate: systemeigener Bcp-Modus und Zeichenmodus. Oracle Publisher unterstützen Momentaufnahmen des Zeichenmodus.
Schemaänderungen an veröffentlichten Oracle-Tabellen werden nicht unterstützt. Wenn Sie Schemaänderungen vornehmen möchten, legen Sie zuerst die Publikation ab, nehmen Sie die Änderungen vor, und erstellen Sie dann die Publikation und alle Abonnements erneut.
Hinweis
Wenn sich das Schema ändert und die anschließende Entfernung und Neuerstellung der Publikation und Abonnements zu einem Zeitpunkt stattfindet, an dem keine Aktivität in den veröffentlichten Tabellen stattfindet, können Sie die Option "nur Replikationsunterstützung" für die Abonnements angeben. Auf diese Weise können sie synchronisiert werden, ohne eine Momentaufnahme auf jeden Abonnenten kopieren zu müssen. Weitere Informationen finden Sie unter Initialisieren eines Transaktionsabonnements ohne Schnappschuss.
Replikationssicherheitsmodell
Das Sicherheitsmodell für die Oracle-Veröffentlichung ist identisch mit dem Sicherheitsmodell für die standardmäßige Transaktionsreplikation, mit den folgenden Ausnahmen:
Das Konto, unter dem der Snapshot Agent und der Log Reader Agent Verbindungen vom Distributor mit dem Publisher herstellen, wird über eine der folgenden Methoden angegeben:
Der @security_mode Parameter von sp_adddistpublisher (Transact-SQL) (Sie geben auch Werte für @login und @password an, wenn Oracle-Authentifizierung verwendet wird)
Im Dialogfeld "Mit Server verbinden " in SQL Server Management Studio, das Sie beim Konfigurieren von Oracle Publisher im SQL Server-Verteiler verwenden.
Bei der standardmäßigen Transaktionsreplikation wird das Konto mit sp_addpublication_snapshot (Transact-SQL) und sp_addlogreader_agent (Transact-SQL) angegeben.
Das Konto, unter dem der Snapshot-Agent und der Log Reader-Agent Verbindungen herstellen, kann nicht mit sp_changedistpublisher (Transact-SQL) oder über ein Eigenschaftenblatt geändert werden, das Kennwort kann jedoch geändert werden.
Wenn Sie einen Wert von 1 (Integrierte Windows-Authentifizierung) für den @security_mode Parameter von sp_adddistpublisher (Transact-SQL) angeben:
Das Prozesskonto und das Kennwort, das sowohl für den Snapshot Agent als auch für den Log Reader Agent verwendet wird (die Parameter @job_login und @job_password von sp_addpublication_snapshot (Transact-SQL) und sp_addlogreader_agent (Transact-SQL)) müssen mit dem Konto und dem Kennwort übereinstimmen, das zum Herstellen einer Verbindung mit Oracle Publisher verwendet wird.
Sie können den @job_login Parameter nicht durch sp_changepublication_snapshot (Transact-SQL) oder sp_changelogreader_agent (Transact-SQL) ändern, aber das Kennwort kann geändert werden.
Weitere Informationen zur Replikationssicherheit finden Sie unter SQL Server Replication Security.
Siehe auch
Administrative Überlegungen für Oracle-Herausgeber
Konfigurieren eines Oracle Publisher
Oracle Publishing (Übersicht)