Dela via


Migrera Oracle till Azure Database for PostgreSQL med Ora2Pg

GÄLLER FÖR: Azure Database for PostgreSQL – flexibel server

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

Detaljerad och omfattande vägledning för Ora2Pg-migrering finns i Migreringsguideresurser.

Förutsättningar

Om du vill migrera ditt Oracle-schema till Azure Database for PostgreSQL måste du:

  • Kontrollera att källmiljön 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.

Verktyget Ora2Pg ansluter din Oracle-databas, söker igenom 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 bakåtkompilera 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.

Kommentar

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

Typisk Ora2Pg-migreringsarkitektur

Skärmbild av Ora2Pg-migreringsarkitekturen.

När du har etablerat den virtuella datorn och 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>

  • SSL-inställningar>för bladet> Anslutningssäkerhet Framtvinga SSL-anslutning>inaktiverad

Rekommendationer

  • Samla in statistik för att förbättra prestanda för utvärderings- eller exportåtgärderna på Oracle-servern:

    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 sekundärnycklar (FK:er), begränsningar och index. Dessa element saktar ned processen för att importera data till PostgreSQL.

  • 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 kontrollerat att källmiljön stöds och att du har åtgärdat eventuella krav är du redo att starta förmigrationssteget. Så här börjar du:

  1. Upptäck: 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, till exempel Oracle till Azure Database for PostgreSQL, innebär det här steget också att göra källdatabasschemana 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 oracle-instanser i organisationen tillsammans med den version och de funktioner som används.

Microsofts förutvärderingsskript för Oracle körs mot Oracle-databasen. Skripten före utvärdering kör frågor mot Oracle-metadata. Skripten tillhandahåller:

  • En databasinventering, inklusive antalet objekt efter schema, typ och status.
  • En grov uppskattning av rådata i varje schema baserat på statistik.
  • Storleken på tabellerna 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 får du en uppfattning om databasens storlek och potentiella utmaningar. Nästa steg är att köra utvärderingen.

Det är inte lätt att beräkna 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.

Verktyget Ora2Pg har ett innehållsanalyslä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 typen SHOW_REPORT enligt följande kommando:

ora2pg -t SHOW_REPORT

Verktyget Ora2Pg kan konvertera SQL- och PL/SQL-kod 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.

Med Ora2Pg kan du använda ett konfigurationsdirektiv med namnet ESTIMATE_COSTför att beräkna migreringskostnaden i mänskliga dagar. 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 den här migreringen är din första kan du öka standardmigreringsenheten med hjälp av konfigurationsdirektivet COST_UNIT_VALUE eller kommandoradsalternativet --cost_unit_value .

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

I följande kodexempel ser du 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 schemautvärderingsmigreringsnivån B-5:

  • Migreringsnivåer:

    • A – Migrering som kan köras automatiskt

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

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

  • Tekniska nivåer:

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

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

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

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

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

Utvärderingen består av:

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

  • Ett tal från 1 till 5 för att ange den tekniska svårigheten.

Ett annat alternativ, -human_days_limit, anger gränsen för mänskliga dagar. Här anger du migreringsnivån till C för att indikera att migreringen behöver en stor mängd arbete, fullständig projekthantering och migreringsstöd. Standardvärdet är 10 dagar för människor. Du kan använda konfigurationsdirektivet HUMAN_DAYS_LIMIT för att ändra det här standardvärdet permanent.

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

Konvertera

Vid migrering av minimal stilleståndstid ändras din migreringskälla. Den avviker från målet när det gäller data och schema efter engångsmigreringen. Under datasynkroniseringsfasen kontrollerar du att alla ändringar i källan samlas in och tillämpas på målet nästan i realtid. När du har kontrollerat att alla ändringar tillämpas på målet kan du skära över från källan till målmiljön.

I det här steget av migreringen konverteras eller översätts Oracle-koden och DDL-skripten till PostgreSQL. Verktyget Ora2Pg exporterar Oracle-objekten automatiskt i PostgreSQL-format. 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 filerna 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 --project_base och --init_projectskapar Ora2Pg en projektmall med ett arbetsträd, en konfigurationsfil och ett skript för att exportera alla objekt från Oracle-databasen. Mer information finns i Ora2Pg-dokumentationen.

Ange följande kommando:

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

Här är exempelutdata:

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 är porterad till PostgreSQL. Och katalogen reports/ innehåller HTML-rapporterna och migreringskostnadsbedömningen.

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

Använd följande kommando för att extrahera data.

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

Kompilera filer

Kompilera slutligen 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 filerna 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 kommandot för dataimport:

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

Medan filerna kompileras kontrollerar du loggarna och korrigerar alla syntaxer som Ora2Pg inte kunde konvertera på egen hand.

Mer information finns i Oracle till Azure Database for PostgreSQL-migreringslösningar.

Migrera

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

Migrera schema och data

När du har gjort nödvändiga korrigeringar är en stabil version av databasen redo att distribueras. psql Kör importkommandona och peka på filerna 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å vid import av data.

Synkronisera data och klipp ut

Vid onlinemigreringar (minimal stilleståndstid) fortsätter migreringskällan att ändras. Den avviker från målet när det gäller data och schema efter engångsmigreringen.

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

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

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

Migrera alla historiska data först i källdatatabellen. 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 migreringsfasen 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 förbruka målet. Installationen kräver ibland ändringar i programmen.

Test

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. Kontrollera att källan och målet migreras korrekt genom att köra de manuella datavalideringsskripten mot Oracle-källan och PostgreSQL-måldatabaserna.

Om käll- och måldatabaserna har en nätverkssökväg bör Ora2Pg användas för dataverifiering. Du kan använda åtgärden TEST för att säkerställa 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 verifiera fullständighet. I den här fasen hanterar du även prestandaproblem med arbetsbelastningen.

Migreringstillgångar

Mer information om det här migreringsscenariot finns i följande resurser. De stöder verkligt engagemang för migreringsprojekt.

Resurs beskrivning
Oracle till Azure PostgreSQL-migreringskokbok 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.
Lösning för Oracle till Azure PostgreSQL-migrering Det här dokumentet hjälper arkitekter, konsulter, databasadministratörer och relaterade roller att snabbt åtgärda eller kringgå problem vid migrering av arbetsbelastningar från Oracle till Azure Database for PostgreSQL.
Steg för att installera Ora2Pg i Windows eller Linux Det här dokumentet innehåller en snabbinstallationsguide för migrering av schema och data från Oracle till Azure Database for PostgreSQL med hjälp av Ora2Pg i Windows eller Linux. Mer information finns i Ora2Pg-dokumentationen.

Data SQL Engineering-teamet utvecklade dessa resurser. Det här teamets huvudstadga är att avblockera och påskynda komplex modernisering för migreringsprojekt för dataplattform till Microsoft Azure-dataplattformen.

Mer support

Kontakta @Ask Azure DB for PostgreSQL om du vill ha migreringshjälp utöver omfånget för Ora2Pg-verktyg.

Nästa steg

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

Dokumentation: