Migrace Oraclu do Azure Database for PostgreSQL

Tato příručka vám pomůže migrovat schéma Oracle do Azure Database for PostgreSQL.

Podrobné a komplexní pokyny k migraci najdete v tématu Materiály k migraci.

Požadavky

Pokud chcete schéma Oracle migrovat Azure Database for PostgreSQL, musíte:

  • Ověřte, že se vaše zdrojové prostředí podporuje.
  • Stáhněte si nejnovější verzi ora2pg.
  • Máte nejnovější verzi modulu DBD.

Přehled

PostgreSQL je jednou z nejpokročilejších open source databází na světě. Tento článek popisuje, jak pomocí bezplatného nástroje ora2pg migrovat databázi Oracle do PostgreSQL. K migraci databáze Oracle nebo databáze MySQL do schématu kompatibilního s PostgreSQL můžete použít ora2pg.

Nástroj ora2pg připojí databázi Oracle, automaticky ji prohledá a extrahuje její strukturu nebo data. Pak ora2pg vygeneruje SQL skripty, které můžete načíst do databáze PostgreSQL. Ora2pg můžete použít pro úlohy, jako je reverzní 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 se snadno používá a kromě možnosti poskytnout parametry potřebné pro připojení k databázi Oracle nevyžaduje žádné znalosti databáze Oracle.

Poznámka

Další informace o používání nejnovější verze ora2pg najdete v dokumentaci k ora2pg.

Typická architektura migrace ora2pg

Snímek obrazovky s architekturou 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í > SSL Nastavení > Vynucení zakázaného připojení > SSL

Doporučení

  • Pokud chcete zvýš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;
    
  • Exportujte data pomocí COPY příkazu místo INSERT .

  • Vyhněte se exportu tabulek s jejich cizími klíči, omezeními a indexy. Tyto prvky zpomalují proces importu dat do PostgreSQL.

  • Materializovaná zobrazení můžete vytvářet pomocí klauzule no data. Potom zobrazení aktualizujte později.

  • Pokud je to možné, používejte jedinečné indexy v materializovaných zobrazeních. Tyto indexy mohou aktualizaci urychlit, když použijete syntaxi REFRESH MATERIALIZED VIEW CONCURRENTLY .

Před migrací

Jakmile ověříte, že je vaše zdrojové prostředí podporované a že jste řešili všechny požadavky, jste připraveni zahájit fázi předmigrace. Začněte následovně:

  1. Zjišťování: Inventarizace databází, které potřebujete migrovat.
  2. Posouzení: Vyhodnoťte v těchto databázích potenciální problémy s migrací nebo blokování.
  3. Převést: Vyřešte všechny položky, které jste odhalili.

U heterogenních migrací, jako je Oracle Azure Database for PostgreSQL, tato fáze zahrnuje také to, aby schémata zdrojové databáze byla kompatibilní 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. Součástí tohoto procesu je prohledávání sítě a identifikace všech instancí Oracle ve vaší organizaci společně s verzí a funkcemi, které se používají.

Skripty Microsoftu pro předběžné posouzení pro Oracle se spouštěly v databázi Oracle. Skripty před posouzením se dotázou na metadata Oracle. Skripty poskytují:

  • Inventář databáze, včetně počtů objektů podle schématu, typu a stavu.
  • Přibližný odhad nezpracovaných dat v jednotlivých schématech na základě statistiky.
  • Velikost tabulek v jednotlivých schématech.
  • Počet řádků kódu na balíček, funkci, proceduru atd.

Stáhněte si související skripty z GitHubu.

Posouzení

Po inventarizace databází Oracle budete mít představu o velikosti databáze a potenciálních výzvách. Dalším krokem je spuštění posouzení.

Odhad nákladů na migraci z Oraclu do PostgreSQL není snadný. Aby bylo možné posoudit náklady na migraci, ora2pg kontroluje všechny databázové objekty, funkce a uložené procedury pro objekty a pl/SQL kódu, který nemůže automaticky převést.

Nástroj ora2pg má režim analýzy obsahu, který prověřuje databázi Oracle a vygeneruje textovou sestavu. Tato sestava popisuje, co databáze Oracle obsahuje a co se neexportuje.

Pokud chcete aktivovat režim analýzy a sestavy, použijte exportovaný SHOW_REPORT typ, jak je znázorněno v následujícím příkazu:

ora2pg -t SHOW_REPORT

Nástroj ora2pg dokáže převést SQL a PL/SQL ze syntaxe Oracle na PostgreSQL. Po analýze databáze tedy ora2pg dokáže odhadnout potíže s kódem a čas potřebný k migraci úplné databáze.

K odhadu nákladů na migraci v lidských dnech umožňuje nástroj ora2pg 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 pro odborníka na PostgreSQL přibližně pět minut. Pokud je tato migrace první, můžete zvýšit výchozí jednotku migrace pomocí direktivy konfigurace COST_UNIT_VALUE nebo --cost_unit_value možnosti příkazového řádku.

Poslední řádek sestavy zobrazuje celkový odhadovaný kód migrace v lidských dnech. Odhad se řídí počtem jednotek migrace odhadovaných pro každý objekt.

V následujícím příkladu kódu vidíte několik variací posouzení:

  • Posouzení tabulek
  • Posouzení sloupců
  • Posouzení schématu, které používá výchozí nákladovou jednotku 5 minut
  • Vyhodnocení schématu, které používá 10minutovou nákladovou jednotku
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 úrovně migrace posouzení schématu B-5:

  • Úrovně migrace:

    • A – Migrace, která se může spustit automaticky

    • B – Migrace s přepsáním kódu a náklady na lidské dny až 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é triggery

    • 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 těchto součástí:

  • Písmeno (A nebo B), které určuje, jestli migrace potřebuje ruční přepis.

  • Číslo od 1 do 5, které označuje technické potíže.

Další možnost, -human_days_limit , určuje limit lidských dnů. Tady nastavte úroveň migrace na C, která označuje, že migrace vyžaduje velkou část práce, úplnou správu projektů a podporu migrace. Výchozí hodnota je 10 dnů pro člověka. Tuto výchozí hodnotu můžete trvale změnit pomocí HUMAN_DAYS_LIMIT direktivy configuration.

Toto hodnocení 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

Migrace s minimálními výpadky se změní ve zdroji migrace. Po provedení jedné migrace se od cíle posune z hlediska dat a schématu. Během fáze synchronizace dat se ujistěte, že se všechny změny ve zdroji zachycují a aplikují na cíl v reálném čase. Po ověření, že se všechny změny použijí na cíl, můžete přejmout ze zdroje do cílového prostředí.

V tomto kroku migrace se kód Oracle a skripty DDL převedou nebo převedou na PostgreSQL. Nástroj ora2pg automaticky exportuje objekty Oracle ve formátu PostgreSQL. Některé z vygenerovaných objektů není možné zkompilovat v databázi PostgreSQL bez ručních změn.

Abyste pochopili, které prvky je třeba ručně zásahovat, nejprve zkompilujte soubory vygenerované pomocí ora2pg proti databázi PostgreSQL. Zkontrolujte protokol a potom 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. Když použijete možnosti --project_base a , ora2pg vytvoří šablonu projektu s pracovním stromem, konfiguračním souborem a skriptem pro export všech objektů --init_project 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. A adresář reports/ obsahuje sestavy HTML a posouzení nákladů na migraci.

Po vytvoření struktury projektu se vytvoří obecný konfigurační soubor. V konfiguračním souboru definujte připojení k databázi Oracle a příslušné konfigurační parametry. 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 Azure Database for PostgreSQL serveru. Můžete se rozhodnout načíst ručně vygenerované soubory DDL nebo pomocí druhého skriptu import_all.sh tyto soubory interaktivně importovat.

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

Zatímco se soubory kompilují, zkontrolujte protokoly a opravte syntaxi, kterou sama o sobě ora2pg nedokázala převést.

Další informace najdete v tématu Oracle, které Azure Database for PostgreSQL alternativních řešení migrace.

Migrate

Jakmile budete mít nezbytné požadavky a dokončíte předběžné kroky, můžete spustit migraci schématu a dat.

Migrace schématu a dat

Když jste provedli potřebné opravy, je stabilní sestavení databáze připravené k nasazení. Spusťte příkazy psql importu odkazující 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 cut-over

Při online migraci (minimální prostoje) se zdroj migrace stále mění. Po provedení jedné migrace se od cíle posune z hlediska dat a schématu.

Během fáze synchronizace dat se ujistěte, že se všechny změny ve zdroji zachycují a aplikují na cíl v reálném čase. Po ověření, že se všechny změny použily, můžete přejmout ze zdroje do cílového prostředí.

Pokud chcete provést online migraci, kontaktujte AskAzureDBforPostgreSQL@service.microsoft.com podporu.

V rozdílové/přírůstkové migraci, která používá ora2pg, použijte prokaždou tabulku dotaz, který filtruje (řezy) podle data, času nebo jiného parametru. Pak dokončete migraci 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

Na změny od počáteční migrace se můžete dotazovat spuštěním příkazu, jako je tento:

select * from table1 where filter_data >= 01/01/2019

V tomto případě doporučujeme ověřování vylepšit kontrolou parity dat na obou stranách, ve zdroji i cíli.

Po migraci

Po dokončení fáze migrace dokončete úkoly po migraci, abyste zajistili, že vše bude fungovat co nejplynule a 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 cíl využívat. Nastavení někdy vyžaduje změny aplikací.

Test

Po migraci dat do cíle spusťte testy databází, abyste ověřili, že aplikace dobře fungují s cílem. Spuštěním skriptů ručního ověřování dat s cílovými databázemi Oracle a PostgreSQL se ujistěte, že jsou zdroj a cíl správně migrované.

V ideálním případě by se k ověřování dat měl použít ora2pg, pokud zdrojová a cílová databáze mají síťovou cestu. Pomocí akce můžete zajistit, aby se v PostgreSQL vytvořily všechny objekty TEST z databáze Oracle.

Spusťte tento příkaz:

ora2pg -t TEST -c config/ora2pg.conf > migration_diff.txt

Optimalizace

Fáze po migraci je zásadní pro odsouvání jakýchkoli 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í projektů migrace do reálného světa.

Prostředek Popis
Kuchařka migrace z Oraclu 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 z Oraclu do Azure PostgreSQL Tento dokument pomáhá architektům, konzultantům, správcům databází a souvisejícím rolím rychle opravit nebo obcházet problémy při migraci úloh z Oracle do Azure Database for PostgreSQL.
Postup instalace ora2pg v Windows nebo Linuxu Tento dokument obsahuje průvodce rychlou instalací pro migraci schématu a dat z Oracle do Azure Database for PostgreSQL pomocí ora2pg v Windows nebo Linuxu. Další informace najdete v dokumentaci k ora2pg.

Tyto prostředky vyvinul tým SQL datových inženýrů. Základním cílem tohoto týmu je odblokovat a zrychlit složitou modernizaci projektů migrace datových platforem na Microsoft Azure datové platformy.

Další podpora

Pokud chcete pomoct s migrací nad rámec nástrojů ora2pg, kontaktujte @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: