Migrowanie bazy danych Oracle do usługi Azure Database for PostgreSQL przy użyciu narzędzia Ora2Pg
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
Ten przewodnik ułatwia migrowanie schematu Oracle do usługi Azure Database for PostgreSQL.
Aby uzyskać szczegółowe i kompleksowe wskazówki dotyczące migracji ora2Pg, zobacz zasoby przewodnika po migracji.
Wymagania wstępne
Aby przeprowadzić migrację schematu Oracle do usługi Azure Database for PostgreSQL, należy wykonać następujące czynności:
- Sprawdź, czy środowisko źródłowe jest obsługiwane.
- Pobierz najnowszą wersję pakietu Ora2Pg.
- Mieć najnowszą wersję modułu DBD.
Omówienie
PostgreSQL jest jedną z najbardziej zaawansowanych baz danych typu open source na świecie. W tym artykule opisano sposób migrowania bazy danych Oracle do bazy danych Oracle do bazy danych PostgreSQL przy użyciu bezpłatnego narzędzia Ora2Pg. Możesz użyć narzędzia Ora2Pg, aby przeprowadzić migrację bazy danych Oracle lub bazy danych MySQL do schematu zgodnego z bazą danych PostgreSQL.
Narzędzie Ora2Pg łączy bazę danych Oracle, skanuje ją automatycznie i wyodrębnia jego strukturę lub dane. Następnie Usługa Ora2Pg generuje skrypty SQL, które można załadować do bazy danych PostgreSQL. Usługi Ora2Pg można używać do wykonywania zadań, takich jak odwrotna inżynieria bazy danych Oracle, migrowanie ogromnej bazy danych przedsiębiorstwa lub replikowanie niektórych danych Oracle do bazy danych PostgreSQL. Narzędzie jest łatwe w użyciu i nie wymaga znajomości bazy danych Oracle oprócz możliwości udostępnienia parametrów potrzebnych do nawiązania połączenia z bazą danych Oracle.
Uwaga
Aby uzyskać więcej informacji na temat korzystania z najnowszej wersji pakietu Ora2Pg, zobacz dokumentację usługi Ora2Pg.
Typowa architektura migracji Ora2Pg
Po aprowizacji maszyny wirtualnej i usługi Azure Database for PostgreSQL potrzebne są dwie konfiguracje umożliwiające łączność między nimi: Zezwalaj na dostęp do usług platformy Azure i Wymuszaj połączenie SSL:
Blok> Zabezpieczenia połączenia Zezwalaj na dostęp do usług>platformy Azure WŁ.
Ustawienia>protokołu SSL bloku> Zabezpieczenia połączenia wymuszają wyłączenie połączenia SSL>
Zalecenia
Aby zwiększyć wydajność operacji oceny lub eksportu na serwerze Oracle, zbierz statystyki:
BEGIN DBMS_STATS.GATHER_SCHEMA_STATS DBMS_STATS.GATHER_DATABASE_STATS DBMS_STATS.GATHER_DICTIONARY_STATS END;
Wyeksportuj
COPY
dane przy użyciu polecenia zamiastINSERT
.Unikaj eksportowania tabel ze swoimi kluczami obcymi (FK), ograniczeniami i indeksami. Te elementy spowalniają proces importowania danych do bazy danych PostgreSQL.
Utwórz zmaterializowane widoki przy użyciu klauzuli brak danych. Następnie odśwież widoki później.
Jeśli to możliwe, użyj unikatowych indeksów w zmaterializowanych widokach. Te indeksy mogą przyspieszyć odświeżanie w przypadku używania składni
REFRESH MATERIALIZED VIEW CONCURRENTLY
.
Przed migracją
Po sprawdzeniu, czy środowisko źródłowe jest obsługiwane i czy zostały spełnione wszystkie wymagania wstępne, możesz rozpocząć etap premigration. Aby rozpocząć:
- Odnajdywanie: spis baz danych, które należy migrować.
- Ocena: Oceń te bazy danych pod kątem potencjalnych problemów z migracją lub blokad.
- Konwertuj: rozwiąż wszystkie wykryte elementy.
W przypadku migracji heterogenicznych, takich jak Oracle do usługi Azure Database for PostgreSQL, ten etap obejmuje również zapewnienie zgodności źródłowych schematów bazy danych ze środowiskiem docelowym.
Odnajdywanie
Celem fazy odnajdywania jest zidentyfikowanie istniejących źródeł danych i szczegółów dotyczących używanych funkcji. Ta faza pomaga lepiej zrozumieć i zaplanować migrację. Proces obejmuje skanowanie sieci w celu zidentyfikowania wszystkich wystąpień Oracle organizacji wraz z wersją i funkcjami używanymi.
Skrypty wstępnej oceny firmy Microsoft dla bazy danych Oracle są uruchamiane względem bazy danych Oracle. Skrypty przed oceną wysyłają zapytanie do metadanych Oracle. Skrypty zapewniają:
- Spis bazy danych, w tym liczby obiektów według schematu, typu i stanu.
- Przybliżone oszacowanie danych pierwotnych w każdym schemacie na podstawie statystyk.
- Rozmiar tabel w każdym schemacie.
- Liczba wierszy kodu na pakiet, funkcję, procedurę itd.
Pobierz powiązane skrypty z usługi GitHub.
Ocenia
Po utworzeniu spisu baz danych Oracle będziesz mieć pomysł na rozmiar bazy danych i potencjalne wyzwania. Następnym krokiem jest uruchomienie oceny.
Szacowanie kosztów migracji z bazy danych Oracle do bazy danych PostgreSQL nie jest łatwe. Aby ocenić koszt migracji, Ora2Pg sprawdza wszystkie obiekty, funkcje i procedury składowane dla obiektów i kodu PL/SQL, których nie może automatycznie przekonwertować.
Narzędzie Ora2Pg ma tryb analizy zawartości, który sprawdza bazę danych Oracle w celu wygenerowania raportu tekstowego. W raporcie opisano, co zawiera baza danych Oracle i czego nie można wyeksportować.
Aby aktywować tryb analizy i raportu , użyj wyeksportowanego typu SHOW_REPORT
, jak pokazano w poniższym poleceniu:
ora2pg -t SHOW_REPORT
Narzędzie Ora2Pg może konwertować kod SQL i PL/SQL ze składni Oracle na postgreSQL. Dlatego po przeanalizowaniu bazy danych narzędzie Ora2Pg może oszacować trudności z kodem i czas niezbędny do przeprowadzenia migracji pełnej bazy danych.
Aby oszacować koszt migracji w dniach ludzkich, usługa Ora2Pg umożliwia użycie dyrektywy konfiguracji o nazwie ESTIMATE_COST
. Tę dyrektywę można również włączyć w wierszu polecenia:
ora2pg -t SHOW_REPORT --estimate_cost
Domyślna jednostka migracji reprezentuje około pięciu minut dla eksperta postgreSQL. Jeśli ta migracja jest pierwszą, możesz zwiększyć domyślną jednostkę migracji przy użyciu dyrektywy COST_UNIT_VALUE
konfiguracji lub --cost_unit_value
opcji wiersza polecenia.
Ostatni wiersz raportu przedstawia łączny szacowany kod migracji w dniach ludzkich. Oszacowanie jest zgodne z liczbą jednostek migracji szacowanych dla każdego obiektu.
W poniższym przykładzie kodu są widoczne pewne odmiany oceny:
- Ocena tabel
- Ocena kolumn
- Ocena schematu, która używa domyślnej jednostki kosztu 5 minut
- Ocena schematu używająca jednostki kosztu 10 minut
ora2pg -t SHOW_TABLE -c c:\ora2pg\ora2pg_hr.conf > c:\ts303\hr_migration\reports\tables.txt
ora2pg -t SHOW_COLUMN -c c:\ora2pg\ora2pg_hr.conf > c:\ts303\hr_migration\reports\columns.txt
ora2pg -t SHOW_REPORT -c c:\ora2pg\ora2pg_hr.conf --dump_as_html --estimate_cost > c:\ts303\hr_migration\reports\report.html
ora2pg -t SHOW_REPORT -c c:\ora2pg\ora2pg_hr.conf –-cost_unit_value 10 --dump_as_html --estimate_cost > c:\ts303\hr_migration\reports\report2.html
Oto dane wyjściowe poziomu migracji oceny schematu B-5:
Poziomy migracji:
A — Migracja, którą można uruchomić automatycznie
B — Migracja przy użyciu ponownego zapisywania kodu i kosztu dnia ludzkiego do 5 dni
C — Migracja za pomocą ponownego zapisywania kodu i koszt dnia ludzkiego w ciągu 5 dni
Poziomy techniczne:
1 = Trywiial: brak przechowywanych funkcji i brak wyzwalaczy
2 = Łatwe: brak przechowywanych funkcji, ale wyzwalaczy; brak ręcznego ponownego zapisywania
3 = Proste: przechowywane funkcje i/lub wyzwalacze; brak ręcznego ponownego zapisywania
4 = Ręczne: brak przechowywanych funkcji, ale wyzwalacze lub widoki z ponownym zapisywaniem kodu
5 = Trudne: Przechowywane funkcje i/lub wyzwalacze z ponownym zapisywaniem kodu
Ocena składa się z następujących elementów:
Litera (A lub B) określająca, czy migracja wymaga ręcznego ponownego zapisywania.
Liczba z zakresu od 1 do 5 wskazująca trudności techniczne.
Inną opcją , -human_days_limit
określa limit liczby dni ludzkich. W tym miejscu ustaw poziom migracji na C, aby wskazać, że migracja wymaga dużej ilości pracy, pełnego zarządzania projektami i obsługi migracji. Wartość domyślna to 10 dni ludzkich. Możesz użyć dyrektywy HUMAN_DAYS_LIMIT
konfiguracji, aby trwale zmienić tę wartość domyślną.
Ta ocena schematu została opracowana w celu ułatwienia użytkownikom decydowania o tym, która baza danych ma być najpierw migrowana, oraz które zespoły zmobilizują.
Convert
W przypadku migracji z minimalnym przestojem zmiany źródła migracji. Dryfuje z obiektu docelowego pod względem danych i schematu po jednorazowej migracji. Podczas fazy synchronizacji danych upewnij się, że wszystkie zmiany w źródle są przechwytywane i stosowane do obiektu docelowego niemal w czasie rzeczywistym. Po sprawdzeniu, czy wszystkie zmiany są stosowane do obiektu docelowego, można przeciąć ze źródła do środowiska docelowego.
W tym kroku migracji skrypty Oracle code i DDL są konwertowane lub tłumaczone na postgreSQL. Narzędzie Ora2Pg automatycznie eksportuje obiekty Oracle w formacie PostgreSQL. Niektórych wygenerowanych obiektów nie można skompilować w bazie danych PostgreSQL bez ręcznych zmian.
Aby zrozumieć, które elementy wymagają interwencji ręcznej, najpierw skompiluj pliki wygenerowane przez usługę Ora2Pg względem bazy danych PostgreSQL. Sprawdź dziennik, a następnie wprowadź wszelkie niezbędne zmiany, dopóki struktura schematu nie będzie zgodna ze składnią postgreSQL.
Tworzenie szablonu migracji
Zalecamy użycie szablonu migracji dostępnego przez firmę Ora2Pg. Jeśli używasz opcji --project_base
i --init_project
, Ora2Pg tworzy szablon projektu z drzewem roboczym, plikiem konfiguracji i skryptem do eksportowania wszystkich obiektów z bazy danych Oracle. Aby uzyskać więcej informacji, zobacz dokumentację usługi Ora2Pg.
Użyj następującego polecenia:
ora2pg --project_base /app/migration/ --init_project test_project
Oto przykładowe dane wyjściowe:
ora2pg --project_base /app/migration/ --init_project test_project
Creating project test_project.
/app/migration/test_project/
schema/
dblinks/
directories/
functions/
grants/
mviews/
packages/
partitions/
procedures/
sequences/
synonyms/
tables/
tablespaces/
triggers/
types/
views/
sources/
functions/
mviews/
packages/
partitions/
procedures/
triggers/
types/
views/
data/
config/
reports/
Generating generic configuration file
Creating script export_schema.sh to automate all exports.
Creating script import_all.sh to automate all imports.
Katalog sources/
zawiera kod Oracle. Katalog schema/
zawiera kod przekierowany do bazy danych PostgreSQL. reports/
Katalog zawiera raporty HTML i ocenę kosztów migracji.
Po utworzeniu struktury projektu zostanie utworzony ogólny plik konfiguracji. Zdefiniuj połączenie bazy danych Oracle i odpowiednie parametry konfiguracji w pliku konfiguracji. Aby uzyskać więcej informacji na temat pliku konfiguracji, zobacz dokumentację usługi Ora2Pg.
Eksportowanie obiektów Oracle
Następnie wyeksportuj obiekty Oracle jako obiekty PostgreSQL, uruchamiając export_schema.sh pliku.
cd /app/migration/mig_project
./export_schema.sh
Uruchom następujące polecenie ręcznie.
SET namespace="/app/migration/mig_project"
ora2pg -p -t DBLINK -o dblink.sql -b %namespace%/schema/dblinks -c %namespace%/config/ora2pg.conf
ora2pg -p -t DIRECTORY -o directory.sql -b %namespace%/schema/directories -c %namespace%/config/ora2pg.conf
ora2pg -p -t FUNCTION -o functions2.sql -b %namespace%/schema/functions -c %namespace%/config/ora2pg.conf
ora2pg -p -t GRANT -o grants.sql -b %namespace%/schema/grants -c %namespace%/config/ora2pg.conf
ora2pg -p -t MVIEW -o mview.sql -b %namespace%/schema/mviews -c %namespace%/config/ora2pg.conf
ora2pg -p -t PACKAGE -o packages.sql -b %namespace%/schema/packages -c %namespace%/config/ora2pg.conf
ora2pg -p -t PARTITION -o partitions.sql -b %namespace%/schema/partitions -c %namespace%/config/ora2pg.conf
ora2pg -p -t PROCEDURE -o procs.sql -b %namespace%/schema/procedures -c %namespace%/config/ora2pg.conf
ora2pg -p -t SEQUENCE -o sequences.sql -b %namespace%/schema/sequences -c %namespace%/config/ora2pg.conf
ora2pg -p -t SYNONYM -o synonym.sql -b %namespace%/schema/synonyms -c %namespace%/config/ora2pg.conf
ora2pg -p -t TABLE -o table.sql -b %namespace%/schema/tables -c %namespace%/config/ora2pg.conf
ora2pg -p -t TABLESPACE -o tablespaces.sql -b %namespace%/schema/tablespaces -c %namespace%/config/ora2pg.conf
ora2pg -p -t TRIGGER -o triggers.sql -b %namespace%/schema/triggers -c %namespace%/config/ora2pg.conf
ora2pg -p -t TYPE -o types.sql -b %namespace%/schema/types -c %namespace%/config/ora2pg.conf
ora2pg -p -t VIEW -o views.sql -b %namespace%/schema/views -c %namespace%/config/ora2pg.conf
Aby wyodrębnić dane, użyj następującego polecenia.
ora2pg -t COPY -o data.sql -b %namespace%/data -c %namespace/config/ora2pg.conf
Kompilowanie plików
Na koniec skompiluj wszystkie pliki na serwerze usługi Azure Database for PostgreSQL. Możesz załadować ręcznie wygenerowane pliki DDL lub użyć drugiego skryptu import_all.sh w celu interaktywnego zaimportowania tych plików.
psql -f %namespace%\schema\sequences\sequence.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -L %namespace%\ schema\sequences\create_sequences.log
psql -f %namespace%\schema\tables\table.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -L %namespace%\schema\tables\create_table.log
Oto polecenie importowania danych:
psql -f %namespace%\data\table1.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -l %namespace%\data\table1.log
psql -f %namespace%\data\table2.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -l %namespace%\data\table2.log
Podczas kompilowania plików sprawdź dzienniki i popraw dowolną składnię, której usługa Ora2Pg nie może przekonwertować samodzielnie.
Aby uzyskać więcej informacji, zobacz Oracle to Azure Database for PostgreSQL migration workarounds (Obejścia migracji z bazy danych Oracle do usługi Azure Database for PostgreSQL).
Migrate
Po spełnieniu niezbędnych wymagań wstępnych i wykonaniu kroków premii możesz rozpocząć migrację schematu i danych.
Migrowanie schematu i danych
Po wprowadzeniu niezbędnych poprawek stabilna kompilacja bazy danych jest gotowa do wdrożenia. psql
Uruchom polecenia importu, wskazując pliki zawierające zmodyfikowany kod. To zadanie kompiluje obiekty bazy danych względem bazy danych PostgreSQL i importuje dane.
W tym kroku można zaimplementować poziom równoległości podczas importowania danych.
Synchronizowanie danych i przecięcie
W przypadku migracji online (minimalny przestój) źródło migracji nadal się zmienia. Dryfuje z obiektu docelowego pod względem danych i schematu po jednorazowej migracji.
Podczas fazy synchronizacji danych upewnij się, że wszystkie zmiany w źródle są przechwytywane i stosowane do obiektu docelowego niemal w czasie rzeczywistym. Po sprawdzeniu, czy wszystkie zmiany zostaną zastosowane, można wyciąć ze źródła do środowiska docelowego.
Aby przeprowadzić migrację online, skontaktuj się z pomocą AskAzureDBforPostgreSQL@service.microsoft.com techniczną.
W przypadku migracji przyrostowej/przyrostowej korzystającej z narzędzia Ora2Pg dla każdej tabeli użyj zapytania, które filtruje (cięcia) według daty, godziny lub innego parametru. Następnie zakończ migrację przy użyciu drugiego zapytania, które migruje pozostałe dane.
W tabeli danych źródłowych najpierw przeprowadź migrację wszystkich danych historycznych. Oto przykład:
select * from table1 where filter_data < 01/01/2019
Możesz wykonać zapytanie dotyczące zmian od początkowej migracji, uruchamiając polecenie podobne do następującego:
select * from table1 where filter_data >= 01/01/2019
W tym przypadku zalecamy zwiększenie walidacji przez sprawdzenie parzystości danych po obu stronach, źródła i celu.
Po migracji
Po zakończeniu etapu migracji wykonaj zadania po migracji, aby upewnić się, że wszystko działa tak sprawnie i wydajnie, jak to możliwe.
Korygowanie aplikacji
Po przeprowadzeniu migracji danych do środowiska docelowego wszystkie aplikacje, które wcześniej zużywały źródło, muszą zacząć korzystać z obiektu docelowego. Konfiguracja czasami wymaga zmian w aplikacjach.
Test
Po przeprowadzeniu migracji danych do obiektu docelowego uruchom testy względem baz danych, aby sprawdzić, czy aplikacje działają dobrze z obiektem docelowym. Upewnij się, że źródło i element docelowy są prawidłowo migrowane, uruchamiając ręczne skrypty sprawdzania poprawności danych względem baz danych źródłowych Oracle i docelowych baz danych PostgreSQL.
W idealnym przypadku, jeśli źródłowe i docelowe bazy danych mają ścieżkę sieciową, narzędzie Ora2Pg powinno być używane do sprawdzania poprawności danych. Możesz użyć TEST
akcji , aby upewnić się, że wszystkie obiekty z bazy danych Oracle zostały utworzone w bazie danych PostgreSQL.
Uruchom następujące polecenie:
ora2pg -t TEST -c config/ora2pg.conf > migration_diff.txt
Optymalizacja
Faza po migracji ma kluczowe znaczenie dla uzgadniania wszelkich problemów z dokładnością danych i weryfikowania kompletności. W tej fazie rozwiążesz również problemy z wydajnością obciążenia.
Zasoby migracji
Aby uzyskać więcej informacji na temat tego scenariusza migracji, zobacz następujące zasoby. Obsługują one rzeczywiste zaangażowanie projektu migracji.
Zasób | opis |
---|---|
Podręcznik migracji oracle do usługi Azure PostgreSQL | Ten dokument ułatwia architektom, konsultantom, administratorom baz danych i powiązanym rolam szybkie migrowanie obciążeń z bazy danych Oracle do usługi Azure Database for PostgreSQL przy użyciu rozwiązania Ora2Pg. |
Obejścia migracji bazy danych Oracle do usługi Azure PostgreSQL | Ten dokument pomaga architektom, konsultantom, administratorom bazy danych i powiązanym rolam szybko rozwiązać problemy lub obejść je podczas migrowania obciążeń z bazy danych Oracle do usługi Azure Database for PostgreSQL. |
Procedura instalowania narzędzia Ora2Pg w systemie Windows lub Linux | Ten dokument zawiera szybki przewodnik instalacji migracji schematu i danych z bazy danych Oracle do usługi Azure Database for PostgreSQL przy użyciu narzędzia Ora2Pg w systemie Windows lub Linux. Aby uzyskać więcej informacji, zobacz dokumentację usługi Ora2Pg. |
Zespół inżynierów danych SQL opracował te zasoby. Podstawową kartą tego zespołu jest odblokowanie i przyspieszenie złożonej modernizacji projektów migracji platformy danych do platformy danych Microsoft Azure.
Więcej pomocy technicznej
Aby uzyskać pomoc dotyczącą migracji poza zakres narzędzi Ora2Pg, skontaktuj się z @Ask azure DB for PostgreSQL.
Następne kroki
Macierz usług i narzędzi do migracji bazy danych i danych oraz zadań specjalnych można znaleźć w temacie Usługi i narzędzia do migracji danych.
Dokumentacja: