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.
In diesem Thema werden eine Reihe von Problemen aufgeführt, die beim Konfigurieren und Verwenden eines Oracle Publisher auftreten können.
Ein Fehler wird in Bezug auf die Oracle Client- und Netzwerksoftware festgestellt.
Dem Konto, unter dem Microsoft SQL Server auf dem Distributor ausgeführt wird, muss Lese- und Ausführungsberechtigungen für das Verzeichnis (und alle Unterverzeichnisse) erteilt werden, in denen die Oracle-Clientnetzwerksoftware installiert ist. Wenn die Berechtigungen nicht erteilt werden oder die Oracle-Clientkomponenten nicht ordnungsgemäß installiert sind, erhalten Sie die folgende Fehlermeldung:
Verbindung zum Server mit [Microsoft OLE DB-Anbieter für Oracle] ist fehlgeschlagen. Oracle-Client- und Netzwerkkomponenten wurden nicht gefunden. Diese Komponenten werden von der Oracle Corporation bereitgestellt und sind Teil der Oracle Version 7.3.3 oder höher client software installation. Der Anbieter kann erst funktionieren, wenn diese Komponenten installiert sind."
Wenn ein entsprechender Oracle-Client im Distributor installiert wurde, stellen Sie sicher, dass SQL Server beendet und nach Abschluss der Clientinstallation neu gestartet wurde. Dies ist erforderlich, damit SQL Server die Clientkomponenten erkennt.
Wenn Sie überprüft haben, ob Berechtigungen erteilt werden und komponenten ordnungsgemäß installiert sind, dieser Fehler jedoch weiterhin besteht, stellen Sie sicher, dass die Registrierungseinstellungen bei HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI korrekt sind:
Für Oracle 10g sind die richtigen 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 mit der Oracle-Datenbankinstanz herstellen.
Wenn der SQL Server-Distributor keine Verbindung mit Oracle Publisher herstellen kann, stellen Sie folgendes sicher:
Die erforderliche Oracle-Software wird auf dem Distributor installiert.
Die Oracle-Datenbank ist online und Sie können mit einem Tool wie SQL*Plus eine Verbindung damit herstellen.
Die Anmeldereplikation verfügt über ausreichende Berechtigungen, um eine Verbindung mit Oracle Publisher herzustellen. Weitere Informationen finden Sie unter Konfigurieren eines Oracle Publisher.
Die während der Konfiguration von Oracle Publisher definierten TNS-Namen werden in der Datei "tnsnames.ora" aufgeführt.
Das richtige Oracle Home-Verzeichnis und der Pfad werden verwendet. Auch wenn nur eine Gruppe von Oracle-Binärdateien im SQL Server-Distributor installiert ist, stellen Sie sicher, dass die Umgebungsvariablen im Zusammenhang mit Oracle Home ordnungsgemäß festgelegt sind. Wenn Sie Umgebungsvariablenwerte ändern, müssen Sie SQL Server beenden und neu starten, damit die Änderung wirksam wird.
Weitere Informationen zum Konfigurieren und Testen der Konnektivität finden Sie unter "Installing and Configuring Oracle Client Networking Software on the SQL Server Distributor" in Configure an Oracle Publisher.
Der Oracle Publisher ist einem anderen Distributor zugeordnet.
Ein Oracle Publisher kann nur einem SQL Server-Distributor zugeordnet werden. Wenn ein anderer Distributor dem Oracle Publisher zugeordnet ist, muss er gelöscht werden, bevor ein anderer Distributor verwendet werden kann. Wenn der Distributor nicht zuerst entfernt wird, erhalten Sie eine der folgenden Fehlermeldungen:
"Oracle Serverinstanz '<OraclePublisherName>' wurde zuvor für die Verwendung von '<SQLServerDistributorName>' als Distributor konfiguriert. Um mit der Verwendung von '<NewSQLServerDistributorName>' als Distributor zu beginnen, müssen Sie die aktuelle Replikationskonfiguration auf der Oracle-Serverinstanz entfernen, die alle Publikationen in dieser Serverinstanz löscht."
"Oracle Server '<OracleServerName>' ist bereits als Herausgeber '<OraclePublisherName>' für Den Distributor '<SQLServerDistributorName>' definiert.<DistributionDatabaseName>'. Entfernen Sie den Herausgeber oder löschen Sie das öffentliche Synonym "<SynonymName>", um es neu zu erstellen.
Wenn ein Oracle Publisher gelöscht wird, werden die Replikationsobjekte in der Oracle-Datenbank automatisch bereinigt. Die manuelle Bereinigung der Oracle-Replikationsobjekte ist jedoch in einigen Fällen erforderlich. So bereinigen Sie Oracle-Replikationsobjekte, die von der Replikation erstellt wurden:
Stellen Sie eine Verbindung mit dem Oracle-Herausgeber mit DBA-Berechtigungen her.
Stellen Sie den SQL-Befehl
DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;aus.Stellen Sie den SQL-Befehl
DROP USER <replication_administrative_user_schema>``CASCADE;aus.
SQL Server-Fehler 21663 wird ausgelöst, wenn kein Primärschlüssel fehlt.
Artikel in Transaktionspublikationen müssen über einen gültigen Primärschlüssel verfügen. Wenn sie keinen gültigen Primärschlüssel haben, erhalten Sie die folgende Fehlermeldung, wenn Sie versuchen, einen Artikel hinzuzufügen:
"Es wurde kein gültiger Primärschlüssel für die Quelltabelle gefunden [<TableOwner>].[<TableName>]"
Informationen zu den Anforderungen für Primärschlüssel finden Sie im Abschnitt "Eindeutige Indizes und Einschränkungen" im Thema Designüberlegungen und Einschränkungen für Oracle-Herausgeber.
SQL Server-Fehler 21642 wird bezüglich einer doppelten verknüpften Serveranmeldung ausgegeben.
Wenn ein Oracle Publisher anfänglich konfiguriert ist, wird ein verknüpfter Servereintrag für die Verbindung zwischen Publisher und Dem Distributor erstellt. Der verknüpfte Server hat denselben Namen wie der Oracle TNS-Dienstname. Wenn Sie versuchen, einen verknüpften Server mit demselben Namen zu erstellen, wird die folgende Fehlermeldung angezeigt:
"Heterogene Herausgeber erfordern einen verknüpften Server. Ein verknüpfter Server mit dem Namen "<LinkedServerName>" ist bereits vorhanden. Entfernen Sie den verknüpften Server, oder wählen Sie einen anderen Herausgebernamen aus."
Dieser Fehler kann auftreten, wenn Sie versuchen, den verknüpften Server direkt zu erstellen, oder wenn Sie die Beziehung zwischen Oracle Publisher und sql Server-Distributor zuvor gelöscht haben, und Sie versuchen jetzt, ihn neu zu konfigurieren. Wenn sie beim Versuch, den Publisher neu zu konfigurieren, diesen Fehler erhalten, legen Sie den verknüpften Server mit sp_dropserver (Transact-SQL) ab.
Wenn Sie eine Verbindung mit Oracle Publisher über eine verknüpfte Serververbindung herstellen müssen, erstellen Sie einen anderen TNS-Dienstnamen, und verwenden Sie diesen Namen, wenn Sie sp_addlinkedserver (Transact-SQL) aufrufen. Informationen zum Erstellen von TNS-Dienstnamen finden Sie in der Oracle-Dokumentation.
SQL Server-Fehler 21617 wird ausgelöst
Oracle Publishing verwendet die Oracle-Anwendung SQL*PLUS, um das Paket des Publisher-Supportcodes in die Oracle-Datenbank herunterzuladen. Bevor Sie versuchen, Oracle Publisher zu konfigurieren, überprüft SQL Server, ob SQL*PLUS über den Systempfad des Distributors zugänglich ist. Wenn SQL*PLUS nicht geladen werden kann, wird die folgende Fehlermeldung angezeigt:
"SQL*PLUS kann nicht ausgeführt werden. Stellen Sie sicher, dass eine aktuelle Version des Oracle-Clientcodes im Distributor installiert ist."
Versuchen Sie, SQL*PLUS im Distributor zu finden. Bei einer Oracle 10g-Clientinstallation ist der Name dieser ausführbaren Datei sqlplus.exe. Sie wird in der Regel in %ORACLE_HOME%/bin installiert. Um zu überprüfen, ob der Pfad von SQL*PLUS im Systempfad angezeigt wird, überprü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 dann auf "Umgebungsvariablen".
Wählen Sie im Dialogfeld "Umgebungsvariablen " in der Liste " Systemvariablen " die Variable " Pfad " aus, und klicken Sie dann auf "Bearbeiten".
Bearbeiten Sie im Dialogfeld "Systemvariable bearbeiten": Wenn der Pfad zum Ordner, der sqlplus.exe enthält, im Textfeld "Variabler Wert" nicht vorhanden ist, bearbeiten Sie die Zeichenfolge, um ihn einzuschließen.
Klicken Sie auf "OK " in jedem geöffneten Dialogfeld, um Änderungen zu beenden und zu speichern.
Wenn Sie sqlplus.exe nicht auf dem Distributor finden können, installieren Sie eine aktuelle Version der Oracle-Clientsoftware im Distributor. Weitere Informationen finden Sie unter Konfigurieren eines Oracle Publisher.
SQL Server-Fehler 21620 wird ausgelöst
Wenn Sie eine Verbindung mit einer Oracle-Datenbank vor Version 8.1 herstellen, erfordert Oracle-Publishing, dass die Oracle-Client-Software, die auf dem Verteiler installiert ist, ab Version 9 ist. Wenn Sie eine Verbindung mit einer Oracle-Datenbank herstellen, die Version 8.1 oder höher ist, empfehlen wir, dass die Oracle-Clientsoftware Version 10 oder höher ist.
Bevor Sie versuchen, Oracle Publisher zu konfigurieren, überprüft Oracle Publishing, ob die Version von SQL*PLUS, die über den Systempfad auf dem Distributor zugänglich ist, Version 9 oder höher ist. Wenn dies nicht der Fehler ist, wird die folgende Fehlermeldung angezeigt:
"Die Version von SQL*PLUS, auf die über die Systempfadvariable zugegriffen werden kann, reicht nicht aus, um die Oracle-Veröffentlichung zu unterstützen. Stellen Sie sicher, dass eine aktuelle Version des Oracle-Clientcodes im Distributor installiert ist."
Wenn Sie mehrere Versionen der Oracle-Clientsoftware auf dem Distributor installiert haben, stellen Sie sicher, dass die neueste Version mindestens Version 9 ist und dass die Systempfadvariable zuerst auf diese Version verweist (Verweise auf andere Versionen können angezeigt werden, solange die neueste version zuerst angezeigt wird). Weitere Informationen zum Bearbeiten der Systempfadvariablen finden Sie im Abschnitt "SQL Server-Fehler 21617 wird ausgelöst" weiter oben in diesem Thema.
SQL Server-Fehler 21624 oder Fehler 21629 wird ausgelöst
Für 64-Bit-Distributoren verwendet Oracle Publishing den Oracle OLEDB Provider für Oracle (OraOLEDB.Oracle). Stellen Sie sicher, dass der Oracle OLEDB-Anbieter installiert und im Distributor registriert ist. Wenn der Anbieter nicht installiert und registriert ist, wird eine oder beide der folgenden Fehlermeldungen angezeigt:
Der registrierte Oracle OLEDB-Anbieter OraOLEDB.Oracle konnte an Distributor '%s' nicht gefunden werden. Stellen Sie sicher, dass eine aktuelle Version des Oracle OLEDB-Anbieters installiert und beim Distributor registriert ist."
"Der CLSID-Registrierungsschlüssel, der angibt, dass der Oracle OLEDB Provider für Oracle, OraOLEDB.Oracle, registriert wurde, ist nicht beim Distributor vorhanden. Stellen Sie sicher, dass der Oracle OLEDB-Anbieter installiert und beim Distributor registriert ist."
Wenn Sie Oracle-Clientsoftware Version 10g verwenden, ist der Anbieter OraOLEDB10.dll; für Version 9i ist es OraOLEDB.dll. Der Anbieter wird in %ORACLE_HOME%\BIN installiert (z. B. C:\oracle\product\10.1.0\Client_1\bin). Wenn Sie feststellen, dass der Oracle OLEDB-Anbieter nicht auf dem Distributor installiert ist, installieren Sie ihn von der Oracle-Clientsoftware-Installations-Cd, die von Oracle bereitgestellt wird. Weitere Informationen finden Sie unter Konfigurieren eines Oracle Publisher.
Wenn der Oracle OLEDB-Anbieter installiert ist, stellen Sie sicher, dass er registriert ist. Führen Sie zum Registrieren der Anbieter-DLL den folgenden Befehl aus dem Verzeichnis aus, in dem die DLL installiert ist, und beenden und starten Sie dann die SQL Server-Instanz neu:
-
regsvr32 OraOLEDB10.dlloderregsvr32 OraOLEDB.dll.
SQL Server-Fehler 21626 oder Fehler 21627 wird gemeldet
Um zu überprüfen, ob die Oracle-Veröffentlichungsumgebung ordnungsgemäß konfiguriert ist, versucht SQL Server, eine Verbindung mit Oracle Publisher mit den Anmeldeinformationen herzustellen, die Sie während der Konfiguration angegeben haben. Wenn der SQL Server-Distributor keine Verbindung mit Oracle Publisher herstellen kann, wird die folgende Fehlermeldung angezeigt:
- Es kann keine Verbindung zum Oracle-Datenbankserver '%s' mit dem Oracle OLEDB-Anbieter OraOLEDB.Oracle hergestellt werden.
Wenn diese Fehlermeldung angezeigt wird, überprüfen Sie die Verbindung mit der Oracle-Datenbank, indem Sie SQL*PLUS direkt unter Verwendung desselben Anmelde- und Kennworts ausführen, das während der Konfiguration von Oracle Publisher angegeben ist. Weitere Informationen finden Sie weiter oben in diesem Thema im Abschnitt "Der SQL Server-Distributor kann keine Verbindung mit der Oracle-Datenbankinstanz herstellen".
SQL Server-Fehler 21628 wird ausgelöst
Für 64-Bit-Distributoren verwendet Oracle Publishing den Oracle OLEDB Provider für Oracle (OraOLEDB.Oracle). SQL Server erstellt einen Registrierungseintrag, damit der Oracle-Provider im Prozess mit SQL Server laufen kann. Wenn beim Lesen oder Schreiben dieses Registrierungseintrags ein Problem auftritt, wird die folgende Fehlermeldung angezeigt:
Die Registrierung des Distributors '%s' kann nicht aktualisiert werden, um den Oracle OLEDB-Anbieter OraOLEDB.Oracle innerhalb des Prozesses von SQL Server auszuführen. Vergewissern Sie sich, dass die aktuelle Anmeldung berechtigt ist, die im Besitz von SQL Server befindlichen Registrierungsschlüssel zu ändern."
Die Oracle-Veröffentlichung erfordert, dass der Registrierungseintrag vorhanden ist und für 64-Bit-Distributoren auf 1 festgelegt wird. Wenn der Eintrag nicht vorhanden ist, versucht SQL Server, ihn zu erstellen. Wenn der Eintrag vorhanden ist, aber auf 0 festgelegt ist, wird die Einstellung nicht geändert. Die Konfiguration von Oracle Publisher schlägt fehl.
Um die Registrierungseinstellung anzusehen und zu ändern:
Klicken Sie auf Start und anschließend auf Ausführen.
Geben Sie im Dialogfeld "Ausführen " "regedit" ein, und klicken Sie dann auf "OK".
Navigieren Sie zu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Providers.
Unter "Anbieter" enthalten sein sollte ein Ordner namens "OraOLEDB.Oracle". In diesem Ordner sollte der DWORD-Wertname AllowInProcess mit dem Wert 1 sein.
Wenn Sie feststellen, dass AllowInProcess auf 0 festgelegt ist, aktualisieren Sie den Registrierungseintrag auf 1:
Klicken Sie mit der rechten Maustaste auf den Eintrag, und klicken Sie dann auf "Ändern".
Geben Sie im Dialogfeld " Zeichenfolge bearbeiten " den Wert "1 " in das Feld "Wertdaten " ein.
SQL Server-Fehler 21684 wird ausgelöst
Wenn das Administratorbenutzerkonto nicht über ausreichende Berechtigungen verfügt, wird die folgende Fehlermeldung angezeigt:
"Die Berechtigungen, die der Administratoranmeldung für Oracle Publisher '%s' zugeordnet sind, sind nicht ausreichend."
Führen Sie die folgende Abfrage aus, um die berechtigungen zu überprüfen, die dem Benutzer gewährt wurden: 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
Es treten Berechtigungsprobleme für das Replikationsbenutzerschema auf
Das Replikationsbenutzerschema muss über die Berechtigungen verfügen, die unter "Manuelles Erstellen des Benutzerschemas" unter "Konfigurieren eines Oracle Publisher" beschrieben sind.
Oracle Error ORA-01000
Replikation verwendet Cursor auf dem Oracle Publisher während des Vorgangs zum Hinzufügen von Artikeln zu einer Publikation. Es ist möglich, die maximale Anzahl von Cursorn zu überschreiten, die während dieses Vorgangs für Publisher verfügbar sind. Wenn dies der Fall ist, wird der folgende Fehler ausgelöst:
"ORA-01000: Maximale Anzahl geöffneter Cursor überschritten"
Um dieses Problem zu vermeiden, stellen Sie sicher, dass die einstellung max_open_cursors in den Oracle-Datenbanken auf eine ausreichend hohe Zahl (mindestens 1000) festgelegt ist. Weitere Informationen zu dieser Einstellung finden Sie in der Oracle-Dokumentation.
Oracle Error ORA-01555
Der folgende Oracle-Datenbankfehler bezieht sich nicht auf die Snapshotreplikation; er betrifft die Weise, wie Oracle lesekonsistente Ansichten von Daten konstruiert.
ORA-01555: Snapshot zu alt
Mit Objekten, die als Rollback-Segmente bezeichnet werden, erstellt Oracle lesekonsistente Ansichten von Daten zum Zeitpunkt der Ausgabe einer SQL-Anweisung. Ein Fehler "Snapshot zu alt" kann auftreten, wenn Rollbackinformationen von anderen gleichzeitigen Sitzungen überschrieben werden. Vor Oracle 9i bestand die empfohlene Methode zur Verringerung der Häufigkeit dieses Fehlers darin, die Größe und/oder Die Anzahl der Rollbacksegmente zu erhöhen und einem bestimmten Rollbacksegment große Transaktionen zuzuweisen.
Mit Oracle 9i wurde das UNDO-Tablespace-Konzept eingeführt, das das Rollbacksegment ersetzt. Um den Fehler "Snapshot zu alt" in Oracle 9i zu verhindern, empfiehlt es sich, Folgendes zu tun:
Erstellen Sie einen UNDO-Tabellenbereich mit einer entsprechenden Menge freien Speicherplatz.
Legen Sie die Aufbewahrungsgarantie für das Tablespace fest (Oracle 10G und höher).
Konfigurieren Sie die Oracle-Initialisierungsparameter UNDO_MANAGEMENT und UNDO_RETENTION.
Weitere Informationen zum Vermeiden des Fehlers "Snapshot zu alt" finden Sie in der Oracle-Dokumentation.
Oracle Error ORA-22285
Wenn eine Tabelle eine BFILE-Spalte enthält, werden die Daten für die Spalte im Dateisystem gespeichert. Dem Replikationsverwaltungsbenutzerkonto muss Der Zugriff auf das Verzeichnis gewährt werden, in dem die Daten mithilfe der folgenden Syntax gespeichert werden:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Wenn der Zugriff nicht gewährt wird, wird der folgende Fehler vom Protokollleser-Agent ausgelöst:
"ORA-22285: Nicht vorhandenes Verzeichnis oder Datei für FILEOPEN-Vorgang"
Änderungen werden vorgenommen, die eine Neukonfiguration des Herausgebers erfordern
Änderungen an Replikationsmetadatentabellen oder -verfahren erfordern, dass Sie den Publisher neu einrichten, nachdem Sie ihn gelöscht haben. Um den Publisher neu zu konfigurieren, müssen Sie den Publisher ablegen und erneut mithilfe von SQL Server Management Studio, Transact-SQL oder RMO konfigurieren. Informationen zum Konfigurieren von Publisher finden Sie unter Konfigurieren eines Oracle Publisher.
So legen Sie einen Oracle Publisher (SQL Server Management Studio) ab
Stellen Sie eine Verbindung mit dem Distributor für Oracle Publisher in SQL Server Management Studio 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 "Herausgeber " des Dialogfelds " Händlereigenschaften " das Kontrollkästchen für Oracle Publisher.
Klicke auf OK.
So legen Sie einen Oracle Publisher (Transact-SQL) ab
- Führen Sie sp_dropdistpublisher aus. Weitere Informationen finden Sie unter sp_dropdistpublisher (Transact-SQL).
Siehe auch
Konfigurieren eines Oracle Publisher
Oracle Publishing (Übersicht)