Rozważania i ograniczenia projektowe dla wydawców Oracle

Dotyczy:SQL Server

Publikowanie z bazy Oracle działa niemal tak samo jak publikowanie z baza danych programu Microsoft SQL Server. Jednak należy pamiętać o następujących ograniczeniach i problemach:

  • Opcja Oracle Gateway zapewnia lepszą wydajność niż opcja Oracle Complete. Jednak nie możesz użyć opcji Oracle Gateway, aby opublikować tę samą tabelę w wielu publikacjach transakcyjnych. Tabela może pojawić się tylko w jednej publikacji transakcyjnej, ale może pojawić się w dowolnej liczbie publikacji snapshot. Jeśli chcesz opublikować tę samą tabelę w wielu publikacjach transakcyjnych, wybierz opcję Oracle Complete.

  • Replikacja obsługuje publikowanie tabel, indeksów i zmaterializowanych widoków. Nie replikuje innych obiektów.

  • Pewne drobne różnice między przechowywaniem i przetwarzaniem danych w bazach Oracle i SQL Server wpływają na replikację.

  • Istnieją różnice w sposobie wspierania funkcji replikacji transakcyjnej w Oracle Publisher.

Obsługa publikowania obiektów z Oracle

Replikacja obsługuje replikowanie następujących obiektów z baz danych Oracle:

  • Tables

  • Tabele uporządkowane według indeksu

  • Indexes

  • Widoki materializowane (replikowane jako tabele)

Następujące obiekty mogą być obecne w opublikowanych tabelach, ale nie są replikowane:

  • Indeksy oparte na domenie

  • Indeksy oparte na funkcjach

  • Defaults

  • Sprawdzanie ograniczeń

  • Klucze obce

  • Opcje przechowywania (przestrzenie tabelowe, klastry itd.)

Następujące obiekty nie mogą być replikowane:

  • Tabele zagnieżdżone

  • Views

  • Pakiety, jednostki pakietów, procedury i wyzwalacze

  • Queues

  • Sekwencje

  • Synonyms

Aby uzyskać informacje o obsługiwanych typach danych, zobacz Mapowanie typów danych dla programu Oracle Publishers.

Różnice między programem Oracle i programem SQL Server

  • Oracle ma różne maksymalne limity rozmiaru dla niektórych obiektów. Wszystkie obiekty tworzone w bazie publikacji Oracle powinny spełniać maksymalne limity rozmiaru odpowiadających obiektów w SQL Server. Aby uzyskać informacje o limitach w programie SQL Server, zobacz Maximum Capacity Specifications for SQL Server (Maksymalna pojemność dla programu SQL Server).

  • Domyślnie Oracle tworzy nazwy obiektów wielkimi literami. Upewnij się, że nazwy obiektów Oracle są zapisane wielkimi literami podczas publikowania ich przez dystrybutora SQL Server, jeśli są one wielkimi literami w bazie Oracle. Brak określenia obiektów w odpowiednim przypadku może skutkować komunikatem o błędzie wskazującym, że obiekt nie może zostać znaleziony.

  • Oracle używa nieco innego dialektu SQL niż SQL Server; pisz filtry wierszowe w składni zgodnej z Oracle.

Rozważania dotyczące dużych obiektów

Tabela logów artykułów nie przechowuje danych o dużych obiektach (LOB). Aktualizacje danych LOB są zawsze pobierane bezpośrednio z opublikowanej tabeli. Aktualizacje są replikowane w publikacjach transakcyjnych tylko wtedy, gdy operacja wpływająca na obiekt LOB wywołuje wyzwalacz replikacji w zreplikowanej tabeli. Oracle uruchamia wywołanie, gdy wiersze zawierające LOB są wstawiane lub usuwane. Jednak aktualizacje kolumn LOB nie uruchamiają wyzwalaczy. Aktualizacja kolumny LOB jest replikowana natychmiast tylko wtedy, gdy kolumna nie-LOB tego samego wiersza jest również aktualizowana w tej samej transakcji Oracle. Jeśli nie, kolumna LOB jest odświeżana u subskrybenta przy następnej aktualizacji kolumny innej niż LOB w tym samym wierszu. Upewnij się, że to zachowanie jest akceptowalne dla aplikacji.

Aby replikować aktualizacje do kolumn LOB w publikacjach transakcyjnych, należy wziąć pod uwagę jedną z następujących strategii podczas pisania aplikacji:

  • Usuń i wstaw ponownie wiersz w obrębie transakcji zamiast go aktualizować: przy ponownym wstawianiu wiersza podaj nową wartość LOB. Ponieważ delete i insert oba wyzwalają wyzwalanie ognia, wiersz jest replikowany.

  • Dołącz kolumnę inną niż LOB w aktualizacji wiersza oprócz kolumny LOB lub zaktualizuj kolumnę inną niż LOB wiersza w ramach tej samej transakcji Oracle. W obu przypadkach aktualizacja kolumny innej niż LOB gwarantuje, że wyzwalacz zostanie wyzwolony.

Aby uzyskać więcej informacji na temat obiektów LOB, zobacz Mapowanie typów danych dla programu Oracle Publishers.

Unikalne indeksy i ograniczenia

Zarówno dla replikacji migawkowej, jak i transakcyjnej, kolumny w unikalnych indeksach i ograniczeniach (w tym ograniczeniach klucza głównego) muszą spełniać określone ograniczenia. Jeśli nie przestrzegają tych ograniczeń, ograniczenie lub indeks nie są replikowane.

  • Możesz uwzględnić do 16 kolumn w indeksie w SQL Server.

  • Wszystkie kolumny w unikalnych ograniczeniach muszą mieć obsługiwane typy danych. Aby uzyskać więcej informacji na temat typów danych, zobacz Mapowanie typów danych dla programu Oracle Publishers.

  • Musisz publikować wszystkie kolumny w unikalnych ograniczeniach (nie możesz ich filtrować).

  • Kolumny w unikalnych ograniczeniach lub indeksach nie powinny być nullowe.

Rozważ również następujące problemy:

  • Oracle i SQL Server traktują wartość NULL inaczej: Oracle zezwala na wiele wierszy z wartościami NULL dla kolumn, które zezwalają na wartość NULL i są uwzględniane w unikatowych ograniczeniach lub indeksach. Program SQL Server wymusza unikatowość, zezwalając tylko na pojedynczy wiersz z wartością NULL dla tej samej kolumny. Nie można opublikować unikalnego ograniczenia ani indeksu, który dopuszcza wartość NULL, ponieważ na Subskrybencie doszłoby do naruszenia ograniczenia, jeśli opublikowana tabela zawiera wiele wierszy z wartościami NULL w dowolnej kolumnie uwzględnionej w indeksie lub ograniczeniu.

  • Podczas testowania unikalności SQL Server ignoruje pozostałe puste miejsca w polu, ale Oracle tego nie robi.

Podobnie jak w replikacji transakcyjnej SQL Server, tabele w publikacjach transakcyjnych Oracle wymagają klucza głównego. Klucz główny musi być unikalny na podstawie wcześniej określonych reguł. Jeśli klucz główny nie spełnia tych reguł, nie możesz opublikować tabeli do replikacji transakcyjnej.

Różnice między publikowaniem Oracle i standardową replikacją transakcyjną

  • Program Oracle Publisher nie może mieć takiej samej nazwy jak: jej dystrybutor programu SQL Server; dowolny z wydawców programu SQL Server korzystających z dystrybutora; lub wszyscy subskrybenci, którzy otrzymują publikację. Publikacje obsługiwane przez tego samego dystrybutora muszą mieć unikatową nazwę.

  • Tabela opublikowana w publikacji Oracle nie może odbierać replikowanych danych. W związku z tym publikowanie w programie Oracle nie obsługuje publikacji z natychmiastowym aktualizowaniem lub aktualizowaniem w kolejce subskrypcji; lub topologie, w których tabele publikacji działają również jako tabele subskrypcji, takie jak replikacja równorzędna i dwukierunkowa.

  • Relacje między kluczem podstawowym a kluczem obcym w bazie danych Oracle nie są replikowane do odbiorców. Relacje są jednak utrzymywane w danych, gdy zmiany są dostarczane.

  • Standardowe publikacje transakcyjne obsługują tabele z maksymalnie 1000 kolumnami. Publikacje transakcyjne Oracle obsługują 995 kolumn (replikacja dodaje pięć kolumn do każdej opublikowanej tabeli).

  • Klauzule COLLATE są dodawane do instrukcji CREATE TABLE, aby umożliwić porównania z uwzględnieniem wielkości liter, co jest istotne w przypadku kluczy podstawowych i ograniczeń UNIQUE. To zachowanie jest kontrolowane za pomocą opcji schematu 0x1000, która jest określona z parametrem @schema_optionsp_addarticle (Transact-SQL).

  • Jeśli używasz procedur składowanych do konfigurowania lub obsługi programu Oracle Publisher, nie umieszczaj procedur wewnątrz jawnej transakcji. Nie jest to obsługiwane przez połączony serwer używany do nawiązywania połączenia z programem Oracle Publisher.

  • Jeśli tworzysz subskrypcję ciągnioną dla publikacji Oracle za pomocą kreatora, musisz użyć Kreatora nowej subskrypcji dostarczonego w programie SQL Server 2005 (9.x) lub nowszych wersjach. W przypadku poprzednich wersji programu SQL Server można jednak użyć przechowywanej procedury i interfejsów SQL-DMO, aby ustawić subskrypcje typu 'pull' dla publikacji Oracle.

  • Jeśli używasz procedur składowanych do propagowania zmian do subskrybentów (wartość domyślna), pamiętaj, że składnia MCALL jest obsługiwana, ale ma inne zachowanie, gdy publikacja pochodzi z programu Oracle Publisher. Zazwyczaj MCALL udostępnia mapę bitową, która pokazuje, które kolumny zostały zaktualizowane w programie Publisher. W publikacji Oracle mapa bitowa zawsze pokazuje, że wszystkie kolumny zostały zaktualizowane. Aby uzyskać więcej informacji na temat używania procedur składowanych, zobacz Określanie sposobu propagowania zmian w artykułach transakcyjnych.

Obsługa funkcji replikacji transakcyjnej

  • Publikacje Oracle nie obsługują wszystkich opcji schematów, które wspierają publikacje SQL Server. Więcej informacji o opcjach schematu można znaleźć w sp_addarticle (Transact-SQL).

  • Subskrybenci publikacji Oracle nie mogą korzystać z subskrypcji z aktualizacją natychmiastową ani z aktualizacją w kolejce ani pełnić roli węzłów w topologii równorzędnej lub dwukierunkowej.

  • Subskrybaci publikacji Oracle nie mogą być automatycznie inicyalizowani z kopii zapasowej.

  • Program SQL Server obsługuje dwa typy weryfikacji: binarne i rowcount. Oracle Publishers obsługuje walidację liczby wierszy. Aby uzyskać więcej informacji, zobacz Weryfikowanie replikowanych danych.

  • Program SQL Server oferuje dwa formaty migawek: natywny tryb bcp i tryb znaków. Program Oracle Publishers obsługuje migawki trybu znaków.

  • Zmiany schematów w opublikowanych tabelach Oracle nie są wspierane. Aby wprowadzić zmiany schematu, najpierw upuść publikację, wprowadź zmiany, a następnie ponownie utwórz publikację i wszystkie subskrypcje.

    Uwaga / Notatka

    Jeśli wprowadzisz zmiany w schemacie oraz usuniesz, a następnie ponownie utworzysz publikację i subskrypcje, gdy na opublikowanych tabelach nie zachodzi żadna aktywność, możesz określić opcję replication support only dla subskrypcji. Ta opcja synchronizuje je bez kopiowania snapshotu do każdego Subskrybenta. Aby uzyskać więcej informacji, zobacz Inicjowanie subskrypcji transakcyjnej bez migawki.

Model bezpieczeństwa replikacji

Model bezpieczeństwa replikacji dla publikacji Oracle jest taki sam jak model bezpieczeństwa dla standardowej replikacji transakcyjnej, z następującymi wyjątkami:

Aby uzyskać więcej informacji na temat zabezpieczeń replikacji, zobacz Wyświetlanie i modyfikowanie ustawień zabezpieczeń replikacji.