Migrera Oracle till Azure Database for PostgreSQL

Den här guiden hjälper dig att migrera ditt Oracle-schema till Azure Database for PostgreSQL.

Detaljerad och omfattande migreringsvägledning finns i resurser i migreringsguiden.

Förutsättningar

Om du vill migrera oracle-Azure Database for PostgreSQL till en dator måste du:

  • Kontrollera att din källmiljö stöds.
  • Ladda ned den senaste versionen av ora2pg.
  • Ha den senaste versionen av DBD-modulen.

Översikt

PostgreSQL är en av världens mest avancerade databaser med öppen källkod. Den här artikeln beskriver hur du använder det kostnadsfria ora2pg-verktyget för att migrera en Oracle-databas till PostgreSQL. Du kan använda ora2pg för att migrera en Oracle-databas eller MySQL-databas till ett PostgreSQL-kompatibelt schema.

Ora2pg-verktyget ansluter din Oracle-databas, genomsöker den automatiskt och extraherar dess struktur eller data. Sedan genererar ora2pg SQL skript som du kan läsa in i PostgreSQL-databasen. Du kan använda ora2pg för uppgifter som att göra om en Oracle-databas, migrera en stor företagsdatabas eller helt enkelt replikera vissa Oracle-data till en PostgreSQL-databas. Verktyget är enkelt att använda och kräver ingen Oracle-databaskunskap förutom möjligheten att tillhandahålla de parametrar som behövs för att ansluta till Oracle-databasen.

Anteckning

Mer information om hur du använder den senaste versionen av ora2pg finns i ora2pg-dokumentationen.

Typisk arkitektur för ora2pg-migrering

Skärmbild av migreringsarkitekturen för ora2pg.

När du har etablerat den virtuella Azure Database for PostgreSQL behöver du två konfigurationer för att aktivera anslutningen mellan dem: Tillåt åtkomst till Azure-tjänster och Framtvinga SSL-anslutning:

  • Bladet Anslutningssäkerhet > Tillåt åtkomst till Azure-tjänster >

  • Bladet Anslutningssäkerhet > SSL Inställningar Framtvinga > SSL-anslutning > INAKTIVERAD

Rekommendationer

  • Om du vill förbättra prestanda för utvärderings- eller exportåtgärderna på Oracle-servern samlar du in statistik:

    BEGIN
    
       DBMS_STATS.GATHER_SCHEMA_STATS
       DBMS_STATS.GATHER_DATABASE_STATS
       DBMS_STATS.GATHER_DICTIONARY_STATS
       END;
    
  • Exportera data med kommandot COPY i stället för INSERT .

  • Undvik att exportera tabeller med sina främmande nycklar (FK), begränsningar och index. Dessa element gör processen med att importera data till PostgreSQL långsammare.

  • Skapa materialiserade vyer med hjälp av no data-satsen. Uppdatera sedan vyerna senare.

  • Använd om möjligt unika index i materialiserade vyer. Dessa index kan påskynda uppdateringen när du använder syntaxen REFRESH MATERIALIZED VIEW CONCURRENTLY .

Före migrering

När du har verifierat att din källmiljö stöds och att du har åtgärdat eventuella krav är du redo att starta förmigreringsfasen. Så här börjar du:

  1. Identifiera: Inventera de databaser som du behöver migrera.
  2. Utvärdera: Utvärdera dessa databaser för potentiella migreringsproblem eller blockerare.
  3. Konvertera: Lös alla objekt som du har upptäckt.

För heterogena migreringar som Oracle till Azure Database for PostgreSQL ingår även att göra källdatabasscheman kompatibla med målmiljön.

Identifiera

Målet med identifieringsfasen är att identifiera befintliga datakällor och information om de funktioner som används. Den här fasen hjälper dig att bättre förstå och planera för migreringen. Processen omfattar genomsökning av nätverket för att identifiera alla organisationens Oracle-instanser tillsammans med den version och de funktioner som används.

Microsofts förutvärderingsskript för Oracle körs mot Oracle-databasen. Skripten för förutvärdering frågar Oracle-metadata. Skripten innehåller:

  • En databasinventering, inklusive antal objekt efter schema, typ och status.
  • En grov uppskattning av rådata i varje schema, baserat på statistik.
  • Storleken på tabeller i varje schema.
  • Antalet kodrader per paket, funktion, procedur och så vidare.

Ladda ned relaterade skript från github.

Utvärdera

När du har inventera Oracle-databaserna har du en uppfattning om databasens storlek och potentiella utmaningar. Nästa steg är att köra utvärderingen.

Det är inte enkelt att uppskatta kostnaden för en migrering från Oracle till PostgreSQL. För att utvärdera migreringskostnaden kontrollerar ora2pg alla databasobjekt, funktioner och lagrade procedurer för objekt och PL/SQL kod som den inte kan konvertera automatiskt.

Ora2pg-verktyget har ett innehåll analysläge som inspekterar Oracle-databasen för att generera en textrapport. Rapporten beskriver vad Oracle-databasen innehåller och vad som inte kan exporteras.

Om du vill aktivera analys- och rapportläget använder du den exporterade SHOW_REPORT typen enligt följande kommando:

ora2pg -t SHOW_REPORT

Ora2pg-verktyget kan konvertera SQL och PL/SQL från Oracle-syntax till PostgreSQL. Så när databasen har analyserats kan ora2pg uppskatta kodproblemen och den tid som krävs för att migrera en fullständig databas.

Om du vill beräkna migreringskostnaden under mänskliga dagar kan du använda ett konfigurationsdirektiv med namnet ora2pg. ESTIMATE_COST Du kan också aktivera det här direktivet i en kommandotolk:

ora2pg -t SHOW_REPORT --estimate_cost

Standardmigreringsenheten representerar cirka fem minuter för en PostgreSQL-expert. Om migreringen är din första kan du öka standardmigreringsenheten med hjälp av COST_UNIT_VALUE konfigurationsdirektiv --cost_unit_value eller kommandoradsalternativet.

Den sista raden i rapporten visar den totala uppskattade migreringskoden under mänskliga dagar. Uppskattningen följer antalet uppskattade migreringsenheter för varje objekt.

I följande kodexempel visas några utvärderingsvariationer:

  • Utvärdering av tabeller
  • Utvärdering av kolumner
  • Schemautvärdering som använder en standardkostnadsenhet på 5 minuter
  • Schemautvärdering som använder en kostnadsenhet på 10 minuter
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

Här är utdata från migreringsnivån B-5 för schemautvärdering:

  • Migreringsnivåer:

    • A – Migrering som kan köras automatiskt

    • B – Migrering med kodskrivning och en mänsklig kostnad på upp till 5 dagar

    • C – Migrering med kodskrivning och kostnad för mänskliga dagar under 5 dagar

  • Tekniska nivåer:

    • 1 = Trivialt: Inga lagrade funktioner och inga utlösare

    • 2 = Enkelt: Inga lagrade funktioner, men utlösare; ingen manuell omskrivning

    • 3 = Enkelt: Lagrade funktioner och/eller utlösare; ingen manuell omskrivning

    • 4 = Manuell: Inga lagrade funktioner, men utlösare eller vyer med kodskrivning

    • 5 = Svårt: Lagrade funktioner och/eller utlösare med kodskrivning

Utvärderingen består av:

  • En bokstav (A eller B) för att ange om migreringen behöver skrivas om manuellt.

  • Ett tal mellan 1 och 5 för att ange den tekniska svårighetsgraden.

Ett annat -human_days_limit alternativ, , anger gränsen för mänskliga dagar. Här ställer du in migreringsnivån på C för att ange att migreringen behöver mycket arbete, fullständig projekthantering och migreringsstöd. Standardvärdet är 10 mänskliga dagar. Du kan använda konfigurationsdirektiv HUMAN_DAYS_LIMIT för att ändra standardvärdet permanent.

Den här schemautvärderingen har utvecklats för att hjälpa användarna att bestämma vilken databas som ska migreras först och vilka team som ska flyttas.

Konvertera

Migreringskällan ändras i migreringskällan vid minimal avbrottstid. Den körs från målet när det gäller data och schema efter en enda migrering. Under datasynkroniseringsfasen ser du till att alla ändringar i källan samlas in och tillämpas på målet nästan i realtid. När du har verifierat att alla ändringar tillämpas på målet kan du minska från källan till målmiljön.

I det här migreringssteget konverteras eller översätts Oracle-koden och DDL-skripten till PostgreSQL. Ora2pg-verktyget exporterar Oracle-objekt i PostgreSQL-format automatiskt. Vissa av de genererade objekten kan inte kompileras i PostgreSQL-databasen utan manuella ändringar.

För att förstå vilka element som behöver manuella åtgärder kompilerar du först de filer som genereras av ora2pg mot PostgreSQL-databasen. Kontrollera loggen och gör sedan nödvändiga ändringar tills schemastrukturen är kompatibel med PostgreSQL-syntaxen.

Skapa en migreringsmall

Vi rekommenderar att du använder migreringsmallen som ora2pg tillhandahåller. När du använder alternativen och --project_base , skapar ora2pg en projektmall med ett arbetsträd, en konfigurationsfil och ett skript för att exportera alla objekt från --init_project Oracle-databasen. Mer information finns i ora2pg-dokumentationen.

Ange följande kommando:

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

Här är exempel på utdata:

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.

Katalogen sources/ innehåller Oracle-koden. Katalogen schema/ innehåller koden som portas till PostgreSQL. Katalogen innehåller reports/ ÄVEN HTML-rapporterna och utvärderingen av migreringskostnaden.

När projektstrukturen har skapats skapas en allmän konfigurationsfil. Definiera Oracle-databasanslutningen och relevanta konfigurationsparametrar i konfigurationsfilen. Mer information om konfigurationsfilen finns i ora2pg-dokumentationen.

Exportera Oracle-objekt

Exportera sedan Oracle-objekten som PostgreSQL-objekt genom att köra filen export_schema.sh.

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

Kör följande kommando manuellt.

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

Extrahera data med hjälp av följande kommando.

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

Kompilera filer

Slutligen kompilerar du alla filer mot Azure Database for PostgreSQL servern. Du kan välja att läsa in de manuellt genererade DDL-filerna eller använda det andra skriptet import_all.sh för att importera dessa filer interaktivt.

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

Här är dataimportkommandot:

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

När filerna kompileras kontrollerar du loggarna och korrigerar all syntax som ora2pg inte kunde konvertera på egen hand.

Mer information finns i Oracle för att Azure Database for PostgreSQL lösningar för migrering.

Migrera

När du har de nödvändiga förutsättningarna och har slutfört förmigreringsstegen kan du starta schemat och datamigreringen.

Migrera schema och data

När du har gjort de nödvändiga korrigeringarna är en stabil version av databasen redo att distribueras. Kör psql importkommandona och peka på de filer som innehåller den ändrade koden. Den här uppgiften kompilerar databasobjekten mot PostgreSQL-databasen och importerar data.

I det här steget kan du implementera en parallellitetsnivå när du importerar data.

Synkronisera data och klipp ut

Vid onlinemigrering (minimal stilleståndstid) fortsätter migreringskällan att ändras. Den körs från målet när det gäller data och schema efter en enda migrering.

Under datasynkroniseringsfasen ser du till att alla ändringar i källan samlas in och tillämpas på målet nästan i realtid. När du har verifierat att alla ändringar har tillämpats kan du minska från källan till målmiljön.

Kontakta supporten om du vill göra en AskAzureDBforPostgreSQL@service.microsoft.com onlinemigrering.

I en delta-/inkrementell migrering som använder ora2pg använder du för varje tabell en fråga som filtrerar (delar) efter datum, tid eller en annan parameter. Slutför sedan migreringen med hjälp av en andra fråga som migrerar återstående data.

I källdatatabellen migrerar du alla historiska data först. Här är ett exempel:

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

Du kan köra frågor mot ändringarna sedan den första migreringen genom att köra ett kommando som det här:

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

I det här fallet rekommenderar vi att du förbättrar valideringen genom att kontrollera dataparitet på båda sidor, källan och målet.

Efter migreringen

Efter migreringssteget slutför du uppgifterna efter migreringen för att säkerställa att allt fungerar så smidigt och effektivt som möjligt.

Åtgärda program

När data har migrerats till målmiljön måste alla program som tidigare förbrukade källan börja använda målet. Konfigurationen kräver ibland ändringar i programmen.

Testa

När data har migrerats till målet kör du tester mot databaserna för att kontrollera att programmen fungerar bra med målet. Se till att källan och målet migreras korrekt genom att köra manuella datavalideringsskript mot Oracle-källdatabaserna och PostgreSQL-måldatabaserna.

Vi rekommenderar att du använder ora2pg för dataverifiering om käll- och måldatabaserna har en nätverkssökväg. Du kan använda åtgärden TEST för att se till att alla objekt från Oracle-databasen har skapats i PostgreSQL.

Kör följande kommando:

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

Optimera

Fasen efter migreringen är avgörande för att stämma av eventuella problem med datanoggrannhet och för att verifiera fullständigheten. I den här fasen kan du även åtgärda prestandaproblem med arbetsbelastningen.

Migreringstillgångar

Mer information om det här migreringsscenariot finns i följande resurser. De stöder projektinteragemang för verklig migrering.

Resurs Beskrivning
Cookbook för Oracle till Azure PostgreSQL-migrering Det här dokumentet hjälper arkitekter, konsulter, databasadministratörer och relaterade roller att snabbt migrera arbetsbelastningar från Oracle till Azure Database for PostgreSQL med hjälp av ora2pg.
Migreringslösning för Oracle till Azure PostgreSQL Det här dokumentet hjälper arkitekter, konsulter, databasadministratörer och relaterade roller att snabbt åtgärda eller lösa problem vid migrering av arbetsbelastningar från Oracle till Azure Database for PostgreSQL.
Steg för att installera ora2pg på Windows eller Linux Det här dokumentet innehåller en snabb installationsguide för att migrera schema och data från Oracle till Azure Database for PostgreSQL med hjälp av ora2pg på Windows eller Linux. Mer information finns i ora2pg-dokumentationen.

Data SQL engineering-teamet utvecklade dessa resurser. Teamets huvudstadga är att avblockera och påskynda komplex modernisering för dataplattformsmigreringsprojekt till Microsoft Azure dataplattformen.

Mer support

Om du behöver migreringshjälp utöver ora2pg-verktygsomfånget kontaktar @Ask du Azure DB for PostgreSQL.

Nästa steg

En matris med tjänster och verktyg för databas- och datamigrering och för specialuppgifter finns i Tjänster och verktyg för datamigrering.

Dokumentation: