Oracle migreren naar Azure Database for PostgreSQL

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

Zie de migratiehandleiding voor gedetailleerde en uitgebreide richtlijnen voor migratie.

Vereisten

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

  • Controleer of uw bronomgeving wordt ondersteund.
  • Download de nieuwste versie van ora2pg.
  • Beschikt over de nieuwste versie van de DBD-module.

Overzicht

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

Het hulpprogramma ora2pg 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 bedrijfsdatabase of het eenvoudig repliceren van enkele Oracle-gegevens naar een PostgreSQL-database. Het hulpprogramma is eenvoudig te gebruiken en vereist geen oracle-databasekennis, behalve 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 migratiearchitectuur ora2pg.

Nadat u de virtuele Azure Database for PostgreSQL hebt ingericht, hebt u twee configuraties nodig om de connectiviteit ertussen in te stellen: Toegang tot Azure-services toestaan en SSL-verbinding afdwingen:

  • Blade Verbindingsbeveiliging > Toegang tot Azure-services toestaan > AAN

  • Blade Verbindingsbeveiliging > SSL-Instellingen > SSL-verbinding > AFDWINGEN UITGESCHAKELD

Aanbevelingen

  • Als u de prestaties van de evaluatie- of exportbewerkingen op de Oracle-server wilt verbeteren, verzamelt u statistieken:

    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 foreign keys (FK's), beperkingen en indexen. Deze elementen vertragen het importeren van gegevens in PostgreSQL.

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

  • Gebruik, indien mogelijk, unieke indexen in ge materialiseerde weergaven. Deze indexen kunnen de vernieuwing versnellen wanneer u de syntaxis REFRESH MATERIALIZED VIEW CONCURRENTLY gebruikt.

Premigratie

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

  1. Ontdekken: Inventariseren van de databases die u moet migreren.
  2. Evalueren: deze databases beoordelen 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 compatibel maken van de brondatabaseschema's 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.

Evaluatiescripts van Microsoft 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 het aantal objecten per 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, en meer.

Download de gerelateerde scripts van github.

Evalueren

Nadat u de Oracle-databases hebt inventariseert, hebt u een idee van de grootte van de database en de 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. Voor het beoordelen van de migratiekosten controleert ora2pg alle databaseobjecten, functies en opgeslagen procedures voor objecten en PL/SQL-code die niet automatisch kan worden ge converteerd.

Het hulpprogramma ora2pg heeft een modus voor inhoudsanalyse waarmee de Oracle-database wordt gecontroleerd 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 SHOW_REPORT type, zoals wordt weergegeven in de volgende opdracht:

ora2pg -t SHOW_REPORT

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

Voor het schatten van de migratiekosten in mensendagen kunt u met ora2pg een configuratie-richtlijn met de naam ESTIMATE_COST gebruiken. U kunt deze -opdracht ook inschakelen via 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 COST_UNIT_VALUE configuratie-richtlijn of de --cost_unit_value opdrachtregeloptie.

De laatste regel van het rapport toont 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
  • Kolommen beoordelen
  • 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

Hier 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 kosten voor duur voor mensendagen tot 5 dagen

    • C - Migratie met herschrijven van code en kosten voor duur van een paar dagen gedurende vijf dagen

  • Technische niveaus:

    • 1 = Trivial: 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 code herschrijven

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

De evaluatie bestaat uit:

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

  • Een getal tussen 1 en 5 om de technische problemen aan te geven.

Een andere optie, -human_days_limit , geeft de limiet van de menselijke dagen aan. Stel hier het migratieniveau in op C om aan te geven dat voor de migratie een grote hoeveelheid werk, volledig projectbeheer en migratieondersteuning nodig is. De standaardwaarde is 10 mensendagen. U kunt de configuratie-richtlijn gebruiken HUMAN_DAYS_LIMIT 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 gemigreerd.

Converteren

Bij migraties met minimale downtime wordt uw migratiebron gewijzigd. Het wijdt van het doel in termen van gegevens en schema na de een een time-migratie. Zorg er tijdens de fase Gegevenssynchronisatie voor dat alle wijzigingen in de bron in bijna realtime worden vastgelegd en toegepast op het doel. Nadat u hebt gecontroleerd of alle wijzigingen zijn toegepast op het doel, kunt u van de bron naar de doelomgeving knippen.

In deze stap van de migratie worden de Oracle-code en DDL-scripts geconverteerd of vertaald naar PostgreSQL. Het hulpprogramma ora2pg exporteert de Oracle-objecten automatisch 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 ingegrepen, compileert u eerst de bestanden die door ora2pg zijn gegenereerd voor de PostgreSQL-database. Controleer het logboek en pas de benodigde wijzigingen aan totdat de schemastructuur compatibel is met de PostgreSQL-syntaxis.

Een migratiesjabloon maken

We raden u aan de migratiesjabloon te gebruiken die ora2pg biedt. Wanneer u de opties en gebruikt, maakt ora2pg een projectsjabloon met een werkstructuur, een configuratiebestand en een script om alle objecten uit de --project_base --init_project Oracle-database te exporteren. Zie de ora2pg-documentatievoor meer informatie.

Gebruik de volgende opdracht:

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

Hier is 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 overgeplaatst naar PostgreSQL. En de reports/ 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-documentatievoor meer informatie over het configuratiebestand.

Oracle-objecten exporteren

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

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 import_all.sh te gebruiken 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 zelf kon converteren.

Zie Oracle to Azure Database for PostgreSQL migration workarounds (Tijdelijkeoplossingen voor migratie) voor meer informatie.

Migrate

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

Schema en gegevens migreren

Wanneer u de benodigde oplossingen hebt aangebracht, is een stabiele build van de database gereed om te worden geïmplementeerd. Voer de psql importopdrachten uit en verwijs naar de bestanden die de gewijzigde code bevatten. Met deze taak worden de databaseobjecten ge compileerd op 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 knippen

Bij onlinemigraties (minimale downtime) blijft de migratiebron veranderen. Het wijdt van het doel in termen van gegevens en schema na de een een time-migratie.

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

Als u een onlinemigratie wilt maken, neem dan contact AskAzureDBforPostgreSQL@service.microsoft.com op met voor ondersteuning.

In een delta-/incrementele migratie die gebruikmaakt van ora2pg, gebruikt u voor elke tabel een query die filtert ( knipt ) op datum, tijd of een andere parameter. Vervolgens kunt u de migratie voltooien met behulp van een tweede query die de resterende gegevens migreert.

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

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

U kunt de wijzigingen sinds de eerste migratie opvragen 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 werkt.

Toepassingen herstellen

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

Testen

Nadat de gegevens naar het doel zijn gemigreerd, moet u tests uitvoeren 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 op de Oracle-bron- en PostgreSQL-doeldatabases.

Als de bron- en doeldatabases een netwerkpad hebben, moet ora2pg worden gebruikt voor gegevensvalidatie. U kunt de actie gebruiken om ervoor te zorgen dat alle objecten uit de TEST Oracle-database zijn gemaakt in PostgreSQL.

Voer deze opdracht uit:

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

Optimaliseren

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

Migratie-assets

Zie de volgende resources voor meer informatie over dit migratiescenario. Ze ondersteunen de betrokkenheid van een echt migratieproject.

Resource Beschrijving
Handleiding voor migratie van Oracle naar Azure PostgreSQL Dit document helpt architecten, consultants, databasebeheerders en gerelateerde rollen om workloads snel van Oracle naar Azure Database for PostgreSQL migreren met behulp van ora2pg.
Tijdelijke oplossingen voor migratie van Oracle naar Azure PostgreSQL Dit document helpt architecten, consultants, databasebeheerders en gerelateerde rollen om problemen snel op te lossen of te verhelpen tijdens het migreren van workloads van Oracle naar Azure Database for PostgreSQL.
Stappen voor het installeren van ora2pg op Windows of Linux Dit document bevat een snelle installatiehandleiding voor het migreren van het schema en de gegevens van Oracle naar Azure Database for PostgreSQL met behulp van ora2pg op Windows of Linux. Zie de ora2pg-documentatievoor meer informatie.

Het Data SQL Engineering-team heeft deze resources ontwikkeld. De kern van dit team is het deblokkeren en versnellen van complexe modernisering voor gegevensplatformmigratieprojecten naar Microsoft Azure dataplatform.

Meer ondersteuning

Voor hulp bij migratie buiten het bereik van ora2pg-hulpprogramma's, kunt u contact opnemen @Ask met Azure DB for PostgreSQL.

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: