Migrace Oracle do Služby Azure Database for PostgreSQL pomocí ora2Pg
PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL
Tato příručka vám pomůže migrovat schéma Oracle do služby Azure Database for PostgreSQL.
Podrobné a komplexní pokyny k migraci ora2Pg najdete v průvodci migrací.
Požadavky
Pokud chcete migrovat schéma Oracle do služby Azure Database for PostgreSQL, musíte:
- Ověřte, že je vaše zdrojové prostředí podporované.
- Stáhněte si nejnovější verzi Ora2Pg.
- Máte nejnovější verzi modulu DBD.
Přehled
PostgreSQL je jednou z nejpokročilejších opensourcových databází na světě. Tento článek popisuje, jak pomocí bezplatného nástroje Ora2Pg migrovat databázi Oracle do PostgreSQL. Pomocí ora2Pg můžete migrovat databázi Oracle nebo databázi MySQL do schématu kompatibilního s PostgreSQL.
Nástroj Ora2Pg připojí vaši databázi Oracle, automaticky ji prohledá a extrahuje její strukturu nebo data. Ora2Pg pak vygeneruje skripty SQL, které můžete načíst do databáze PostgreSQL. Ora2Pg můžete použít pro úlohy, jako je zpětné zpracování databáze Oracle, migrace obrovské podnikové databáze nebo jednoduše replikace některých dat Oracle do databáze PostgreSQL. Nástroj je snadno použitelný a nevyžaduje žádné znalosti databáze Oracle kromě schopnosti poskytovat parametry potřebné pro připojení k databázi Oracle.
Poznámka:
Další informace o používání nejnovější verze Ora2Pg najdete v dokumentaci k ora2Pg.
Typická architektura migrace Ora2Pg
Po zřízení virtuálního počítače a Azure Database for PostgreSQL potřebujete dvě konfigurace, abyste mezi nimi umožnili připojení: Povolit přístup ke službám Azure a vynutit připojení SSL:
Okno> Zabezpečení připojení – Povolit přístup ke službám>Azure ON
Okno >Zabezpečení připojení – Nastavení>SSL – Vynucení zakázaného připojení>SSL
Doporučení
Pokud chcete zlepšit výkon operací posouzení nebo exportu na serveru Oracle, shromážděte statistiky:
BEGIN DBMS_STATS.GATHER_SCHEMA_STATS DBMS_STATS.GATHER_DATABASE_STATS DBMS_STATS.GATHER_DICTIONARY_STATS END;
Export dat pomocí
COPY
příkazu místoINSERT
.Vyhněte se exportu tabulek s jejich cizími klíči (FK), omezeními a indexy. Tyto prvky zpomalují proces importu dat do PostgreSQL.
Pomocí klauzule bez dat vytvořte materializovaná zobrazení. Potom zobrazení aktualizujte později.
Pokud je to možné, použijte jedinečné indexy v materializovaných zobrazeních. Tyto indexy mohou zrychlit aktualizaci při použití syntaxe
REFRESH MATERIALIZED VIEW CONCURRENTLY
.
Před migrací
Jakmile ověříte, že je vaše zdrojové prostředí podporované a že jste vyřešili všechny požadavky, jste připraveni zahájit fázi předběžné migrace. Začněte následovně:
- Zjištění: Inventarizace databází, které potřebujete migrovat.
- Posouzení: Posouzení potenciálních problémů nebo blokování migrace v těchto databázích
- Převést: Vyřešte všechny položky, které jste odhalili.
V případě heterogenních migrací, jako je Oracle do Azure Database for PostgreSQL, zahrnuje tato fáze také kompatibilitu schémat zdrojové databáze s cílovým prostředím.
Zjišťování
Cílem fáze zjišťování je identifikovat existující zdroje dat a podrobnosti o používaných funkcích. Tato fáze vám pomůže lépe pochopit a naplánovat migraci. Tento proces zahrnuje kontrolu sítě a identifikaci všech instancí Oracle vaší organizace společně s verzemi a funkcemi, které se používají.
Skripty předběžného posouzení společnosti Microsoft pro Oracle se spouštějí v databázi Oracle. Skripty předběžného posouzení se dotazují na metadata Oracle. Skripty poskytují:
- Inventář databáze, včetně počtů objektů podle schématu, typu a stavu
- Hrubý odhad nezpracovaných dat v každém schématu na základě statistik.
- Velikost tabulek v každém schématu
- Počet řádků kódu na balíček, funkci, proceduru atd.
Stáhněte si související skripty z GitHubu.
Posuďte
Po inventarizaci databází Oracle budete mít představu o velikosti databáze a potenciálních problémech. Dalším krokem je spuštění posouzení.
Odhad nákladů na migraci z Oracle na PostgreSQL není snadný. Při posouzení nákladů na migraci ora2Pg zkontroluje všechny databázové objekty, funkce a uložené procedury pro objekty a kód PL/SQL, které nemůže automaticky převést.
Nástroj Ora2Pg má režim analýzy obsahu, který kontroluje databázi Oracle a generuje textovou sestavu. Tato sestava popisuje, co databáze Oracle obsahuje a co nejde exportovat.
Pokud chcete aktivovat režim analýzy a sestavy , použijte exportovaný typ SHOW_REPORT
, jak je znázorněno v následujícím příkazu:
ora2pg -t SHOW_REPORT
Nástroj Ora2Pg může převést kód SQL a PL/SQL ze syntaxe Oracle na PostgreSQL. Po analýze databáze může Ora2Pg odhadnout potíže s kódem a čas potřebný k migraci úplné databáze.
Při odhadu nákladů na migraci za lidské dny vám Ora2Pg umožňuje použít direktivu konfigurace s názvem ESTIMATE_COST
. Tuto direktivu můžete také povolit na příkazovém řádku:
ora2pg -t SHOW_REPORT --estimate_cost
Výchozí jednotka migrace představuje přibližně pět minut pro odborníka na PostgreSQL. Pokud je tato migrace první, můžete výchozí jednotku migrace zvýšit pomocí direktivy COST_UNIT_VALUE
konfigurace nebo možnosti příkazového --cost_unit_value
řádku.
Poslední řádek sestavy zobrazuje celkový odhadovaný kód migrace za lidské dny. Odhad se řídí počtem jednotek migrace odhadovaných pro každý objekt.
V následujícím příkladu kódu se zobrazí některé varianty posouzení:
- Hodnocení tabulek
- Posouzení sloupců
- Posouzení schématu, které používá výchozí jednotku nákladů 5 minut
- Posouzení schématu, které používá nákladovou jednotku 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
Tady je výstup migrace na úrovni posouzení schématu B-5:
Úrovně migrace:
A – Migrace, která se dá spustit automaticky
B – Migrace s přepsáním kódu a náklady na lidské dny do 5 dnů
C – Migrace s přepsáním kódu a náklady na lidské dny za více než 5 dnů
Technické úrovně:
1 = Triviální: Žádné uložené funkce a žádné aktivační události
2 = Snadné: Žádné uložené funkce, ale triggery; bez ručního přepisování
3 = Jednoduché: Uložené funkce a/nebo triggery; bez ručního přepisování
4 = Ruční: Žádné uložené funkce, ale triggery nebo zobrazení s přepisem kódu
5 = Obtížné: Uložené funkce nebo triggery s přepisem kódu
Posouzení se skládá z:
Písmeno (A nebo B) určující, jestli migrace potřebuje ruční přepis.
Číslo od 1 do 5 označující technickou náročnost.
Další možností je -human_days_limit
určit limit lidských dnů. Tady nastavte úroveň migrace na C, abyste označili, že migrace potřebuje velké množství práce, úplné řízení projektů a podporu migrace. Výchozí hodnota je 10 lidských dnů. Pomocí direktivy HUMAN_DAYS_LIMIT
konfigurace můžete tuto výchozí hodnotu trvale změnit.
Toto posouzení schématu bylo vyvinuto tak, aby uživatelům pomohlo rozhodnout, která databáze se má migrovat jako první a které týmy se mají mobilizovat.
Převést
V případě migrace s minimálními výpadky se váš zdroj migrace změní. Posunuje se od cíle z hlediska dat a schématu po jednorázové migraci. Během fáze synchronizace dat se ujistěte, že se všechny změny ve zdroji zaznamenávají a použijí na cíl téměř v reálném čase. Jakmile ověříte, že se na cíl použijí všechny změny, můžete přejít ze zdroje do cílového prostředí.
V tomto kroku migrace se kód Oracle a skripty DDL převedou nebo přeloží do PostgreSQL. Nástroj Ora2Pg exportuje objekty Oracle ve formátu PostgreSQL automaticky. Některé vygenerované objekty nelze zkompilovat v databázi PostgreSQL bez ručních změn.
Abyste pochopili, které prvky potřebují ruční zásah, nejprve zkompilujte soubory vygenerované nástrojem Ora2Pg proti databázi PostgreSQL. Zkontrolujte protokol a proveďte potřebné změny, dokud nebude struktura schématu kompatibilní se syntaxí PostgreSQL.
Vytvoření šablony migrace
Doporučujeme použít šablonu migrace, kterou poskytuje Ora2Pg. Při použití možností --project_base
a --init_project
Ora2Pg vytvoří šablonu projektu s pracovním stromem, konfiguračním souborem a skriptem pro export všech objektů z databáze Oracle. Další informace najdete v dokumentaci k ora2Pg.
Použijte následující příkaz:
ora2pg --project_base /app/migration/ --init_project test_project
Tady je příklad výstupu:
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.
Adresář sources/
obsahuje kód Oracle. Adresář schema/
obsahuje kód portovaný do PostgreSQL. reports/
Adresář obsahuje sestavy HTML a posouzení nákladů na migraci.
Po vytvoření struktury projektu se vytvoří obecný konfigurační soubor. Definujte připojení databáze Oracle a příslušné konfigurační parametry v konfiguračním souboru. Další informace o konfiguračním souboru najdete v dokumentaci k souboru Ora2Pg.
Export objektů Oracle
Dále exportujte objekty Oracle jako objekty PostgreSQL spuštěním souboru export_schema.sh.
cd /app/migration/mig_project
./export_schema.sh
Spusťte následující příkaz ručně.
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
K extrahování dat použijte následující příkaz.
ora2pg -t COPY -o data.sql -b %namespace%/data -c %namespace/config/ora2pg.conf
Kompilace souborů
Nakonec zkompilujte všechny soubory na serveru Azure Database for PostgreSQL. Můžete zvolit, jestli chcete načíst ručně generované soubory DDL, nebo pomocí druhého skriptu import_all.sh tyto soubory importovat interaktivně.
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
Tady je příkaz pro import dat:
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
Během kompilace souborů zkontrolujte protokoly a opravte veškerou syntaxi, kterou Ora2Pg nemohl převést samostatně.
Další informace najdete v tématu Alternativní řešení migrace Oracle do služby Azure Database for PostgreSQL.
Migrate
Jakmile budete mít potřebné požadavky a dokončíte kroky předběžné migrace, můžete spustit schéma a migraci dat.
Migrace schématu a dat
Jakmile provedete potřebné opravy, je stabilní sestavení databáze připravené k nasazení. Spusťte příkazy importu psql
a přejděte na soubory, které obsahují upravený kód. Tato úloha zkompiluje databázové objekty proti databázi PostgreSQL a importuje data.
V tomto kroku můžete implementovat úroveň paralelismu při importu dat.
Synchronizace dat a vyjmutí
V online migracích (minimální prostoje) se zdroj migrace i nadále mění. Posunuje se od cíle z hlediska dat a schématu po jednorázové migraci.
Během fáze synchronizace dat se ujistěte, že se všechny změny ve zdroji zaznamenávají a použijí na cíl téměř v reálném čase. Jakmile ověříte, že se všechny změny použijí, můžete přejít ze zdroje do cílového prostředí.
Pokud chcete provést online migraci, obraťte AskAzureDBforPostgreSQL@service.microsoft.com se na podporu.
V rozdílové /přírůstkové migraci, která používá Ora2Pg, použijte pro každou tabulku dotaz, který filtruje (škrty) podle data, času nebo jiného parametru. Potom migraci dokončete pomocí druhého dotazu, který migruje zbývající data.
Ve zdrojové tabulce dat nejprve migrujte všechna historická data. Tady je příklad:
select * from table1 where filter_data < 01/01/2019
K dotazování změn od počáteční migrace můžete použít příkaz podobný tomuto:
select * from table1 where filter_data >= 01/01/2019
V tomto případě doporučujeme vylepšit ověřování tím, že zkontrolujete paritu dat na obou stranách, zdroj a cíl.
Po migraci
Po dokončení fáze migrace dokončete úlohy po migraci, abyste zajistili, že všechno funguje co nejrušněji a co nejefektivněji.
Náprava aplikací
Po migraci dat do cílového prostředí musí všechny aplikace, které dříve spotřebovávají zdroj, začít využívat cíl. Nastavení někdy vyžaduje změny aplikací.
Test
Po migraci dat do cíle spusťte testy s databázemi a ověřte, že aplikace dobře fungují s cílem. Ujistěte se, že zdroj a cíl jsou správně migrovány spuštěním ručních ověřovacích skriptů dat do cílových databází Oracle a PostgreSQL.
V ideálním případě by se pro ověření dat měla použít skupina Ora2Pg, pokud zdrojová a cílová databáze mají síťovou cestu. Pomocí akce můžete TEST
zajistit, aby se všechny objekty z databáze Oracle vytvořily v PostgreSQL.
Spusťte tento příkaz:
ora2pg -t TEST -c config/ora2pg.conf > migration_diff.txt
Optimalizovat
Fáze po migraci je zásadní pro přidružení všech problémů s přesností dat a ověření úplnosti. V této fázi také řešíte problémy s výkonem úlohy.
Prostředky migrace
Další informace o tomto scénáři migrace najdete v následujících zdrojích informací. Podporují zapojení projektu migrace z reálného světa.
Resource | Popis |
---|---|
Kuchařka migrace Oracle do Azure PostgreSQL | Tento dokument pomáhá architektům, konzultantům, správcům databází a souvisejícím rolím rychle migrovat úlohy z Oracle do Azure Database for PostgreSQL pomocí ora2Pg. |
Alternativní řešení migrace Oracle do Azure PostgreSQL | Tento dokument pomáhá architektům, konzultantům, správcům databází a souvisejícím rolím rychle vyřešit problémy při migraci úloh z Oracle do Azure Database for PostgreSQL. |
Postup instalace Ora2Pg ve Windows nebo Linuxu | Tento dokument obsahuje stručný průvodce instalací pro migraci schématu a dat z Oracle do Azure Database for PostgreSQL pomocí ora2Pg ve Windows nebo Linuxu. Další informace najdete v dokumentaci k ora2Pg. |
Tým pro přípravu dat SQL tyto prostředky vyvinul. Základní charta tohoto týmu spočívá v odblokování a zrychlení komplexní modernizace projektů migrace datových platforem na datovou platformu Microsoft Azure.
Další podpora
Pokud získáte pomoc s migrací nad rámec nástrojů Ora2Pg, obraťte se na @Ask Azure DB for PostgreSQL.
Další kroky
Matici služeb a nástrojů pro migraci databází a dat a speciální úlohy najdete v tématu Služby a nástroje pro migraci dat.
Dokumentace: