Delen via


Oracle migreren naar Azure Database for PostgreSQL met behulp van Ora2Pg

VAN TOEPASSING OP: Azure Database for PostgreSQL - Flexibele server

Deze handleiding helpt u bij het migreren van uw Oracle-schema naar Azure Database for PostgreSQL.

Zie de resources van de migratiehandleiding voor gedetailleerde en uitgebreide Ora2Pg-migratie.

Vereisten

Als u uw Oracle-schema wilt migreren naar Azure Database for PostgreSQL, moet u het volgende doen:

  • Controleer of uw bronomgeving wordt ondersteund.
  • Download de nieuwste versie van Ora2Pg.
  • De nieuwste versie van de DBD-module hebben.

Overzicht

PostgreSQL is een van de meest geavanceerde opensource-databases ter wereld. In dit artikel wordt beschreven hoe u het gratis Ora2Pg-hulpprogramma gebruikt om een Oracle-database te migreren naar PostgreSQL. U kunt Ora2Pg gebruiken om een Oracle-database of MySQL-database te migreren naar een met PostgreSQL compatibel schema.

Het Ora2Pg-hulpprogramma verbindt uw Oracle-database, scant deze automatisch en extraheert de structuur of gegevens. Vervolgens genereert Ora2Pg SQL-scripts die u in uw PostgreSQL-database kunt laden. U kunt Ora2Pg gebruiken voor taken zoals reverse-engineering van een Oracle-database, het migreren van een enorme ondernemingsdatabase of het repliceren van enkele Oracle-gegevens naar een PostgreSQL-database. Het hulpprogramma is eenvoudig te gebruiken en vereist geen kennis van Oracle-databases, naast de mogelijkheid om de parameters op te geven die nodig zijn om verbinding te maken met de Oracle-database.

Notitie

Zie de Ora2Pg-documentatie voor meer informatie over het gebruik van de nieuwste versie van Ora2Pg.

Typische Ora2Pg-migratiearchitectuur

Schermopname van de Ora2Pg-migratiearchitectuur.

Nadat u de VM en Azure Database for PostgreSQL hebt ingericht, hebt u twee configuraties nodig om connectiviteit tussen deze configuraties mogelijk te maken: Toegang tot Azure-services toestaan en SSL-verbinding afdwingen:

  • Blade Verbindingsbeveiliging >Toegang tot Azure-services TOESTAAN>

  • Blade SSL-instellingen voor verbindingsbeveiliging>: SSL-verbinding>uitgeschakeld afdwingen>

Aanbevelingen

  • Verzamel statistieken om de prestaties van de evaluatie- of exportbewerkingen op de Oracle-server te verbeteren:

    BEGIN
    
       DBMS_STATS.GATHER_SCHEMA_STATS
       DBMS_STATS.GATHER_DATABASE_STATS
       DBMS_STATS.GATHER_DICTIONARY_STATS
       END;
    
  • Gegevens exporteren met behulp van de COPY opdracht in plaats van INSERT.

  • Vermijd het exporteren van tabellen met hun refererende sleutels (FK's), beperkingen en indexen. Deze elementen vertragen het proces van het importeren van gegevens in PostgreSQL.

  • Maak gerealiseerde weergaven met behulp van de component geen gegevens. Vernieuw de weergaven later.

  • Gebruik indien mogelijk unieke indexen in gerealiseerde weergaven. Deze indexen kunnen de vernieuwing versnellen wanneer u de syntaxis REFRESH MATERIALIZED VIEW CONCURRENTLYgebruikt.

Premigratie

Nadat u hebt gecontroleerd of uw bronomgeving wordt ondersteund en of u aan de vereisten hebt voldaan, bent u klaar om de premigratiefase te starten. U gaat als volgt aan de slag:

  1. Ontdekken: Inventariseer de databases die u wilt migreren.
  2. Evalueren: Beoordeel deze databases op mogelijke migratieproblemen of -blokkeringen.
  3. Converteren: Los alle items op die u hebt ontdekt.

Voor heterogene migraties zoals Oracle naar Azure Database for PostgreSQL omvat deze fase ook het maken van de brondatabaseschema's die compatibel zijn met de doelomgeving.

Ontdekken

Het doel van de detectiefase is het identificeren van bestaande gegevensbronnen en details over de functies die worden gebruikt. Deze fase helpt u om de migratie beter te begrijpen en te plannen. Het proces omvat het scannen van het netwerk om alle Oracle-exemplaren van uw organisatie te identificeren, samen met de versie en functies die in gebruik zijn.

Microsoft pre-evaluatiescripts voor Oracle worden uitgevoerd op de Oracle-database. De scripts vóór de evaluatie voeren een query uit op de Oracle-metagegevens. De scripts bieden:

  • Een database-inventaris, inclusief aantallen objecten op schema, type en status.
  • Een ruwe schatting van de onbewerkte gegevens in elk schema, op basis van statistieken.
  • De grootte van tabellen in elk schema.
  • Het aantal coderegels per pakket, functie, procedure, enzovoort.

Download de gerelateerde scripts van GitHub.

Evalueren

Nadat u de Oracle-databases hebt geïnventariseerd, hebt u een idee van de grootte van de database en mogelijke uitdagingen. De volgende stap is het uitvoeren van de evaluatie.

Het schatten van de kosten van een migratie van Oracle naar PostgreSQL is niet eenvoudig. Om de migratiekosten te beoordelen, controleert Ora2Pg alle databaseobjecten, functies en opgeslagen procedures voor objecten en PL/SQL-code die niet automatisch kan worden geconverteerd.

Het Hulpprogramma Ora2Pg heeft een modus voor inhoudsanalyse waarmee de Oracle-database wordt geïnspecteerd om een tekstrapport te genereren. In het rapport wordt beschreven wat de Oracle-database bevat en wat niet kan worden geëxporteerd.

Als u de analyse- en rapportmodus wilt activeren, gebruikt u het geëxporteerde type SHOW_REPORT , zoals wordt weergegeven in de volgende opdracht:

ora2pg -t SHOW_REPORT

Het hulpprogramma Ora2Pg kan SQL- en PL/SQL-code converteren van Oracle-syntaxis naar PostgreSQL. Dus nadat de database is geanalyseerd, kan Ora2Pg de codeproblemen schatten en de tijd die nodig is om een volledige database te migreren.

Als u de migratiekosten in menselijke dagen wilt schatten, kunt u met Ora2Pg een configuratie-instructie gebruiken met de naam ESTIMATE_COST. U kunt deze instructie ook inschakelen bij een opdrachtprompt:

ora2pg -t SHOW_REPORT --estimate_cost

De standaardmigratie-eenheid vertegenwoordigt ongeveer vijf minuten voor een PostgreSQL-expert. Als deze migratie uw eerste is, kunt u de standaardmigratie-eenheid verhogen met behulp van de configuratierichtlijn COST_UNIT_VALUE of de --cost_unit_value opdrachtregeloptie.

In de laatste regel van het rapport ziet u de totale geschatte migratiecode in menselijke dagen. De schatting volgt het aantal migratie-eenheden dat voor elk object wordt geschat.

In het volgende codevoorbeeld ziet u enkele evaluatievariaties:

  • Evaluatie van tabellen
  • Evaluatie van kolommen
  • Schema-evaluatie die gebruikmaakt van een standaardkosteneenheid van 5 minuten
  • Schema-evaluatie die gebruikmaakt van een kosteneenheid van 10 minuten
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

Dit is de uitvoer van het migratieniveau B-5 van de schema-evaluatie:

  • Migratieniveaus:

    • A - Migratie die automatisch kan worden uitgevoerd

    • B - Migratie met herschrijven van code en een kosten voor menselijke dagen tot 5 dagen

    • C - Migratie met herschrijven van code en kosten van menselijke dagen gedurende 5 dagen

  • Technische niveaus:

    • 1 = Triviaal: Geen opgeslagen functies en geen triggers

    • 2 = Eenvoudig: Geen opgeslagen functies, maar triggers; geen handmatig herschrijven

    • 3 = Eenvoudig: Opgeslagen functies en/of triggers; geen handmatig herschrijven

    • 4 = Handmatig: Geen opgeslagen functies, maar triggers of weergaven met codeherschrijven

    • 5 = Moeilijk: Opgeslagen functies en/of triggers met codeherschrijven

De evaluatie bestaat uit:

  • Een letter (A of B) om op te geven of de migratie handmatig moet worden herschreven.

  • Een getal van 1 tot 5 om de technische moeilijkheid aan te geven.

Een andere optie, -human_days_limitgeeft de limiet van menselijke dagen aan. Stel hier het migratieniveau in op C om aan te geven dat de migratie een grote hoeveelheid werk, volledig projectbeheer en migratieondersteuning nodig heeft. De standaardwaarde is 10 mensendagen. U kunt de configuratierichtlijn HUMAN_DAYS_LIMIT gebruiken om deze standaardwaarde permanent te wijzigen.

Deze schema-evaluatie is ontwikkeld om gebruikers te helpen bepalen welke database het eerst moet worden gemigreerd en welke teams moeten worden gemobiliseerd.

Converteren

Bij migraties met minimale downtime verandert uw migratiebron. Het drijven van het doel in termen van gegevens en schema na de eenmalige migratie. Zorg er tijdens de fase gegevenssynchronisatie voor dat alle wijzigingen in de bron worden vastgelegd en in bijna realtime op het doel worden toegepast. Nadat u hebt gecontroleerd of alle wijzigingen op het doel zijn toegepast, kunt u oversnijden van de bron naar de doelomgeving.

In deze stap van de migratie worden de Oracle-code en DDL-scripts geconverteerd of vertaald naar PostgreSQL. Met het hulpprogramma Ora2Pg worden de Oracle-objecten automatisch geëxporteerd in een PostgreSQL-indeling. Sommige gegenereerde objecten kunnen niet worden gecompileerd in de PostgreSQL-database zonder handmatige wijzigingen.

Als u wilt weten welke elementen handmatig moeten worden ingrijpen, compileert u eerst de bestanden die zijn gegenereerd door Ora2Pg op basis van de PostgreSQL-database. Controleer het logboek en breng de benodigde wijzigingen aan totdat de schemastructuur compatibel is met de PostgreSQL-syntaxis.

Een migratiesjabloon maken

U wordt aangeraden de migratiesjabloon te gebruiken die Ora2Pg biedt. Wanneer u de opties --project_base gebruikt en --init_projectOra2Pg een projectsjabloon maakt met een werkstructuur, een configuratiebestand en een script om alle objecten uit de Oracle-database te exporteren. Zie de Ora2Pg-documentatie voor meer informatie.

Gebruik de volgende opdracht:

ora2pg --project_base /app/migration/ --init_project test_project

Hier volgt de voorbeelduitvoer:

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.

De sources/ map bevat de Oracle-code. De schema/ map bevat de code die is overgezet naar PostgreSQL. reports/ De map bevat de HTML-rapporten en de evaluatie van de migratiekosten.

Nadat de projectstructuur is gemaakt, wordt er een algemeen configuratiebestand gemaakt. Definieer de Oracle-databaseverbinding en de relevante configuratieparameters in het configuratiebestand. Zie de Ora2Pg-documentatie voor meer informatie over het configuratiebestand.

Oracle-objecten exporteren

Exporteer vervolgens de Oracle-objecten als PostgreSQL-objecten door het bestand uit te voeren export_schema.sh.

cd /app/migration/mig_project
./export_schema.sh

Voer de volgende opdracht handmatig uit.

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

Gebruik de volgende opdracht om de gegevens te extraheren.

ora2pg -t COPY -o data.sql -b %namespace%/data -c %namespace/config/ora2pg.conf

Bestanden compileren

Compileer ten slotte alle bestanden op de Azure Database for PostgreSQL-server. U kunt ervoor kiezen om de handmatig gegenereerde DDL-bestanden te laden of het tweede script te gebruiken import_all.sh om deze bestanden interactief te importeren.

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

Dit is de opdracht voor het importeren van gegevens:

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

Terwijl de bestanden worden gecompileerd, controleert u de logboeken en corrigeert u de syntaxis die Ora2Pg niet zelfstandig kon converteren.

Zie Oracle naar Azure Database for PostgreSQL-migratieoplossingen voor meer informatie.

Migrate

Nadat u de benodigde vereisten hebt en u de stappen voor premigratie hebt voltooid, kunt u het schema en de gegevensmigratie starten.

Schema en gegevens migreren

Wanneer u de benodigde oplossingen hebt aangebracht, kunt u een stabiele build van de database implementeren. Voer de psql importopdrachten uit, die verwijzen naar de bestanden die de gewijzigde code bevatten. Met deze taak worden de databaseobjecten gecompileerd op basis van de PostgreSQL-database en worden de gegevens geïmporteerd.

In deze stap kunt u een niveau van parallelle uitvoering implementeren voor het importeren van de gegevens.

Gegevens synchroniseren en oversnijden

Bij onlinemigraties (minimale downtime) blijft de migratiebron veranderen. Het drijven van het doel in termen van gegevens en schema na de eenmalige migratie.

Zorg er tijdens de fase gegevenssynchronisatie voor dat alle wijzigingen in de bron worden vastgelegd en in bijna realtime op het doel worden toegepast. Nadat u hebt gecontroleerd of alle wijzigingen zijn toegepast, kunt u oversnijden van de bron naar de doelomgeving.

Als u een onlinemigratie wilt uitvoeren, neemt u contact op met AskAzureDBforPostgreSQL@service.microsoft.com de ondersteuning.

In een delta-/incrementele migratie die Gebruikmaakt van Ora2Pg, gebruikt u voor elke tabel een query die filtert (snijdt) op datum, tijd of een andere parameter. Voltooi vervolgens de migratie met behulp van een tweede query waarmee de resterende gegevens worden gemigreerd.

Migreer eerst alle historische gegevens in de brongegevenstabel. Hier volgt een voorbeeld:

select * from table1 where filter_data < 01/01/2019

U kunt een query uitvoeren op de wijzigingen sinds de eerste migratie door een opdracht als deze uit te voeren:

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

In dit geval raden we u aan de validatie te verbeteren door de gegevenspariteit aan beide zijden, de bron en het doel te controleren.

Postmigratie

Voltooi na de migratiefase de taken na de migratie om ervoor te zorgen dat alles zo soepel en efficiënt mogelijk functioneert.

Toepassingen herstellen

Nadat de gegevens naar de doelomgeving zijn gemigreerd, moeten alle toepassingen die voorheen de bron gebruikten, het doel gaan gebruiken. Voor de installatie zijn soms wijzigingen in de toepassingen vereist.

Testen

Nadat de gegevens naar het doel zijn gemigreerd, voert u tests uit op de databases om te controleren of de toepassingen goed werken met het doel. Zorg ervoor dat de bron en het doel correct zijn gemigreerd door de handmatige gegevensvalidatiescripts uit te voeren voor de Oracle-bron- en PostgreSQL-doeldatabases.

In het ideale geval moet Ora2Pg worden gebruikt voor gegevensvalidatie als de bron- en doeldatabases een netwerkpad hebben. U kunt de TEST actie gebruiken om ervoor te zorgen dat alle objecten uit de Oracle-database zijn gemaakt in PostgreSQL.

Voer deze opdracht uit:

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

Optimaliseren

De fase na de migratie is van cruciaal belang voor het afstemmen van problemen met gegevensnauwkeurigheid en het controleren van de volledigheid. In deze fase kunt u ook prestatieproblemen met de workload oplossen.

Migratieassets

Zie de volgende bronnen voor meer informatie over dit migratiescenario. Ze ondersteunen projectbetrokkenheid in de echte wereld.

Bron Beschrijving
Kookboek voor Migratie van Oracle naar Azure PostgreSQL Dit document helpt architecten, consultants, databasebeheerders en gerelateerde rollen snel workloads te migreren van Oracle naar Azure Database for PostgreSQL met behulp van Ora2Pg.
Tijdelijke oplossingen voor Migratie van Oracle naar Azure PostgreSQL Dit document helpt architecten, consultants, databasebeheerders en gerelateerde rollen snel problemen op te lossen of te omzeilen tijdens het migreren van workloads van Oracle naar Azure Database for PostgreSQL.
Stappen voor het installeren van Ora2Pg in Windows of Linux Dit document bevat een snelle installatiehandleiding voor het migreren van schema en gegevens van Oracle naar Azure Database for PostgreSQL met behulp van Ora2Pg in Windows of Linux. Zie de Ora2Pg-documentatie voor meer informatie.

Het Data SQL Engineering-team heeft deze resources ontwikkeld. Het belangrijkste charter van dit team is het deblokkeren en versnellen van complexe modernisering voor migratieprojecten van het gegevensplatform naar het Microsoft Azure-gegevensplatform.

Meer ondersteuning

Neem contact op met @Ask Azure DB for PostgreSQL voor hulp bij migratie buiten het bereik van Ora2Pg-hulpprogramma's.

Volgende stappen

Zie Services en hulpprogramma's voor gegevensmigratie voor een matrix met services en hulpprogramma's voor database- en gegevensmigratie en voor speciale taken.

Documentatie: