Udostępnij za pośrednictwem


Rozwiązywanie problemów z Oracle wydawców

W tym temacie zamieszczono listę problemów, które mogą powstać podczas konfigurowania i korzystania z Wydawca Oracle.

Błąd jest wywoływane dotyczące klienta Oracle i oprogramowanie sieciowe

The account under which Microsoft SQL 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.Jeżeli nie udzielono uprawnienia lub składniki klient Oracle nie są prawidłowo zainstalowane, zostanie wyświetlony następujący komunikat o błędzie:

"Połączenie z serwerem nie powiodło się [Microsoft OLE DB Provider for Oracle].Nie znaleziono Oracle klient i składników sieciowych.Składniki te są dostarczane przez firmę Oracle Corporation i są częścią Oracle w wersji 7.3.3 lub nowszej instalacji oprogramowania klient.Dostawca nie będzie funkcja do momentu zainstalowania tych składników. "

Jeśli odpowiedniego klient Oracle został zainstalowany na dystrybutora, zapewnić, że SQL Server została zatrzymana i następnie ponownie uruchomiony po instalacji klient ukończone.Jest to wymagane w celu SQL Server rozpoznać składniki klient.

Jeżeli po sprawdzeniu, że uprawnienia i że składniki są instalowane poprawnie, ale ten błąd nie zniknie, sprawdź poprawność ustawień rejestru na HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI:

  • Oracle 10 g są poprawne ustawienia.

    • OracleOciLib = oci.dll

    • OracleSqlLib = orasql10.dll

    • OracleXaLib = oraclient10.dll

  • Oracle 9i są poprawne ustawienia.

    • OracleOciLib = oci.dll

    • OracleSqlLib = orasql9.dll

    • OracleXaLib = oraclient9.dll

Dystrybutor SQL Server nie może połączyć się z wystąpienie bazy danych Oracle

Jeśli SQL Server dystrybutora nie może połączyć się z Oracle Wydawca, upewnij się, że:

  • Na dystrybutora, zainstalowano niezbędne oprogramowanie Oracle.

  • Baza danych Oracle jest w trybie online i można połączyć za pomocą narzędzie, takie jak SQL * Plus.

  • Replikacja logowania używa do łączenia się z Oracle Wydawca ma wystarczające uprawnienia.Aby uzyskać więcej informacji, zobacz Konfigurowanie Wydawca Oracle.

  • Nazwy TNS podczas konfiguracji Oracle Wydawca są wymienione w pliku tnsnames.ora.

  • Są używane poprawne Główny Oracle i ścieżka.Nawet jeśli użytkownik ma tylko jeden zestaw plików binarnych Oracle zainstalowane na SQL Server dystrybutor, zapewnienia zmienne środowiskowe związane z Główny Oracle są prawidłowo ustawione.Zmiana wartości zmiennych środowiskowych, należy zatrzymać i ponownie uruchomić SQL Server zmiana odniosła skutek.

Aby uzyskać więcej informacji dotyczących konfigurowania i testowania łączności, zobacz "Instalowanie i konfigurowanie oprogramowania sieci klienta Oracle w SQL Server dystrybutor" in Konfigurowanie Wydawca Oracle.

Wydawca Oracle jest skojarzony z innego dystrybutora

Wydawca Oracle można tylko skojarzony z jednym SQL Server dystrybutora.Jeśli innego dystrybutora jest skojarzone z programem Wydawca Oracle, musi być przerwane przed użyciem innego dystrybutora.Jeśli dystrybutor, nie zostało porzucone pierwszy, zostanie wyświetlony jeden z następujących komunikatów o błędach:

  • "Wystąpienie serwera oracle"<OraclePublisherName>" był wcześniej skonfigurowany do używania "<SQLServerDistributorName>" jak jego dystrybutor.Aby rozpocząć korzystanie z "<NewSQLServerDistributorName>" jak jego dystrybutor, należy usunąć bieżącej konfiguracja replikacja na serwerze Oracle wystąpienie, co spowoduje usunięcie wszystkich publikacji na serwerze wystąpienie. "

  • "Serwera oracle server '<OracleServerName>" jest już zdefiniowany jako wydawca "<OraclePublisherName>" dystrybutor "<SQLServerDistributorName>.<DistributionDatabaseName>".Upuść wydawcy lub upuszczania synonimu public "<SynonymName>' Aby odtworzyć."

Po upuszczeniu Wydawca Oracle obiekty replikacja bazy danych Oracle są automatycznie czyszczone.Jednak w niektórych przypadkach konieczne jest Oczyszczanie ręczne obiektów replikacja Oracle.Aby ręcznie wyczyścić Oracle replikacja obiektów utworzonych przez replikacja:

  1. Połączyć publisher Oracle DBA uprawnienia.

  2. Wydaj polecenie SQL DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;.

  3. Issue the SQL command DROP USER <replication_administrative_user_schema>CASCADE;.

SQL ServerBłąd 21663 jest podniesione w związku z brakiem klucza podstawowego

Artykuły w publikacjach transakcyjna musi mieć prawidłowy klucz podstawowy.Jeśli nie mają prawidłowy klucz podstawowy, zostanie wyświetlony następujący komunikat o błędzie podczas próby dodania artykuł:

"Znaleziono bez prawidłowego klucz podstawowego dla źródło tabela [<TableOwner>].<Nazwa_tabeli>"

Informacje dotyczące wymagań dla kluczy podstawowych zobacz sekcję "Unikatowe indeksy i ograniczenia" w temacie Projektowanie uwagi i ograniczenia dla wydawców Oracle.

SQL ServerBłąd 21642 jest wywoływane dotyczące logowania serwera połączonego duplikat

Gdy początkowo skonfigurowano Wydawca Oracle, połączenia między programem Wydawca a dystrybutor tworzony jest zapis serwer połączony.Serwer połączony ma taką samą nazwę jak nazwę usługa Oracle TNS.Jeśli próbujesz utworzyć serwer połączony z tą samą nazwą, wyświetlany jest następujący komunikat o błędzie:

"Heterogenicznych wydawców wymaga serwer połączony.A serwer połączony o nazwie "<LinkedServerName>' już istnieje.Usuń serwer połączony lub wybierz nazwę innego wydawcę."

Ten błąd może wystąpić, jeśli użytkownik spróbuje utworzyć serwer połączony bezpośrednio lub jeśli wcześniej zostały porzucone relacji między Oracle Wydawca i SQL Server dystrybutor, a teraz próbujesz skonfigurować goJeśli ten błąd podczas próby zmiany konfiguracji Wydawca, upuść serwer połączony z sp_dropserver (języka Transact-SQL).

Jeśli trzeba połączyć Oracle Wydawca za pośrednictwem połączenia serwer połączony utworzyć inną nazwę usługa TNS, a następnie użyć tej nazwy, podczas wywoływania sp_addlinkedserver (Transact-SQL).Informacje dotyczące tworzenia nazwy usługa TNS można znaleYć w dokumentacji programu Oracle.

SQL ServerBłąd 7395 jest wywoływane dotyczących transakcji zagnieżdżonych

Próba wykonać transakcji zagnieżdżonych za pośrednictwem połączenia serwer połączony programu Oracle Wydawca zostanie wyświetlony następujący komunikat o błędzie:

"Nie można uruchomić transakcję zagnieżdżoną dla dostawca OLE DB MSDAORA" I" dla serwer połączony "<nazwa_serwera>".Wymagana była zagnieżdżonych transakcji, ponieważ opcja XACT_ABORT zestaw do OFF. "

Jeśli używasz procedury przechowywane replikacja skonfigurować lub utrzymania Wydawca Oracle nie jest zawijany procedur w transakcja jawna.

Spowodował błąd programu SQL Server 21617

Publikowanie Oracle używa aplikacji Oracle SQL * PLUS, aby pobrać pakiet kod obsługi Wydawca do bazy danych Oracle.Przed podjęciem próby skonfigurowania Wydawca Oracle SQL Server weryfikuje, że SQL * PLUS dostępnej ścieżka systemu na dystrybutora.Jeśli program SQL * PLUS nie można załadować jest wyświetlany następujący komunikat o błędzie:

"Nie można uruchomić programu SQL * PLUS.Dokonać pewność, że bieżąca wersja Oracle kod klient jest zainstalowany dystrybutor".

Spróbuj zlokalizować SQL * PLUS na dystrybutora.Zainstaluj klient Oracle 10 g nazwa ten plik wykonywalny jest sqlplus.exe.Zazwyczaj jest instalowany w katalogu % ORACLE_HOME%/bin.Aby sprawdzić, czy ścieżka SQL * PLUS pojawia się w ścieżce systemu zbadać wartość zmienna systemowa ścieżkę:

  1. Kliknij prawym przyciskiem myszy Mój komputer, a następnie kliknij przycisk Właściwości.

  2. Kliknij Zaawansowane kartę, a następnie kliknij zmienne środowiskowe.

  3. W Zmienne środowiskowe dialogowym zmiennych systemowych listy wybierz ścieżkę zmiennej, a następnie kliknij Edytuj.

  4. W Edytuj zmienna systemowa okno dialogowe: Jeśli ścieżka do folderu, który zawiera sqlplus.exe nie jest obecny w wartość zmiennej tekst opcję Edytuj ciąg, aby dołączyć go.

  5. Kliknij OK na każdego okno dialogowe Otwórz, aby wyjść i zapisać zmiany.

Jeśli nie można zlokalizować sqlplus.exe na dystrybutora, zainstalować bieżącą wersja oprogramowania klient Oracle w dystrybutora.Aby uzyskać więcej informacji, zobacz Konfigurowanie Wydawca Oracle.

Spowodował błąd programu SQL Server 21620

W przypadku łączenia się z bazą danych Oracle wcześniej niż w wersja 8.1 Oracle publikacji wymaga zainstalowanego na dystrybutora oprogramowania klient Oracle w wersja 9.Jeśli łączysz się z bazą danych Oracle, który jest w wersja 8.1 lub nowszy, zaleca się że oprogramowania klient Oracle można w wersja 10 lub nowszej.

Przed podjęciem próby skonfigurowania Wydawca Oracle, publikowanie Oracle weryfikuje, czy wersja SQL * PLUS jest dostępne za pośrednictwem ścieżka systemu na dystrybutora w wersji 9 lub nowszej.Jeśli nie jest, wyświetlany jest następujący komunikat o błędzie:

"Wersja SQL * PLUS jest dostępne za pośrednictwem systemu zmiennej Path nie jest wystarczająco bieżącą obsługę publikowania Oracle.Dokonać pewność, że bieżąca wersja Oracle kod klient jest zainstalowany dystrybutor".

Jeśli masz wiele wersji oprogramowania klient Oracle zainstalowanego na dystrybutora, sprawdź, czy najbardziej aktualnej wersji jest co najmniej wersja 9 i że systemowej zmiennej ścieżka najpierw odnosi się do tej wersji (odniesienia do innych wersji mogą być wyświetlane tak długo, jak najbardziej aktualnych jako pierwsze).Aby uzyskać więcej informacji o edytowaniu systemowej zmiennej ścieżka zobacz sekcję "SQL Server błąd 21617 jest wywoływane" wcześniej w tym temacie.

Program SQL Server jest wywoływane błąd 21624 lub 21629

Publikowanie Oracle dla dystrybutorów 64-bitowej używa dostawcy OLEDB Oracle Oracle (OraOLEDB.Oracle).Upewnij się, że dostawca Oracle OLEDB jest zainstalowany i zarejestrowany na dystrybutora.Jeśli dostawca nie jest zainstalowany i zarejestrowany, wyświetlany jest jeden lub oba z następujących komunikatów o błędach:

  • "Nie można zlokalizować zarejestrowanych Oracle dostawca OLEDB, OraOLEDB.Oracle, u dystrybutor '% s'.Upewnić że bieżąca wersja dostawca Oracle OLEDB jest zainstalowany i zarejestrowany u dystrybutor."

  • "Klucz rejestru CLSID wskazującą zarejestrowano Oracle dostawcą OLE DB dla programu Oracle, OraOLEDB.Oracle, nie jest obecny w dystrybutor.Upewnić że dostawca Oracle OLEDB jest zainstalowany i zarejestrowany u dystrybutor."

Jeśli używasz wersja oprogramowania klient Oracle 10 g, dostawca jest OraOLEDB10.dll; 9i wersja jest OraOLEDB.dll.Dostawca jest zainstalowany w %ORACLE_HOME%\BIN (na przykład C:\oracle\product\10.1.0\Client_1\bin).Jeśli okaże się, że dostawca Oracle OLEDB nie jest zainstalowany na dystrybutora, należy go zainstalować z Oracle dysk dostarczony przez Oracle zainstalować oprogramowanie klient.Aby uzyskać więcej informacji, zobacz Konfigurowanie Wydawca Oracle.

dostawca Oracle OLEDB jest zainstalowany, upewnić się, że jest on zarejestrowany.Aby zarejestrować biblioteki DLL dostawca, wydaj następujące polecenie z katalogu, w którym jest zainstalowany biblioteki DLL, a następnie stop i uruchom ponownie SQL Server wystąpienie:

  1. regsvr32 OraOLEDB10.dllor regsvr32 OraOLEDB.dll.

Program SQL Server jest wywoływane błąd 21626 lub 21627

Sprawdzić właściwie skonfigurowany środowisko publikowania Oracle SQL Server próbuje połączyć się z Oracle Wydawca z poświadczenia logowania określony podczas konfiguracja.Jeśli SQL Server dystrybutora nie może połączyć się z Oracle Wydawca, jest wyświetlany jeden z następujących komunikatów o błędach:

  • "Nie można połączyć się z serwerem bazy danych Oracle '% s' za pomocą dostawca Oracle OLEDB OraOLEDB.Oracle."

  • "Nie można połączyć się z serwerem bazy danych Oracle '% s' przy użyciu dostawca OLE DB firmy Microsoft MSDAORA I."

Jeśli ten komunikat o błędzie jest wyświetlany, sprawdzić połączenia z bazą danych Oracle, uruchamiając program SQL * PLUS bezpośrednio przy użyciu tej samej login i hasło podane podczas konfiguracja programu Oracle Wydawca.Aby uzyskać więcej informacji, zobacz sekcję " SQL Server dystrybutora nie może połączyć się z wystąpieniem bazy danych Oracle" wcześniej w tym temacie.

Spowodował błąd programu SQL Server 21628

For 64-bit Distributors, Oracle publishing uses the Oracle OLEDB Provider for Oracle (OraOLEDB.Oracle).SQL Server creates a registry entry to allow the Oracle provider to run in process with SQL Server.Jeśli problem Odczyt lub zapis ten wpis rejestru, jest wyświetlany następujący komunikat o błędzie:

"Nie można zaktualizować rejestru dystrybutor"% s" Aby umożliwić dostawca Oracle OLEDB OraOLEDB.Oracle do uruchamiania w procesie SQL Server.Należy upewnić się, że bieżące logowanie jest upoważniona do modyfikowania SQL Server własność kluczy rejestru. "

Publikowanie Oracle wymaga wpisu rejestru istnieje i będzie zestaw do 1 dla 64-bitowych dystrybutorów.Jeśli wpis nie istnieje, SQL Server spróbuje go utworzyć.Jeśli wpis istnieje, ale jest ustawiona na 0, zestaw nie zostanie zmienione; Konfiguracja Wydawca Oracle nie powiedzie się.

Aby wyświetlić i zmodyfikować ustawienia rejestru:

  1. Kliknij Start, a następnie kliknij przycisk uruchomić.

  2. W uruchomić okno dialogowe, typ regedit, a następnie kliknij przycisk OK.

  3. Przejdź do HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<nazwa_wystąpienia>\Providers.

    Objęte dostawców powinien być folderem nazwany OraOLEDB.Oracle.W tym folderze powinny być nazwę wartości DWORD AllowInProcess, o wartości 1.

  4. Jeśli okaże się, że AllowInProcess jest zestaw do 0, zaktualizuj wpis rejestru 1:

    1. Kliknij prawym przyciskiem myszy wpis, a następnie kliknij Modyfikuj.

    2. W Edytowanie ciągu okno dialogowe, typ 1 w Dane wartości pole.

Spowodował błąd programu SQL Server 21684

Jeśli konto użytkownika administracyjnego nie ma wystarczających uprawnień, wyświetlany jest następujący komunikat o błędzie:

"Uprawnienia związane z logowania administratora Oracle wydawcy '% s' nie są wystarczające."

Aby zweryfikować uprawnienia, przyznane użytkownikowi, wykonać następującej kwerendy: SELECT * from session_privs.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

Problemów replikacji schematu użytkownika uprawnienia

Schemat replikacja użytkownik musi mieć uprawnienia opisane w "Tworzenie użytkownika schemat ręcznie" in Konfigurowanie Wydawca Oracle.

Błąd programu Oracle ORA-01000

Replikacja używa kursory Wydawca Oracle podczas dodawania artykułów do publikacja.Jest możliwe przekracza maksymalną liczbę kursorów, dostępne Wydawca w trakcie tego procesu.Jeśli to nastąpi, wywoływane jest następujący błąd:

"ORA 01000: Przekroczono maksymalną otwartych kursorów"

Aby uniknąć tego problemu, zapewnić, że max_open_cursors w bazach danych Oracle zestaw jest wystarczająco wysoka liczba (co najmniej 1000).Więcej informacji na temat tego ustawienia można znaleYć w dokumentacji programu Oracle.

Błąd programu Oracle ORA-01555

Następujący błąd bazy danych Oracle nie jest związany z replikacja migawka; odnoszący się do sposobu Oracle konstrukcje zgodne odczytu widoki danych:

"ORA 01555: Migawki jest zbyt stara"

Korzystanie z obiektów, określane jako segmentów, Oracle konstrukcje zgodne odczytu widoki danych w pkt czas wydanych instrukcja języka SQL.A "migawka zbyt stara" błąd może wystąpić podczas wycofywania informacje są zastępowane przez inne równoczesnych sesji.Aby przed Oracle 9i zalecanym metoda zmniejszenie częstotliwości ten błąd został do zwiększenia rozmiaru lub liczby segmentów i przypisać do segmentu wycofania określonych duże transakcje.

W Oracle 9i Oracle wprowadzono pojęcie obszar tabel Cofnij, która zastępuje segment wycofania.Aby zapobiec "migawka zbyt stara" Błąd w Oracle 9i, zalecane jest, które:

  • Utwórz obszar tabel Cofnij odpowiednią ilość wolnego miejsca.

  • Ustaw gwarancji przechowywania obszar tabel (Oracle 10 G i więcej).

  • Konfigurowanie parametrów inicjowania Oracle UNDO_MANAGEMENT i UNDO_RETENTION.

Szczegółowe informacje dotyczące unikania "migawka zbyt stara" błąd, zajrzyj do dokumentacji programu Oracle.

Błąd programu Oracle ORA-22285

Jeśli tabela zawiera kolumna bInformacje dotyczące plików, dane kolumna są przechowywane w systemie plików.Replikacja administracyjne konto użytkownika musi mieć przyznany dostęp do katalogu, w którym dane są przechowywane przy użyciu następującej składni:

GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>

Jeśli dostęp nie zostanie udzielony, następujący błąd jest wywoływane przez Agent odczytywania dziennika:

"ORA 22285: nieistniejący katalog lub plik, dla operacji FILEOPEN"

Zmiany wymagające rekonfiguracjaWydawca

Zmiany w tabelach metadane replikacja lub procedur wymagają usunąć i ponownie skonfigurować Wydawca.Aby ponownie skonfigurować Wydawca, należy upuścić Wydawca i skonfigurować go ponownie przy użyciu SQL Server Management Studio, języka Transact-SQL lub RMO.Aby uzyskać informacje dotyczące konfigurowania Wydawca, zobacz Konfigurowanie Wydawca Oracle.

Aby upuścić Wydawca Oracle (SQL Server Management Studio)

  1. Połączyć dystrybutora dla Oracle Wydawca w SQL Server Management Studio i rozwiń węzeł serwera.

  2. Kliknij prawym przyciskiem myszy replikacji, a następnie kliknij przycisk Właściwości dystrybutora.

  3. Na wydawcy strona Właściwości dystrybutora okno dialogowe, wyczyść pole wyboru dla Wydawca Oracle.

  4. Click OK.

Aby usunąć Wydawca Oracle (języka Transact-SQL)