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
Dieser Artikel listet eine Reihe von Problemen auf, die auftreten können, wenn Sie einen Oracle Publisher konfigurieren und verwenden.
Fehler bezüglich Oracle-Client- und Netzwerksoftware
Sie müssen dem Konto, unter dem Microsoft SQL Server auf dem Distributor ausgeführt wird, Lese- und Ausführungsberechtigungen für das Verzeichnis und alle Unterverzeichnisse gewähren, in denen die Oracle-Clientnetzwerksoftware installiert ist. Wenn Sie die Berechtigungen nicht erteilen oder die Oracle-Client-Komponenten nicht korrekt installiert sind, erhalten Sie folgende Fehlermeldung:
"Fehler bei der Serververbindung mit [Microsoft OLE DB-Anbieter für Oracle]. Oracle-Client und Netzwerkkomponenten wurden nicht gefunden. Diese Komponenten werden von der Oracle Corporation geliefert und mit der Clientsoftware von Oracle, Version 7.3.3 oder höher, installiert. Der Provider kann nicht funktionieren, bis diese Komponenten installiert sind.
Wenn du einen passenden Oracle-Client beim Distributor installierst, stelle sicher, dass du den SQL Server stoppst und dann nach Abschluss der Client-Installation neu startest. Dieser Schritt ist erforderlich, damit SQL Server die Client-Komponenten erkennt.
Wenn du die Berechtigungen erteilst und die Komponenten korrekt installierst, der Fehler aber weiterhin besteht, vergewissere dich, dass die Registry-Einstellungen bei HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI korrekt sind:
Für Oracle 10g sind die korrekten Einstellungen:
OracleOciLib = oci.dll
OracleSqlLib = orasql10.dll
OracleXaLib = oraclient10.dll
Für Oracle 9i sind die korrekten Einstellungen:
OracleOciLib = oci.dll
OracleSqlLib = orasql9.dll
OracleXaLib = oraclient9.dll
Der SQL Server Distributor kann keine Verbindung zur Oracle-Datenbankinstanz herstellen
Wenn der SQL Server Distributor keine Verbindung zum Oracle Publisher herstellen kann, stellen Sie sicher, dass:
Auf dem Verteiler ist die notwendige Oracle-Software installiert.
Die Oracle-Datenbank ist online verfügbar und man kann sich mit einem Tool wie SQL*Plus darauf verbinden.
Das Anmeldekonto, das von der Replikation für die Verbindung mit dem Oracle-Publisher verwendet wird, verfügt über ausreichende Berechtigungen. Weitere Informationen finden Sie unter Konfigurieren eines Oracle-Verlegers.
Die tnsnames.ora-Datei listet die TNS-Namen auf, die du während der Konfiguration des Oracle Publisher definiert hast.
Du verwendest das richtige Oracle Home und den richtigen Pfad. Auch wenn Sie nur einen einzigen Satz von Oracle-Binärdateien auf dem SQL Server-Verteiler installiert haben, muss sichergestellt sein, dass die Umgebungsvariablen für das Oracle Home-Verzeichnis ordnungsgemäß festgelegt wurden. Wenn Sie Werte für Umgebungsvariablen ändern, müssen Sie SQL Server beenden und neu starten, damit die Änderungen wirksam werden.
Weitere Informationen zum Konfigurieren und Testen der Konnektivität finden Sie im Abschnitt zum „Installieren und Konfigurieren der Oracle-Clientnetzwerksoftware auf dem SQL Server-Verteiler“ in Konfigurieren eines Oracle-Verlegers.
Der Oracle Publisher ist mit einem anderen Distributor verbunden
Jeder Oracle-Verleger kann immer nur mit einem SQL Server-Verteiler verknüpft sein. Wenn ein anderer Distributor mit dem Oracle Publisher verknüpft ist, lasse ihn fallen, bevor du einen anderen Distributor nutzt. Wenn Sie den Distributor nicht zuerst entfernen, erhalten Sie eine der folgenden Fehlermeldungen:
„Die Oracle-Serverinstanz '<OraclePublisherName>' wurde zum Verwenden von '<SQLServerDistributorName>' als Verteiler konfiguriert. Um mit dem Verwenden von '<NewSQLServerDistributorName>' als Verteiler zu beginnen, müssen Sie die aktuelle Replikationskonfiguration auf der Oracle-Serverinstanz entfernen. Hierbei werden alle Veröffentlichungen auf dieser Serverinstanz gelöscht.“
„Der Oracle-Server '<OracleServerName>' ist bereits als Verleger '<OraclePublisherName>' auf dem Verteiler '<SQLServerDistributorName>.<DistributionDatabaseName>>' definiert. Löschen Sie den Publisher, oder löschen Sie das öffentliche Synonym '<SynonymName>', um es neu zu erstellen.
Wenn du einen Oracle Publisher abschaltest, werden die Replikationsobjekte in der Oracle-Datenbank automatisch bereinigt. In manchen Fällen muss man jedoch die Oracle-Replikationsobjekte manuell bereinigen. So bereinigen Sie die durch die Replikation erstellten Oracle-Replikationsobjekte manuell:
Stellen Sie eine Verbindung mit dem Oracle-Verleger mit DBA-Berechtigungen her.
Führen Sie den SQL-Befehl
DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;aus.Führen Sie den SQL-Befehl
DROP USER <replication_administrative_user_schema>``CASCADE;aus.
SQL Server-Fehler 21663 wird bezüglich des Fehlens eines Primärschlüssels erhoben
Artikel in Transaktionsveröffentlichungen müssen über einen gültigen Primärschlüssel verfügen. Wenn sie keinen gültigen Primärschlüssel haben, erhalten Sie beim Versuch, einen Artikel hinzuzufügen, folgende Fehlermeldung:
„Für die Quelltabelle [<TableOwner>].[<TableName>] wurde kein gültiger Primärschlüssel gefunden.“
Informationen zu Anforderungen an Primärschlüssel finden Sie im Abschnitt "Einzigartige Indizes und Einschränkungen" im Artikel Designüberlegungen und Einschränkungen für Oracle-Verlage.
SQL Server-Fehler 21642 wird bezüglich eines doppelten verknüpften Server-Logins angezeigt
Wenn Sie einen Oracle Publisher zunächst konfigurieren, erstellt der Prozess einen verknüpften Servereintrag für die Verbindung zwischen dem Publisher und dem Distributor. Der Verbindungsserver hat denselben Namen wie der Oracle-TNS-Dienst. Wenn Sie versuchen, einen verknüpften Server mit demselben Namen zu erstellen, sehen Sie folgende Fehlermeldung:
"Für heterogene Verleger ist ein Verbindungsserver erforderlich. Ein Verbindungsserver mit dem Namen '<LinkedServerName>' ist bereits vorhanden. Entfernen Sie den Verbindungsserver, oder wählen Sie einen anderen Verlegernamen aus."
Dieser Fehler kann auftreten, wenn Sie versuchen, den verklinkten Server direkt zu erstellen oder wenn Sie zuvor die Beziehung zwischen dem Oracle Publisher und dem SQL Server Distributor abgebrochen haben und nun versuchen, ihn neu zu konfigurieren. Wenn Sie diese Fehlermeldung beim Versuch erhalten, den Publisher neu zu konfigurieren, löschen Sie den verknüpften Server mit sp_dropserver (Transact-SQL).
Wenn Sie über eine Verbindungsserververbindung eine Verbindung mit dem Oracle-Verleger herstellen müssen, erstellen Sie einen anderen TNS-Dienstnamen, und verwenden Sie dann für den Aufruf von sp_addlinkedserver (Transact-SQL) diesen Namen. Informationen zum Erstellen von TNS-Dienstnamen finden Sie in der Oracle-Dokumentation.
SQL Server-Fehler 21617 wurde ausgelöst
Für das Veröffentlichen mit Oracle wird die Oracle-Anwendung SQL*PLUS verwendet, um das Paket mit Unterstützungscode für den Verleger in die Oracle-Datenbank herunterzuladen. Bevor der Oracle-Verleger konfiguriert wird, überprüft SQL Server, ob auf SQL*PLUS über den Systempfad auf dem Verteiler zugegriffen werden kann. Wenn SQL*PLUS nicht geladen werden kann, wird die folgende Meldung angezeigt:
"SQL*PLUS konnte nicht ausgeführt werden. Stellen Sie sicher, dass die aktuelle Version des Oracle-Clientcodes auf dem Verteiler installiert ist."
Versuchen Sie, SQLPLUS auf dem Distributor zu finden. Bei einer Oracle 10g-Client-Installation heißt diese ausführbare Datei sqlplus.exe. Sie ist typischerweise in %ORACLE_HOME%/bin installiert. Um zu überprüfen, dass sich der Pfad von SQLPLUS im Systempfad befindet, prüfen Sie den Wert der Systemvariablen Path:
Klicken Sie mit der rechten Maustaste auf Arbeitsplatz, und klicken Sie dann auf Eigenschaften.
Klicken Sie auf die Registerkarte Erweitert , und klicken Sie dann auf Umgebungsvariablen.
Wählen Sie im Dialogfeld Umgebungsvariablen in der Liste Systemvariablen die Variable Path aus, und klicken Sie dann auf Bearbeiten.
Im Dialogfeld Systemvariable bearbeiten : Wenn der Pfad zu dem Ordner, der sqlplus.exe enthält, im Textfeld der Variablenwerte nicht vorhanden ist, bearbeiten Sie den String, um ihn einzubeziehen.
Klicken Sie in jedem geöffneten Dialogfeld auf OK , um den Vorgang zu beenden und die Änderungen zu speichern.
Wenn Sie sqlplus.exe im Distributor nicht finden können, installieren Sie eine aktuelle Version der Oracle-Client-Software im Distributor. Weitere Informationen finden Sie unter Konfigurieren eines Oracle-Verlegers.
SQL Server-Fehler 21620 wurde ausgelöst
Wenn Sie sich mit einer Oracle-Datenbank vor Version 8.1 verbinden, erfordert Oracle-Veröffentlichung, dass die auf dem Distributor installierte Oracle-Client-Software aus Version 9 stammt. Wenn Sie sich mit einer Oracle-Datenbank verbinden, die Version 8.1 oder höher ist, verwenden Sie Oracle Client Software Version 10 oder neuer.
Bevor versucht wird, den Oracle-Publisher zu konfigurieren, überprüft Oracle Publishing, ob die über den Systempfad auf dem Verteiler verfügbare Version von SQL*PLUS Version 9 oder höher ist. Wenn nicht, wird folgende Fehlermeldung angezeigt:
"Die Version von SQL*PLUS, auf die über die Systemvariable 'Path' zugegriffen wird, ist nicht aktuell genug, um die Veröffentlichung mit Oracle zu unterstützen. Stellen Sie sicher, dass die aktuelle Version des Oracle-Clientcodes auf dem Verteiler installiert ist."
Wenn Sie mehrere Versionen der Oracle-Client-Software im Distributor installiert haben, stellen Sie sicher, dass die aktuellste Version mindestens Version 9 ist und dass die Systempfad-Variable zuerst auf diese Version verweist (Verweise auf andere Versionen können erscheinen, solange die aktuellste zuerst erscheint). Für weitere Informationen zur Änderung der Systempfad-Variable siehe den Abschnitt "SQL Server is Raised" früher in diesem Artikel.
SQL Server-Fehler 21624 oder 21629 wurde ausgelöst
Bei 64-Bit-Verteilern wird für das Veröffentlichen mit Oracle der OLE DB-Anbieter von Oracle (OraOLEDB.Oracle) verwendet. Stellen Sie sicher, dass der Oracle OLEDB-Anbieter beim Distributor installiert und registriert ist. Wenn der Anbieter nicht installiert und registriert ist, sehen Sie eine oder beide der folgenden Fehlermeldungen:
Der registrierte OLE DB-Anbieter von Oracle, OraOLEDB.Oracle, wurde beim Verteiler '%s' nicht gefunden. Stellen Sie sicher, dass die aktuelle Version des OLE DB-Anbieters von Oracle auf dem Verteiler installiert und registriert ist."
"Der CLSID-Registrierungsschlüssel, der anzeigt, dass der OLE DB-Anbieter von Oracle, OraOLEDB.Oracle, registriert wurde, ist auf dem Verteiler nicht vorhanden. Stellen Sie sicher, dass der Oracle OLE DB-Provider auf dem Verteiler installiert und registriert ist.
Wenn du die Oracle-Client-Software Version 10g verwendest, ist der Anbieter OraOLEDB10.dll; für Version 9i ist es OraOLEDB.dll. Der Anbieter wird in %ORACLE_HOME%\BIN installiert (beispielsweise C:\oracle\product\10.1.0\Client_1\bin). Wenn du feststellst, dass der Oracle OLEDB-Anbieter nicht auf dem Distributor installiert ist, installiere ihn von der Oracle Client Software Installations-CD, die von Oracle bereitgestellt wird. Weitere Informationen finden Sie unter Konfigurieren eines Oracle-Verlegers.
Wenn der Oracle OLEDB-Anbieter installiert ist, stellen Sie sicher, dass er registriert ist. Um die Provider-DLL zu registrieren, führen Sie folgenden Befehl aus dem Verzeichnis aus, in dem die DLL installiert ist, und stoppen und starten Sie dann die SQL Server-Instanz neu:
-
regsvr32 OraOLEDB10.dlloderregsvr32 OraOLEDB.dll
Der SQL Server-Fehler 21626 oder 21627 tritt auf.
Um zu überprüfen, dass die Oracle-Publishing-Umgebung korrekt konfiguriert ist, versucht der SQL Server, sich mit dem Oracle Publisher zu verbinden, indem er die von Ihnen während der Konfiguration angegebenen Anmeldedaten verwendet. Wenn der SQL Server Distributor keine Verbindung zum Oracle Publisher herstellen kann, sehen Sie folgende Fehlermeldung:
- "Die Verbindung mit dem Oracle-Datenbankserver '%s' kann mithilfe des OLE DB-Anbieters von Oracle, OraOLEDB.Oracle, nicht hergestellt werden."
Wenn Sie diese Fehlermeldung sehen, überprüfen Sie die Verbindung zur Oracle-Datenbank, indem Sie SQL*PLUS direkt ausführen, indem Sie denselben Login und das gleiche Passwort verwenden, das Sie während der Konfiguration des Oracle Publisher angegeben haben. Weitere Informationen finden Sie im Abschnitt „Der SQL Server-Verteiler kann keine Verbindung mit der Oracle-Datenbankinstanz herstellen“ weiter oben in diesem Artikel.
SQL Server-Fehler 21628 tritt auf
Bei 64-Bit-Verteilern wird für das Veröffentlichen mit Oracle der OLE DB-Anbieter von Oracle (OraOLEDB.Oracle) verwendet. SQL Server erstellt einen Registrierungseintrag, damit der Oracle-Provider im SQL-Server-Prozess ausgeführt werden kann. Wenn es ein Problem beim Lesen oder Schreiben dieses Registry-Eintrags gibt, erscheint folgende Fehlermeldung:
Die Registrierung des Verteilers '%s' kann nicht aktualisiert werden, um die Ausführung des Oracle OLE DB-Anbieters OraOLEDB.Oracle im Prozess mit SQL Server zu ermöglichen. Stellen Sie sicher, dass der aktuell angemeldete Benutzer berechtigt ist, SQL Server-eigene Registrierungsschlüssel zu ändern.
Oracle-Veröffentlichung erfordert, dass der Registry-Eintrag existiert und auf 1 für 64-Bit-Distributoren gesetzt wird. Wenn der Eintrag nicht existiert, versucht der SQL Server, ihn zu erstellen. Wenn der Eintrag existiert, aber auf 0 gesetzt ist, ändert sich die Einstellung nicht und die Konfiguration des Oracle Publisher schlägt fehl.
So können Sie die Registrierungseinstellung anzeigen und ändern:
Wählen Sie Start und dann Ausführen aus.
Geben Sie im Dialogfeld "Ausführen " regedit ein und wählen Sie dann OK aus.
Navigieren Sie zu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Providers.
Unter Providers finden Sie einen Ordner namens
OraOLEDB.Oracle. In diesem Ordner finden Sie den DWORD-Wertnamen AllowInProcess mit dem Wert 1.Wenn Sie feststellen, dass AllowInProcess auf 0 gesetzt ist, aktualisieren Sie den Registry-Eintrag auf 1:
Rechtsklicke auf den Eintrag und wähle dann Verändern.
Geben Sie im Dialogfeld Zeichenfolge bearbeiten in das Feld Wert den Wert 1 ein.
SQL Server-Fehler 21684 wird ausgelöst
Wenn das Administratorkonto nicht über ausreichende Rechte verfügt, sehen Sie folgende Fehlermeldung:
Die mit der Administratoranmeldung für den Oracle-Publisher '%s' verbundenen Berechtigungen sind nicht ausreichend.
Um die dem Benutzer gewährten Berechtigungen zu überprüfen, führen Sie folgende Abfrage aus: SELECT * from session_privs. Die Ausgabe sollte ähnlich der Folgenden aussehen:
PRIVILEGE
------------------
CREATE SESSION
CREATE TABLE
CREATE PUBLIC SYNONYM
DROP PUBLIC SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
Sie stoßen auf Berechtigungsprobleme für das Replications-Benutzerschema
Das Benutzerschema für die Replikation muss über die im Abschnitt zum manuellen Erstellen des Benutzerschemas in Konfigurieren eines Oracle-Verlegers beschriebenen Berechtigungen verfügen.
Oracle-Fehler ORA-01000
Beim Hinzufügen von Artikeln zu einer Publikation verwendet die Replikation Cursor auf dem Oracle-Publisher. Während dieses Vorgangs kann die maximale Anzahl der auf dem Publisher verfügbaren Cursoren überschritten werden. In diesem Fall wird der folgende Fehler ausgelöst:
ORA-01000: maximale Anzahl offener Cursor überschritten
Um dieses Problem zu vermeiden, sollten Sie für die Einstellung max_open_cursors in den Oracle-Datenbanken einen ausreichend großen Wert (mindestens 1000) sicherstellen. Weitere Informationen zu dieser Einstellung finden Sie in der Oracle-Dokumentation.
Oracle-Fehler ORA-01555
Die folgende Oracle-Datenbankfehlermeldung bezieht sich nicht auf die Snapshotreplikation, sondern darauf, wie Oracle lesekonsistente Datensichten konstruiert:
ORA-01555: Snapshot zu alt
Oracle verwendet so genannte Rollbacksegmente, um lesekonsistente Datensichten zu erstellen, die den Stand zum Zeitpunkt der Ausführung einer SQL-Anweisung wiedergeben. Der Fehler „snapshot too old“ kann auftreten, wenn die Rollback-Informationen durch andere parallele Sitzungen überschrieben werden. Vor Oracle 9i wurde empfohlen, die Häufigkeit dieser Fehlermeldung durch Erhöhen der Größe und/oder Anzahl der Rollbacksegmente und Zuweisen großer Transaktionen zu einem bestimmten Rollbacksegment zu reduzieren.
In Oracle 9i führte Oracle das Konzept des UNDO-Tabellenbereichs ein, das das Rollback-Segment ersetzt. Zur Vermeidung der Fehlermeldung "snapshot too old" in Oracle 9i sollten Sie wie folgt vorgehen:
Erstellen Sie einen UNDO-Tabellenbereich mit ausreichend freiem Speicherplatz.
Legen Sie die Aufbewahrungsgarantie für den Tablespace fest (Oracle 10G oder höher).
Konfigurieren Sie die Oracle-Initialisierungsparameter UNDO_MANAGEMENT und UNDO_RETENTION.
Weitere Informationen dazu, wie sich der Fehler „snapshot too old“ vermeiden lässt, finden Sie in der Oracle-Dokumentation.
Oracle-Fehler ORA-22285
Wenn eine Tabelle eine BFILE-Spalte enthält, werden die Daten für die Spalte im Dateisystem gespeichert. Sie müssen dem Replikations-Administrator-Benutzerkonto den Zugriff auf das Verzeichnis gewähren, in dem die Daten gespeichert sind, indem Sie folgende Syntax verwenden:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Wenn Sie keinen Zugriff gewähren, löst der Log Reader Agent folgenden Fehler aus:
"ORA-22285: nicht vorhandenes Verzeichnis oder Datei für FILEOPEN-Operation"
Änderungen, die eine Neukonfiguration des Publisher erfordern
Wenn Sie Änderungen an Replikationsmetadatentabellen oder -verfahren vornehmen, müssen Sie den Publisher entfernen und neu konfigurieren. Um den Publisher neu zu konfigurieren, müssen Sie den Publisher entfernen und ihn erneut konfigurieren, indem Sie SQL Server Management Studio, Transact-SQL oder RMO verwenden. Weitere Informationen zur Konfiguration des Publisher finden Sie unter Configure an Oracle Publisher.
Um einen Oracle Publisher zu verlassen (SQL Server Management Studio)
Stellen Sie in SQL Server Management Studio eine Verbindung mit dem Verteiler für den Oracle-Verleger her, und erweitern Sie den Serverknoten.
Klicken Sie mit der rechten Maustaste auf Replikation, und klicken Sie dann auf Verteilereigenschaften.
Deaktivieren Sie auf der Seite Verleger des Dialogfelds Verteilereigenschaften das Kontrollkästchen für den Oracle-Verleger.
Klicken Sie auf OK.
So löschen Sie einen Oracle-Verleger (Transact-SQL)
- Führen Sie sp_dropdistpublisheraus. Weitere Informationen finden Sie unter sp_dropdistpublisher (Transact-SQL).