Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Konfiguracja heterogenicznej replikacji baz danych — SQL Server do Oracle

Wprowadzenie

Replikacja SQL Server to funkcja SQL Server, która umożliwia nam przesyłanie danych z jednej instancji do drugiej w celach takich jak konsolidacja danych do środowiska raportowania lub migracje. Osobiście nie uważałbym SQL Server Replication za technologię wysokiej dostępności, mimo że niektórzy uważają ją za taką.

Replikacja SQL Server używa terminów podobnych do tych w branży wydawniczej, aby opisać sposób obsługi danych od źródła do miejsca docelowego. Kluczowe terminy są następujące:

  • Wydawca – instancja SQL Server, która udostępnia dane do replikacji do innych instancji (pakowane jako publikacje).
  • Publikacja – jednostka gotowa do przekazania do instancji odbierającej złożona ze zbioru artykułów, które w rzeczywistości są obiektami bazy danych.
  • Dystrybutor — instancja SQL Server odpowiedzialna za przechowywanie danych powiązanych z jednym lub większą liczbą wydawców w bazie danych zwanej baza danych dystrybucyjnych . Lokalny dystrybutor jest przechowywany w tej samej instancji co Wydawca, podczas gdy zdalny dystrybutor znajduje się w innej instancji.
  • Subskrybent – ​​instancja, która otrzymuje zreplikowaną bazę danych. Subskrypcja subskrybenta to prośba o kopię publikacji, którą oczekuje od Wydawcy.
  • Migawka.

W artykule podzielę się kilkoma punktami, których nauczyłem się podczas konfigurowania replikacji SQL Server do obsługi heterogenicznego subskrybenta. Stworzę publikację, a następnie prenumeratę Oracle, która będzie zależeć od tej publikacji. Pokażę również kilka punktów wraz z przebiegiem procesu, które są bardzo ważne przy rozwiązywaniu problemów.

Kroki konfiguracji sesji replikacji migawek są następujące:

  1. Skonfiguruj dystrybutora
  2. Skonfiguruj wydawcę (wraz z publikacją, w tym publikowanymi artykułami)
  3. Skonfiguruj subskrybenta

Przedstawię krótkie wyjaśnienie każdego kroku.

Konfiguracja dystrybutora

Dystrybutor to instancja odpowiedzialna za przechowywanie informacji używanych podczas replikacji. Podczas pierwszej próby utworzenia publikacji w instancji SQL Server zasugeruje skonfigurowanie dystrybutora. W tym artykule nasz dystrybutor jest dystrybutorem lokalnym .

Tworzenie publikacji

Zidentyfikujmy bazę danych zawierającą obiekty, które chcielibyśmy zreplikować. To będzie baza danych publikacji .

Aby utworzyć bazę danych publikacji, postępuj zgodnie z instrukcjami na poniższych zrzutach ekranu.

Ten krok pozwala wybrać typ publikacji, którą chcesz skonfigurować. Każdy typ publikacji jest opisany w dolnym okienku. Ze względu na prostotę i kompatybilność wybieramy publikację migawkową. Należy pamiętać, że zamierzamy replikować obiekty do instancji Oracle. W tym przypadku transakcyjny i publikacje migawek są obsługiwane. Istnieją inne dobre przypadki użycia dla replikacji peer-to-peer i scalania.

Na tym etapie wybieramy artykuły, które chcemy opublikować. SQL Server pozwala nam publikować cztery kluczowe typy obiektów, takie jak:

  1. Stoły
  2. Procedury przechowywane
  3. Widoki
  4. Funkcje zdefiniowane przez użytkownika

Jak widać, opublikujemy dwie tabele:Orders i OrderLines. W celu zademonstrowania elastyczności replikacji SQL Server będziemy filtrować rekordy, jak pokazano poniżej.
Uwaga: Interesuje nas liczba identyfikatorów zamówień większa niż 1000.

Aby wykluczyć niechciane wiersze z opublikowanych tabel, kliknij Dodaj… a następnieDalej .

Poniższe zrzuty ekranu pokazują, jak filtrować kolumny w tabeli OrderLines.

Następnie skonfiguruj właściwości agenta migawki. Definiujemy początkową migawkę oraz interwał, w którym generowana jest nowa migawka. Dane wyodrębnione na tym etapie są przechowywane w katalogu określonym podczas początkowej konfiguracji dystrybutora.

Najpierw skonfiguruj harmonogram uruchamiania agenta migawek. Kliknij Dalej .

Dla każdego agenta migawek określ konto, na którym będzie on działał.

Następnie skonfiguruj ustawienia zabezpieczeń programu Snapshot Agent. Tabela Ustawienia zabezpieczeń otwiera kolejne okno, w którym określamy, kto uruchamia proces Snapshot Agent, a także określamy dane logowania do serwera SQL Server do połączenia z wydawcą. Są pewne uprawnienia wymagane przez tych zleceniodawców, które mogą być trochę podejrzane w produkcji. Korzystanie z konta SQL Server Agent Service jest obejściem pozwalającym uniknąć komplikacji, ale w rzeczywistości NIE jest zalecane przez firmę Microsoft.

Pod koniec będziesz musiał zdecydować, czy chcesz zapisać konfigurację jako skrypt do późniejszego wykorzystania, czy od razu utworzyć publikację.

Następny krok (rys. 16) podsumowuje wszystkie wybrane opcje. Zaleca się szybkie sprawdzenie przed kliknięciem przycisku Zakończ przycisk.

Rozpoczyna się proces tworzenia publikacji. Możesz kliknąć Zatrzymaj aby przerwać proces.

Po zakończeniu procesu Twoja publikacja stanie się widoczna w panelu Object Explorer w SQL Server Management Studio.

Dodawanie subskrybenta

Subskrybent otrzymuje publikacje udostępnione przez Wydawcę . Kopia publikacji, która ma zostać dostarczona subskrybentowi, nazywa się Subskrypcją . Wydawca może mieć wielu subskrybentów. Każdy
subskrybent otrzymuje artykuły publikowane przez tego Wydawcę jako jednostkę zwaną publikacją w przypadku wydawcy i uważa się ją za subskrypcję Subskrybenta.

Tworząc prenumeratę, po prostu mówimy Wydawcy:„Chcę mieć egzemplarze tej publikacji”. O ile Wydawca może mieć wiele publikacji, tak samo może być wielu subskrybentów jednej
publikacji. W związku z tym relacja wydawców z subskrybentami jest relacją jeden-do-wielu.

Kreator nowej subskrypcji pozwala nam zdecydować, jaką publikację chcemy subskrybować. Możemy wybrać z listy wcześniej utworzonych publikacji, jak pokazano na rys. 20.

Następnie decydujemy, czy chcemy uruchomić subskrypcję push zamiast subskrypcji pull. Chociaż subskrypcja ściągana jest lepsza pod względem wydajności, gdy przewiduje się wielu subskrybentów,
nie będzie działać w przypadku heterogenicznej replikacji bazy danych. Subskrybenci serwera innego niż SQL muszą korzystać z subskrypcji ściąganej. Warto wspomnieć, że artykuły publikowane w tym scenariuszu są również ograniczone do tabel i widoków indeksowanych.

Dodaj subskrybenta Oracle przy użyciu nazwy źródła danych (DSN). To DSN musiało już zostać utworzone, przetestowane i okazało się, że działa pod względem możliwości łączenia się z instancją Oracle za pośrednictwem Oracle Net. Oznacza to, że potrzebujesz klienta Oracle zainstalowanego na hoście SQL Server z wpisem do pliku o nazwie tnsnames.ora określenie miejsca docelowego połączenia. Ten wpis TNS jest z kolei używany do konfigurowania nazwy źródła danych, o którą prosi Kreator nowej subskrypcji na tym etapie.

Wpis, który utworzyłem w moim pliku tnsnames.ora, wygląda tak:

ORCL10G =
 (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = IGIRI-LP)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl10g)
    )
 )

Podświetlona część to alias, podczas gdy inne szczegóły określają miejsce docelowe połączenia. Możemy potwierdzić, czy ten wpis działa poprawnie i czy moje zmienne środowiskowe Oracle są poprawnie skonfigurowane za pomocą tnsping narzędzie, jak pokazano poniżej.

Po potwierdzeniu ten wpis TNS służy do konfigurowania DSN, którego zamierzamy używać. Nasza nazwa usługi TNS nazywa się ORCL10G podczas gdy DSN nazywa się ORCLDC . Jest to DSN, którego używamy w Kreatorze nowej subskrypcji.

Zauważ, że użyliśmy 64-bitowej wersji ODBC do skonfigurowania DSN i jest to systemowe DSN, a nie DSN użytkownika. Konfiguracja nie zależy od tego, kto jest zalogowany na komputerze.

Wybierz typ abonenta do dodania i wprowadź nazwę źródła danych. Kliknij OK .

Wybierz jednego lub kilku subskrybentów, a także określ bazę danych dla każdej subskrypcji.

Po dodaniu DSN możemy przystąpić do konfigurowania zabezpieczeń agenta dystrybucji. Dowiadujemy się, że jest to podobne do przypadku, gdy skonfigurowaliśmy Snapshot Agent Security w Kreatorze nowej publikacji.

Tutaj jednak mamy sekcję, w której nawiązujemy połączenie z Abonentem zamiast do Wydawcy (przypomnij sobie, że jest to subskrypcja push). To konto użytkownika musi zostać utworzone w instancji Oracle i powinno mieć uprawnienia do tworzenia tabel i przydziałów w domyślnym obszarze tabel (tutaj możesz potrzebować Oracle DBA).

Dodaj parametry do zabezpieczeń agenta dystrybucji i kliknij OK .

Określ konto i opcje połączenia dla każdego agenta dystrybucji i kliknij Dalej .

Zdefiniuj harmonogram synchronizacji dla każdego agenta. W naszym przypadku zdecydowaliśmy się na synchronizację ciągłą. Kliknij Dalej .

Wybierz opcję natychmiastowego zainicjowania subskrypcji, co oznacza ponowne skopiowanie WSZYSTKICH danych dostępnych w folderze Migawka. Zaleca się, aby subskrybenci NoSQL Server ponownie zainicjowali subskrypcję po dodaniu nowych artykułów do publikacji. Kliknij Dalej .

Wybierz opcje, które mają zostać wykonane po pomyślnym zakończeniu procesu. Kliknij Dalej .

Sprawdź dodane informacje i kliknij Zakończ .

Rozpoczyna się proces tworzenia subskrypcji.

Subskrypcja, którą właśnie utworzyliśmy, pokazuje wpis w Eksploratorze obiektów (w programie Publisher) zamapowany na jego publikację nadrzędną. Zauważ, że nie pojawia się w węźle Subskrypcje lokalne, który zapewnia listę subskrypcji utworzonych w bieżącej instancji, czego nie ma w tym przypadku.

Monitorowanie i rozwiązywanie problemów

SQL Server udostępnia Monitor replikacji, który umożliwia przeglądanie i monitorowanie szczegółów wszystkich sesji replikacji w instancji. Monitor replikacji może poinformować administratora o uruchomieniu i zakończeniu agenta migawki. Może również pokazać nam, czy subskrypcje zostały zainicjowane i czy agent dystrybucji działa płynnie.

Istnieje osiem zadań SQL Server Agent powiązanych z naszą obecną konfiguracją. Przeglądanie historii tych zleceń daje również szczegółowe informacje o tym, czy wszystko jest w porządku.

Rzeczywiste błędy Oracle są wyświetlane w Monitorze replikacji i w dzienniku błędów programu SQL Server, gdy zostaną napotkane. Ten poziom szczegółowości sprawia, że ​​rozwiązywanie problemów z replikacją programu SQL Server jest interesujące. Znajomość Oracle (dla SQL Server DBA) zajmie dużo czasu w zrozumieniu błędów, które mogą się pojawić.

Spójrz na przykład błędu na Rys. 34. Błąd ten wystąpił przed poprawną konfiguracją środowisk Oracle Net i ODBC. Błędy bardzo wyraźnie wskazują, gdzie jest problem.

Widok Monitora aktywności zawodowej informuje nas również, które zadania zakończyły się sukcesem i jakiego zadania potrzebujemy do szczegółowego rozwiązania problemów, sprawdzając historię zadań.

Po rozwiązaniu wszystkich poprzednich błędów otwarcie subskrypcji przez dwukrotne kliknięcie daje nam szczegółowy widok wszystkich sesji, błędów i wyników, które spodziewamy się zobaczyć, gdy wszystko będzie dobrze. Zauważ, że Agent Bulk kopiuje dane od wydawcy do subskrybenta w partiach. Możemy również odpytywać tabele, które zostały utworzone w instancji Oracle i porównywać rekordy. (Rys. 37).

Jak widać, SQL Server przygotowuje tabelę z wyłączeniem schematu źródłowego (Sales) przed utworzeniem tabeli w Oracle i skopiowaniem danych.

Liczba rekordów w instancji Oracle jest zgodna z liczbą w tabeli źródłowej i uwzględnia fakt, że filtrujemy tabelę OrderLines pod kątem identyfikatorów OrderID większych niż 1000.

Wniosek

Przeprowadziliśmy pokrótce proces konfigurowania replikacji heterogenicznej bazy danych z wystąpieniem Oracle jako subskrybentem. Chociaż ta opcja jest stopniowo wycofywana przez firmę Microsoft, istnieją przypadki użycia, które mogą nadal korzystać z możliwości zapewnianych przez tę starą funkcję programu SQL Server. Sekcja Referencje zapewnia szerszą lekturę na ten temat, która moim zdaniem będzie przydatna dla tych, którzy chcą więcej ćwiczyć.

Referencje

Skonfiguruj replikację dla zawsze włączonych grup dostępności
Subskrybenci spoza Oracle
Heterogeniczna replikacja bazy danych
Subskrybenci Oracle


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zmienić tabelę dodać wyrocznię kolumny

  2. Jaki jest idealny zestaw narzędzi do programowania w PL/SQL?

  3. Jak naprawić jednowierszowe podzapytanie Ora-01427 zwraca więcej niż jeden wiersz w zaznaczeniu?

  4. Konwertuj uniksowy znacznik czasu na wartość daty w Oracle

  5. Musisz znaleźć średni czas przetwarzania między wszystkimi rekordami znaczników czasu w Oracle SQL