Problembehandlung bei Oracle-VerlegernTroubleshooting Oracle Publishers

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions)

In diesem Thema wird eine Reihe von Problemen aufgeführt, die bei der Konfiguration und Verwendung von Oracle-Verlegern auftreten können.This topic lists a number of issues that might arise when configuring and using an Oracle Publisher.

Fehler bezüglich Oracle-Client- und NetzwerksoftwareAn Error Is Raised Regarding Oracle Client and Networking Software

Dem Konto, unter dem MicrosoftMicrosoft SQL ServerSQL Server auf dem Verteiler ausgeführt wird, müssen Lese- und Ausführungsberechtigungen für das Verzeichnis (und alle Unterverzeichnisse) erteilt werden, in dem die Oracle-Clientnetzwerksoftware installiert ist.The account under which MicrosoftMicrosoft SQL ServerSQL Server runs on the Distributor must be granted read and execute permissions for the directory (and all subdirectories) in which the Oracle client networking software is installed. Wenn diese Berechtigungen nicht erteilt worden sind oder die Oracle-Clientkomponenten nicht ordnungsgemäß installiert sind, wird eine Fehlermeldung ähnlich der folgenden angezeigt:If the permissions are not granted or the Oracle client components are not installed properly, you will receive the following error message:

"Fehler bei der Serververbindung mit [Microsoft OLE DB-Anbieter für Oracle]."Connection to server failed with [Microsoft OLE DB Provider for Oracle]. Oracle Client- und Netzwerkverbindung konnten nicht gefunden werden.Oracle client and networking components were not found. Diese Komponenten werden von der Oracle Corporation geliefert und mit der Clientsoftware von Oracle, Version 7.3.3 oder höher, installiert.These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 or later client software installation. Sie müssen diese Komponenten installieren, um den Provider verwenden zu können."Provider is unable to function until these components are installed."

Wenn ein entsprechender Oracle-Client auf dem Verteiler installiert wurde, stellen Sie sicher, dass SQL ServerSQL Server angehalten wurde, und dann nach Abschluss der Clientinstallation erneut gestartet wird.If an appropriate Oracle client has been installed at the Distributor, ensure that SQL ServerSQL Server was stopped and then restarted after the client installation completed. Dies ist erforderlich, damit die Clientkomponenten von SQL ServerSQL Server erkannt werden.This is required in order for SQL ServerSQL Server to recognize the client components.

Wenn die Berechtigungen tatsächlich erteilt und die Komponenten ordnungsgemäß installiert sind und der Fehler trotzdem weiterhin angezeigt wird, sollten Sie die Registrierungseinstellungen unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI überprüfen:If you have verified that permissions are granted and that components are installed correctly, but this error persists, verify that the registry settings at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI are correct:

  • Für Oracle 10g gelten folgende Einstellungen:For Oracle 10g, the correct settings are

    • OracleOciLib = oci.dllOracleOciLib = oci.dll

    • OracleSqlLib = orasql10.dllOracleSqlLib = orasql10.dll

    • OracleXaLib = oraclient10.dllOracleXaLib = oraclient10.dll

  • Für Oracle 9i gelten folgende Einstellungen:For Oracle 9i, the correct settings are

    • OracleOciLib = oci.dllOracleOciLib = oci.dll

    • OracleSqlLib = orasql9.dllOracleSqlLib = orasql9.dll

    • OracleXaLib = oraclient9.dllOracleXaLib = oraclient9.dll

Verbindung zwischen SQL Server-Verteiler und Oracle-Datenbankinstanz nicht möglichThe SQL Server Distributor Cannot Connect to the Oracle Database Instance

Wenn der SQL ServerSQL Server -Verteiler keine Verbindung mit dem Oracle-Verleger herstellen kann, sollten Sie sicherstellen, dass die folgenden Anforderungen erfüllt sind:If the SQL ServerSQL Server Distributor cannot connect to the Oracle Publisher, ensure that:

  • Auf dem Verteiler ist die notwendige Oracle-Software installiert.The necessary Oracle software is installed on the Distributor.

  • Die Oracle-Datenbank ist online, und Sie können mit einem Tool wie SQL*Plus eine Verbindung mit der Datenbank herstellen.The Oracle database is online and you can connect to it using a tool like SQL*Plus.

  • Der Anmeldename, den die Replikation zur Herstellung einer Verbindung mit dem Oracle-Verleger verwendet, verfügt über ausreichende Berechtigungen.The login replication uses to connect to the Oracle Publisher has sufficient permissions. Weitere Informationen finden Sie unter Konfigurieren eines Oracle-Verlegers.For more information, see Configure an Oracle Publisher.

  • Die während der Konfiguration des Oracle-Verteilers definierten TNS-Namen sind in der Datei tnsnames.ora aufgeführt.The TNS names defined during configuration of the Oracle Publisher are listed in the tnsnames.ora file.

  • Das richtige Oracle Home-Verzeichnis und der entsprechende Pfad werden verwendet.The correct Oracle Home and path are used. Auch wenn Sie nur einen einzigen Satz von Oracle-Binärdateien auf dem SQL ServerSQL Server -Verteiler installiert haben, muss sichergestellt sein, dass die Umgebungsvariablen für das Oracle Home-Verzeichnis ordnungsgemäß festgelegt wurden.Even if you have only one set of Oracle binaries installed on the SQL ServerSQL Server Distributor, ensure that the environment variables related to the Oracle Home are set properly. Wenn Sie Werte für Umgebungsvariablen ändern, müssen Sie SQL ServerSQL Server beenden und neu starten, damit die Änderungen wirksam werden.If you change environment variable values, you must stop and restart SQL ServerSQL Server for the change to take effect.

Weitere Informationen zum Konfigurieren und Testen der Konnektivität finden Sie im Abschnitt zum „Installieren und Konfigurieren der Oracle-Clientnetzwerksoftware auf dem SQL ServerSQL Server-Verteiler“ in Konfigurieren eines Oracle-Verlegers.For more information about configuring and testing connectivity, see "Installing and Configuring Oracle Client Networking Software on the SQL ServerSQL Server Distributor" in Configure an Oracle Publisher.

Oracle-Verleger ist mit anderem Verteiler verknüpftThe Oracle Publisher Is Associated with Another Distributor

Jeder Oracle-Verleger kann immer nur mit einem SQL ServerSQL Server -Verteiler verknüpft sein.An Oracle Publisher can only be associated with one SQL ServerSQL Server Distributor. Wenn der Oracle-Verleger bereits mit einem anderen Verteiler verknüpft ist, muss diese Zuordnung gelöscht werden, bevor ein anderer Verteiler verwendet werden kann.If a different Distributor is associated with the Oracle Publisher, it must be dropped before another Distributor can be used. Wird die Zuordnung des Verteilers nicht gelöscht, wird eine der folgenden Fehlermeldungen angezeigt:If the Distributor is not dropped first, you will receive one of the following error messages:

  • Die Oracle-Serverinstanz "<OraclePublisherName>" wurde zum Verwenden von "<SQLServerDistributorName>" als Verteiler konfiguriert."Oracle server instance '<OraclePublisherName>' has been previously configured to use '<SQLServerDistributorName>' as its Distributor. 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."To begin using '<NewSQLServerDistributorName>' as its Distributor, you must remove the current replication configuration on the Oracle server instance, which will delete all publications on that server instance."

  • "Der Oracle-Server "<OracleServerName>" ist bereits als Verleger "<OraclePublisherName>" auf dem Verteiler "<SQLServerDistributorName>. <DistributionDatabaseName> " definiert."Oracle server '<OracleServerName>' is already defined as publisher '<OraclePublisherName>' on distributor '<SQLServerDistributorName>.<DistributionDatabaseName>'. Löschen Sie den Verleger, oder löschen Sie das öffentliche Synonym " <SynonymName> " zur erneuten Erstellung."Drop the publisher or drop the public synonym '<SynonymName>' to recreate."

Wenn die Zuordnung eines Oracle-Verlegers gelöscht wird, werden die Replikationsobjekte in der Oracle-Datenbank automatisch bereinigt.When an Oracle Publisher is dropped, the replication objects in the Oracle database are automatically cleaned up. In einigen Fällen ist jedoch auch eine manuelle Bereinigung der Oracle-Replikationsobjekte erforderlich.However, manual cleanup of the Oracle replication objects is necessary in some cases. So bereinigen Sie die durch die Replikation erstellten Oracle-Replikationsobjekte manuell:To manually clean up Oracle replication objects created by replication:

  1. Stellen Sie eine Verbindung mit dem Oracle-Verleger mit DBA-Berechtigungen her.Connect to the Oracle publisher with DBA permissions.

  2. Führen Sie den SQL-Befehl DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;aus.Issue the SQL command DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;.

  3. Führen Sie den SQL-Befehl DROP USER <replication_administrative_user_schema>``CASCADE;aus.Issue the SQL command DROP USER <replication_administrative_user_schema>``CASCADE;.

SQL Server-Fehler 21663 (Fehlen des Primärschlüssels) wurde ausgelöstSQL Server Error 21663 Is Raised Regarding the Lack of a Primary Key

Artikel in Transaktionsveröffentlichungen müssen über einen gültigen Primärschlüssel verfügen.Articles in transactional publications must have a valid primary key. Fehlt dieser Primärschlüssel, finden Sie beim Versuch, den Artikel hinzuzufügen, die folgende Fehlermeldung:If they do not have a valid primary key, you will receive the following error message when you attempt to add an article:

"Für die [<TableOwner>].[<TableName>]-Quelltabelle wurde kein gültiger Primärschlüssel gefunden.""No valid primary key found for source table [<TableOwner>].[<TableName>]"

Informationen zu den Anforderungen für Primärschlüssel finden Sie im Abschnitt zu eindeutigen Indizes und Einschränkungen im Thema Design Considerations and Limitations for Oracle Publishers.For information about requirements for primary keys, see the section "Unique Indexes and Constraints" in the topic Design Considerations and Limitations for Oracle Publishers.

SQL Server-Fehler 21642 (Verbindungsserver bereits vorhanden) wurde ausgelöstSQL Server Error 21642 Is Raised Regarding a Duplicate Linked Server Login

Wenn ein Oracle-Verleger zum ersten Mal konfiguriert wird, wird für die Verbindung zwischen dem Verleger und dem Verteiler ein Verbindungsservereintrag erstellt.When an Oracle Publisher is initially configured, a linked server entry is created for the connection between the Publisher and the Distributor. Der Verbindungsserver hat denselben Namen wie der Oracle-TNS-Dienst.The linked server has the same name as the Oracle TNS service name. Wenn Sie versuchen, einen Verbindungsserver mit demselben Namen zu erstellen, wird die folgende Fehlermeldung angezeigt:If you attempt to create a linked server with the same name, the following error message is shown:

"Für heterogene Verleger ist ein Verbindungsserver erforderlich."Heterogeneous publishers require a linked server. Ein Verbindungsserver mit dem Namen " <LinkedServerName> " ist bereits vorhanden.A linked server named '<LinkedServerName>' already exists. Entfernen Sie den Verbindungsserver, oder wählen Sie einen anderen Verlegernamen aus."Please remove linked server or choose a different publisher name."

Dieser Fehler kann auftreten, wenn Sie versuchen, den Verbindungsserver direkt zu erstellen, oder die Beziehung zwischen dem Oracle-Verleger und dem SQL ServerSQL Server -Verteiler zuvor gelöscht haben und jetzt versuchen, diese Beziehung neu zu konfigurieren.This error can occur if you attempt to create the linked server directly or if you have previously dropped the relationship between the Oracle Publisher and the SQL ServerSQL Server Distributor, and you are now attempting to reconfigure it. Wenn Sie beim Neukonfigurieren des Verlegers diese Fehlermeldung erhalten, löschen Sie den Verbindungsserver mit sp_dropserver (Transact-SQL).If you receive this error while attempting to reconfigure the Publisher, drop the linked server with 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.If you need to connect to the Oracle Publisher over a linked server connection, create another TNS service name, and then use this name when calling sp_addlinkedserver (Transact-SQL). Informationen zum Erstellen von TNS-Dienstnamen finden Sie in der Oracle-Dokumentation.For information about creating TNS service names, see the Oracle documentation.

SQL Server-Fehler 21617 wurde ausgelöstSQL Server Error 21617 Is Raised

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.Oracle publishing uses the Oracle application SQL*PLUS to download the package of Publisher support code to the Oracle database. Bevor der Oracle-Verleger konfiguriert wird, überprüft SQL ServerSQL Server, ob auf SQL*PLUS über den Systempfad auf dem Verteiler zugegriffen werden kann.Before attempting to configure the Oracle Publisher, SQL ServerSQL Server verifies that SQL*PLUS is accessible through the system path on the Distributor. Wenn SQL*PLUS nicht geladen werden kann, wird die folgende Meldung angezeigt:If SQL*PLUS cannot be loaded, the following error message is shown:

"SQL*PLUS konnte nicht ausgeführt werden."Unable to run SQL*PLUS. Stellen Sie sicher, dass die aktuelle Version des Oracle-Clientcodes auf dem Verteiler installiert ist."Make certain that a current version of the Oracle client code is installed at the distributor."

Suchen Sie nach SQL*PLUS auf dem Verteiler.Try to locate SQL*PLUS on the Distributor. Bei einer Oracle 10g-Clientinstallation lautet der Name dieser ausführbaren Datei sqlplus.exe.For an Oracle 10g client install, the name of this executable is sqlplus.exe. Sie ist normalerweise in %ORACLE_HOME%/bin installiert.It is typically installed in %ORACLE_HOME%/bin. Um zu überprüfen, ob der Pfad von SQL*PLUS im Systempfad angezeigt wird, untersuchen Sie den Wert der Systemvariablen Path:To verify that the path of SQL*PLUS appears in the system path, examine the value of the system variable Path:

  1. Klicken Sie mit der rechten Maustaste auf Arbeitsplatz, und klicken Sie dann auf Eigenschaften.Right-click My Computer, and then click Properties.

  2. Klicken Sie auf die Registerkarte Erweitert , und klicken Sie dann auf Umgebungsvariablen.Click the Advanced tab, and then click Environment variables.

  3. Wählen Sie im Dialogfeld Umgebungsvariablen in der Liste Systemvariablen die Variable Path aus, und klicken Sie dann auf Bearbeiten.In the Environment Variables dialog box, in the System variables list, select the Path variable, and then click Edit.

  4. Wenn im Dialogfeld Systemvariable bearbeiten der Pfad des Ordners, in dem sqlplus.exe enthalten ist, nicht im Textfeld Wert der Variablen vorhanden ist, bearbeiten Sie die Zeichenfolge entsprechend.In the Edit System Variable dialog box: if the path to the folder that contains sqlplus.exe is not present in the Variable value text box, edit the string to include it.

  5. Klicken Sie in jedem geöffneten Dialogfeld auf OK , um den Vorgang zu beenden und die Änderungen zu speichern.Click OK on each open dialog box to exit and save changes.

Wenn Sie sqlplus.exe auf dem Verteiler nicht finden können, installieren Sie die aktuelle Version der Oracle-Clientsoftware auf dem Verteiler.If you cannot locate sqlplus.exe on the Distributor, install a current version of the Oracle client software at the Distributor. Weitere Informationen finden Sie unter Konfigurieren eines Oracle-Verlegers.For more information, see Configure an Oracle Publisher.

SQL Server-Fehler 21620 wurde ausgelöstSQL Server Error 21620 Is Raised

Wenn Sie eine Verbindung mit einer Oracle-Datenbank vor Version 8.1 herstellen, muss für die Oracle-Veröffentlichung mindestens die Version 9 der Oracle-Clientsoftware auf dem Verteiler installiert sein.If you are connecting to an Oracle database earlier than version 8.1, Oracle publishing requires that the Oracle client software installed on the Distributor be from version 9. Wenn Sie eine Verbindung mit einer Oracle-Datenbank der Version 8.1 oder höher herstellen, wird empfohlen, mindestens die Version 10 der Oracle-Clientsoftware zu verwenden.If you are connecting to an Oracle database that is version 8.1 or later, we recommend that the Oracle client software be version 10 or later.

Bevor der Oracle-Verleger konfiguriert wird, wird beim Veröffentlichen mit Oracle überprüft, ob es sich bei der Version von SQL*PLUS, auf die über den Systempfad auf dem Verteiler zugegriffen werden kann, um Version 9 oder höher handelt.Before attempting to configure the Oracle Publisher, Oracle publishing verifies that the version of SQL*PLUS accessible through the system path on the Distributor is version 9 or later. Ist dies nicht der Fall, wird die folgende Meldung angezeigt:If it is not, the following error message is shown:

"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."The version of SQL*PLUS that is accessible through the system Path variable is not current enough to support Oracle publishing. Stellen Sie sicher, dass die aktuelle Version des Oracle-Clientcodes auf dem Verteiler installiert ist."Make certain that a current version of the Oracle client code is installed at the distributor."

Wenn Sie mehrere Versionen der Oracle-Clientsoftware auf dem Verteiler installiert haben, müssen Sie sicherstellen, dass es sich bei der aktuellsten Version mindestens um Version 9 handelt und dass die Systemvariable Path zuerst auf diese Version verweist (sofern die neueste Version zuerst angezeigt wird, können auch Verweise auf andere Versionen angezeigt werden).If you have multiple versions of the Oracle client software installed on the Distributor, make sure that the most current version is at least version 9 and that the system path variable refers first to this version (references to other versions can appear as long as the most recent appears first). Weitere Informationen zum Bearbeiten der Systemvariable Path finden Sie im Abschnitt "SQL Server-Fehler 21617 wurde ausgelöst" weiter oben in diesem Thema.For more information about editing the system path variable, see the section "SQL Server Error 21617 is Raised" earlier in this topic.

SQL Server-Fehler 21624 oder 21629 wurde ausgelöstSQL Server Error 21624 or Error 21629 Is Raised

Bei 64-Bit-Verteilern wird für das Veröffentlichen mit Oracle der OLE DB-Anbieter von Oracle (OraOLEDB.Oracle) verwendet.For 64-bit Distributors, Oracle publishing uses the Oracle OLEDB Provider for Oracle (OraOLEDB.Oracle). Stellen Sie sicher, dass der OLE DB-Anbieter von Oracle auf dem Verteiler installiert und registriert ist.Make sure that the Oracle OLEDB provider is installed and registered on the Distributor. Wenn der Anbieter nicht installiert und registriert ist, werden eine oder beide der folgenden Fehlermeldungen angezeigt:If the provider is not installed and registered, one or both of the following error messages is shown:

  • "Der registrierte OLE DB-Anbieter von Oracle, OraOLEDB.Oracle, wurde auf dem Verteiler '%s' nicht gefunden."Unable to locate the registered Oracle OLEDB provider, OraOLEDB.Oracle, at distributor '%s'. Stellen Sie sicher, dass die aktuelle Version des OLE DB-Anbieters von Oracle auf dem Verteiler installiert und registriert ist."Make certain that a current version of the Oracle OLEDB provider is installed and registered at the distributor."

  • "Der CLSID-Registrierungsschlüssel, der anzeigt, dass der OLE DB-Anbieter von Oracle, OraOLEDB.Oracle, registriert wurde, ist auf dem Verteiler nicht vorhanden."The CLSID registry key indicating that the Oracle OLEDB Provider for Oracle, OraOLEDB.Oracle, has been registered is not present at the distributor. Stellen Sie sicher, dass der OLE DB-Anbieter von Oracle auf dem Verteiler installiert und registriert ist."Make certain that the Oracle OLEDB provider is installed and registered at the distributor."

Wenn Sie die Version 10g der Oracle-Clientsoftware verwenden, lautet der Dateiname des Anbieters OraOLEDB10.dll. Für Version 9i lautet er OraOLEDB.dll.If you are using Oracle client software version 10g, the provider is OraOLEDB10.dll; for version 9i, it is OraOLEDB.dll. Der Anbieter wird in %ORACLE_HOME%\BIN installiert (beispielsweise C:\oracle\product\10.1.0\Client_1\bin).The provider is installed in %ORACLE_HOME%\BIN (for example, C:\oracle\product\10.1.0\Client_1\bin). Wenn Sie feststellen, dass der OLE DB-Anbieter von Oracle nicht auf dem Verteiler installiert ist, installieren Sie ihn über die von Oracle bereitgestellte Installations-CD mit der Oracle-Clientsoftware.If you determine that the Oracle OLEDB provider is not installed on the Distributor, install it from the Oracle client software install disc provided by Oracle. Weitere Informationen finden Sie unter Konfigurieren eines Oracle-Verlegers.For more information, see Configure an Oracle Publisher.

Wenn der OLE DB-Anbieter von Oracle installiert ist, stellen Sie sicher, dass er registriert ist.If the Oracle OLEDB provider is installed, make sure that it is registered. Führen Sie zum Registrieren der Anbieter-DLL den folgenden Befehl in dem Verzeichnis aus, in dem die DLL installiert ist. Beenden Sie die SQL ServerSQL Server -Instanz, und starten Sie sie dann erneut:To register the provider DLL, execute the following command from the directory in which the DLL is installed, and then stop and restart the SQL ServerSQL Server instance:

  1. regsvr32 OraOLEDB10.dll oder regsvr32 OraOLEDB.dllregsvr32 OraOLEDB10.dll or regsvr32 OraOLEDB.dll.

SQL Server-Fehler 21626 oder 21627 wurde ausgelöstSQL Server Error 21626 or Error 21627 Is Raised

Um zu überprüfen, ob die Umgebung zum Veröffentlichen mit Oracle ordnungsgemäß konfiguriert ist, versucht SQL ServerSQL Server mit den Anmeldeinformationen, die Sie während der Konfiguration angegeben haben, eine Verbindung mit dem Oracle-Verleger herzustellen.To verify that the Oracle publishing environment is configured properly, SQL ServerSQL Server tries to connect to the Oracle Publisher with the login credentials you specified during configuration. Wenn der SQL ServerSQL Server -Verteiler keine Verbindung mit dem Oracle-Verleger herstellen kann, wird die folgende Fehlermeldung angezeigt:If the SQL ServerSQL Server Distributor cannot connect to the Oracle Publisher, the following error message is shown:

  • "Die Verbindung mit dem Oracle-Datenbankserver '%s' kann mithilfe des OLE DB-Anbieters von Oracle, OraOLEDB.Oracle, nicht hergestellt werden.""Unable to connect to Oracle database server '%s' using the Oracle OLEDB provider OraOLEDB.Oracle."

Wenn diese Fehlermeldung angezeigt wird, überprüfen Sie die Verbindung mit der Oracle-Datenbank, indem Sie SQL*PLUS direkt mit der gleichen Anmeldung und dem gleichen Kennwort ausführen, wie während der Konfiguration des Oracle-Verlegers angegeben.If this error message is shown, verify connectivity to the Oracle database by running SQL*PLUS directly using the same login and password specified during configuration of the Oracle Publisher. Weitere Informationen finden Sie im Abschnitt "Verbindung zwischen SQL Server-Verteiler und Oracle-Datenbankinstanz nicht möglich" weiter oben in diesem Thema.For more information, see the section "The SQL Server Distributor Cannot Connect to the Oracle Database Instance" earlier in this topic.

SQL Server-Fehler 21628 wurde ausgelöstSQL Server Error 21628 Is Raised

Bei 64-Bit-Verteilern wird für das Veröffentlichen mit Oracle der OLE DB-Anbieter von Oracle (OraOLEDB.Oracle) verwendet.For 64-bit Distributors, Oracle publishing uses the Oracle OLEDB Provider for Oracle (OraOLEDB.Oracle). SQL ServerSQL Server erstellt einen Registrierungseintrag, damit der Oracle-Anbieter in einem Prozess mit SQL ServerSQL Serverausgeführt werden kann.creates a registry entry to allow the Oracle provider to run in process with SQL ServerSQL Server. Wenn beim Lesen oder Schreiben dieses Registrierungseintrags ein Problem auftritt, wird die folgende Fehlermeldung angezeigt:If there is a problem reading or writing this registry entry, the following error message is shown:

"Die Registrierung des Verteilers '%s' kann nicht so aktualisiert werden, dass der OLE DB-Anbieter von Oracle, OraOLEDB.Oracle, in einem Prozess mit SQL ServerSQL Serverausgeführt werden kann."Unable to update the registry of distributor '%s' to allow Oracle OLEDB provider OraOLEDB.Oracle to run in process with SQL ServerSQL Server. Stellen Sie sicher, dass der aktuelle Anmeldename autorisiert ist, Registrierungsschlüssel im Besitz von SQL ServerSQL Server zu ändern."Make certain that current login is authorized to modify SQL ServerSQL Server owned registry keys."

Für das Veröffentlichen mit Oracle muss der Registrierungseintrag für 64-Bit-Verteiler vorhanden und auf 1 festgelegt sein.Oracle publishing requires the registry entry to exist and to be set to 1 for 64 bit Distributors. Wenn der Eintrag nicht vorhanden ist, versucht SQL ServerSQL Server , ihn zu erstellen.If the entry does not exist, SQL ServerSQL Server will attempt to create it. Wenn der Eintrag vorhanden ist, aber auf 0festgelegt wurde, wird die Einstellung nicht geändert. Die Konfiguration des Oracle-Verlegers erzeugt dann einen Fehler.If the entry exists, but is set to 0, the setting will not be changed; the configuration of the Oracle Publisher will fail.

So zeigen Sie die Registrierungseinstellung an und ändern sieTo view and modify the registry setting:

  1. Klicken Sie im Startmenüauf Ausführen.Click Start, and then click Run.

  2. Geben Sie regedit im Dialogfeld Ausführenein, und klicken Sie dann auf OK.In the Run dialog box, type regedit, and then click OK.

  3. Navigieren Sie zu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\ <InstanceName> \Providers.Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName> \Providers.

    Unter Providers sollte sich ein Ordner mit dem Namen OraOLEDB.Oracle befinden.Included under Providers should be a folder named OraOLEDB.Oracle. In diesem Ordner sollte sich der DWORD-Wert mit dem Namen AllowInProcessund dem Wert 1befinden.Within this folder should be the DWORD value name AllowInProcess, with a value of 1.

  4. Wenn Sie feststellen, dass für AllowInProcess der Wert 0festgelegt ist, ändern Sie den Registrierungseintrag auf 1:If you determine that AllowInProcess is set to 0, update the registry entry to 1:

    1. Klicken Sie mit der rechten Maustaste auf den Eintrag, und klicken Sie dann auf Ändern.Right-click the entry, and then click Modify.

    2. Geben Sie im Dialogfeld Zeichenfolge bearbeiten in das Feld Wert den Wert 1 ein.In the Edit String dialog box, type 1 in the Value data field.

SQL Server-Fehler 21684 wurde ausgelöstSQL Server Error 21684 Is Raised

Wenn das administrative Benutzerkonto nicht über ausreichende Berechtigungen verfügt, wird die folgende Fehlermeldung angezeigt:If the administrative user account does not have sufficient privileges, the following error message is shown:

"Der Administratoranmeldung für den '%s'-Oracle-Verleger sind unzureichende Berechtigungen zugeordnet.""The permissions associated with the administrator login for Oracle publisher '%s' are not sufficient."

Führen Sie zum Überprüfen der dem Benutzer erteilten Berechtigungen die folgende Abfrage aus: SELECT * from session_privs.To verify the permissions granted to the user, execute the following query: SELECT * from session_privs. Die Ausgabe sollte ähnlich der Folgenden aussehen:The output should be similar to the following:

PRIVILEGE

------------------

CREATE SESSION

CREATE TABLE

CREATE PUBLIC SYNONYM

DROP PUBLIC SYNONYM

CREATE VIEW

CREATE SEQUENCE

CREATE PROCEDURE

CREATE TRIGGER

Berechtigungsprobleme beim Benutzerschema für die ReplikationYou Encounter Permissions Issues for the Replication User Schema

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.The replication user schema must have the permissions described in "Creating the User Schema Manually" in Configure an Oracle Publisher.

Oracle-Fehler ORA-01000Oracle Error ORA-01000

Die Replikation verwendet für das Hinzufügen von Artikeln zu einer Veröffentlichung Cursor auf dem Oracle-Verleger.Replication uses cursors on the Oracle Publisher during the process of adding articles to a publication. Während dieses Vorgangs kann es passieren, dass die Höchstzahl der auf dem Verleger verfügbaren Cursor überstiegen wird.It is possible to exceed the maximum number of cursors available on the Publisher during this process. In diesem Fall wird der folgende Fehler ausgelöst:If this occurs, the following error is raised:

"ORA-01000: maximum open cursors exceeded""ORA-01000: maximum open cursors exceeded"

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.To avoid this problem, ensure that the max_open_cursors setting in the Oracle databases is set to a sufficiently high number (at least 1000). Weitere Informationen zu dieser Einstellung finden Sie in der Oracle-Dokumentation.For more information about this setting, see the Oracle documentation.

Oracle-Fehler ORA-01555Oracle Error ORA-01555

Die folgende Oracle-Datenbankfehlermeldung bezieht sich nicht auf die Snapshotreplikation, sondern darauf, wie Oracle lesekonsistente Datensichten konstruiert:The following Oracle database error is not related to snapshot replication; it is related to how Oracle constructs read-consistent views of data:

„ORA-01555: Snapshot too old“"ORA-01555: Snapshot too old"

Oracle verwendet so genannte Rollbacksegmente, um lesekonsistente Datensichten zu erstellen, die den Stand zum Zeitpunkt der Ausführung einer SQL-Anweisung wiedergeben.Using objects known as rollback segments, Oracle constructs read-consistent views of data as of the point in time a SQL statement is issued. Die Fehlermeldung "snapshot too old" (Snapshot zu alt) kann angezeigt werden, wenn die Rollbackinformationen von anderen gleichzeitigen Sitzungen überschrieben werden.A "snapshot too old" error might occur when rollback information is overwritten by other concurrent sessions. 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.Prior to Oracle 9i, the recommended method of reducing the frequency of this error was to increase the size and/or number of rollback segments, and to assign large transactions to a specific rollback segment.

Seit Oracle 9i gibt es das UNDO-Tabellenbereichskonzept, das an die Stelle der Rollbacksegmente getreten ist.In Oracle 9i, Oracle introduced the UNDO tablespace concept, which replaces the rollback segment. Zur Vermeidung der Fehlermeldung "snapshot too old" in Oracle 9i sollten Sie wie folgt vorgehen:To prevent the "snapshot too old" error in Oracle 9i, it is recommended that you:

  • Erstellen Sie einen UNDO-Tabellenbereich mit ausreichend freiem Speicherplatz.Create an UNDO tablespace with an appropriate amount of free space.

  • Legen Sie für den Tabellenbereich die den Wert für Retention Guarantee fest (ab Oracle 10G).Set the retention guarantee on the tablespace (Oracle 10G and greater).

  • Konfigurieren Sie die Oracle-Initialisierungsparameter UNDO_MANAGEMENT und UNDO_RETENTION.Configure the Oracle initialization parameters UNDO_MANAGEMENT and UNDO_RETENTION.

Weitere Informationen zur Fehlermeldung "snapshot too old" finden Sie in der Oracle-Dokumentation.For further details about avoiding the "snapshot too old" error, consult the Oracle documentation.

Oracle-Fehler ORA-22285Oracle Error ORA-22285

Wenn eine Tabelle eine BFILE-Spalte enthält, werden die Daten für die Spalte im Dateisystem gespeichert.If a table includes a BFILE column, the data for the column is stored in the file system. Dem Administratorkonto für die Replikation muss Zugriff auf das Verzeichnis gewährt werden, in dem die Daten gespeichert sind. Dabei ist die folgende Syntax zu verwenden:The replication administrative user account must be granted access to the directory in which the data is stored using the following syntax:

GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>

Wenn kein Zugriff gewährt wird, gibt der Protokolllese-Agent die folgende Fehlermeldung aus:If access is not granted, the following error is raised by the Log Reader Agent:

"ORA-22285: non-existent directory or file for FILEOPEN operation""ORA-22285: non-existent directory or file for FILEOPEN operation"

Verleger muss aufgrund von Änderungen neu konfiguriert werdenChanges Are Made That Require Reconfiguration of the Publisher

Aufgrund von Änderungen der Metadatentabellen oder der Prozeduren für die Replikation muss die Zuordnung des Verlegers gelöscht oder neu konfiguriert werden.Changes to replication metadata tables or procedures require that you drop and reconfigure the Publisher. Wenn Sie den Verleger neu konfigurieren möchten, müssen Sie die Zuordnung löschen und dann mithilfe von SQL Server Management StudioSQL Server Management Studio, Transact-SQL oder RMO neu konfigurieren.To reconfigure the Publisher, you must drop the Publisher and configure it again using SQL Server Management StudioSQL Server Management Studio, Transact-SQL, or RMO. Informationen zum Konfigurieren des Verlegers finden Sie unter Konfigurieren eines Oracle-Verlegers.For information about configuring the Publisher, see Configure an Oracle Publisher.

So löschen Sie einen Oracle-Verleger ( SQL Server Management Studio )To drop an Oracle Publisher ( SQL Server Management Studio )

  1. Stellen Sie in SQL Server Management StudioSQL Server Management Studio eine Verbindung mit dem Verteiler für den Oracle-Verleger her, und erweitern Sie dann den Serverknoten.Connect to the Distributor for the Oracle Publisher in SQL Server Management StudioSQL Server Management Studio and expand the server node.

  2. Klicken Sie mit der rechten Maustaste auf Replikation, und klicken Sie dann auf Verteilereigenschaften.Right-click Replication, and then click Distributor Properties.

  3. Deaktivieren Sie auf der Seite Verleger des Dialogfelds Verteilereigenschaften das Kontrollkästchen für den Oracle-Verleger.On the Publishers page of the Distributor Properties dialog box, clear the check box for the Oracle Publisher.

  4. Klicken Sie auf OK.Click OK.

So löschen Sie die Zuordnung eines Oracle-Verlegers (Transact-SQL)To drop an Oracle Publisher (Transact-SQL)

Weitere InformationenSee Also

Konfigurieren eines Oracle-Verlegers Configure an Oracle Publisher
Veröffentlichungen mit Oracle (Übersicht)Oracle Publishing Overview