Condividi tramite


Eseguire la migrazione di Oracle a Database di Azure per PostgreSQL usando Ora2Pg

SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile

Questa guida consente di eseguire la migrazione dello schema Oracle a Database di Azure per PostgreSQL.

Per indicazioni dettagliate e complete sulla migrazione ora2Pg, vedere le risorse della Guida alla migrazione.

Prerequisiti

Per eseguire la migrazione dello schema Oracle a Database di Azure per PostgreSQL, è necessario:

  • Verificare che l'ambiente di origine sia supportato.
  • Scarica la versione più recente di Ora2Pg.
  • Disporre della versione più recente del modulo DBD.

Panoramica

PostgreSQL è uno dei database open source più avanzati al mondo. Questo articolo descrive come usare lo strumento Ora2Pg gratuito per eseguire la migrazione di un database Oracle a PostgreSQL. È possibile usare Ora2Pg per eseguire la migrazione di un database Oracle o di un database MySQL a uno schema compatibile con PostgreSQL.

Lo strumento Ora2Pg connette il database Oracle, lo analizza automaticamente ed estrae la struttura o i dati. Ora2Pg genera quindi script SQL che è possibile caricare nel database PostgreSQL. È possibile usare Ora2Pg per attività come il reverse engineering di un database Oracle, la migrazione di un database aziendale enorme o semplicemente la replica di alcuni dati Oracle in un database PostgreSQL. Lo strumento è facile da usare e non richiede alcuna conoscenza del database Oracle oltre alla possibilità di fornire i parametri necessari per connettersi al database Oracle.

Nota

Per altre informazioni sull'uso della versione più recente di Ora2Pg, vedere la documentazione di Ora2Pg.

Architettura di migrazione Ora2Pg tipica

Screenshot dell'architettura di migrazione Ora2Pg.

Dopo aver effettuato il provisioning della macchina virtuale e Database di Azure per PostgreSQL, sono necessarie due configurazioni per abilitare la connettività tra di esse: Consentire l'accesso ai servizi di Azure e Applicare la connessione SSL:

  • Pannello Sicurezza connessione Consenti l'accesso ai servizi>di Azure ON >

  • Pannello Sicurezza connessione Impostazioni>SSL Imponi connessione>SSL DISABILITATa >

Elementi consigliati

  • Per migliorare le prestazioni delle operazioni di valutazione o esportazione nel server Oracle, raccogliere statistiche:

    BEGIN
    
       DBMS_STATS.GATHER_SCHEMA_STATS
       DBMS_STATS.GATHER_DATABASE_STATS
       DBMS_STATS.GATHER_DICTIONARY_STATS
       END;
    
  • Esportare i dati usando il COPY comando anziché INSERT.

  • Evitare di esportare tabelle con chiavi esterne ,vincoli e indici. Questi elementi rallentano il processo di importazione dei dati in PostgreSQL.

  • Creare viste materializzate usando la clausola no data. Aggiornare quindi le visualizzazioni in un secondo momento.

  • Se possibile, usare indici univoci nelle viste materializzate. Questi indici possono velocizzare l'aggiornamento quando si usa la sintassi REFRESH MATERIALIZED VIEW CONCURRENTLY.

Pre-migrazione

Dopo aver verificato che l'ambiente di origine sia supportato e che siano stati risolti i prerequisiti, si è pronti per avviare la fase di premigration. Per iniziare:

  1. Individuazione: inventariare i database di cui è necessario eseguire la migrazione.
  2. Valutazione: valutare tali database per individuare potenziali problemi di migrazione o blocchi.
  3. Converti: consente di risolvere tutti gli elementi rilevati.

Per le migrazioni eterogenee, ad esempio Oracle a Database di Azure per PostgreSQL, questa fase comporta anche la compatibilità degli schemi del database di origine con l'ambiente di destinazione.

Discover

L'obiettivo della fase di individuazione è identificare le origini dati esistenti e i dettagli sulle funzionalità in uso. Questa fase consente di comprendere meglio e pianificare la migrazione. Il processo implica l'analisi della rete per identificare tutte le istanze Oracle dell'organizzazione insieme alla versione e alle funzionalità in uso.

Script di pre-valutazione Microsoft per Oracle eseguiti sul database Oracle. Gli script di pre-valutazione eseguono query sui metadati Oracle. Gli script forniscono:

  • Inventario di database, inclusi i conteggi degli oggetti in base allo schema, al tipo e allo stato.
  • Stima approssimativa dei dati non elaborati in ogni schema, in base alle statistiche.
  • Dimensioni delle tabelle in ogni schema.
  • Numero di righe di codice per pacchetto, funzione, routine e così via.

Scaricare gli script correlati da GitHub.

Valutazione

Dopo aver inventariato i database Oracle, si avrà un'idea delle dimensioni del database e delle potenziali sfide. Il passaggio successivo consiste nell'eseguire la valutazione.

La stima del costo di una migrazione da Oracle a PostgreSQL non è semplice. Per valutare il costo della migrazione, Ora2Pg controlla tutti gli oggetti, le funzioni e le stored procedure di database per gli oggetti e il codice PL/SQL che non può convertire automaticamente.

Lo strumento Ora2Pg ha una modalità di analisi del contenuto che controlla il database Oracle per generare un report di testo. Il report descrive cosa contiene il database Oracle e cosa non può essere esportato.

Per attivare l'analisi e la modalità report , usare il tipo SHOW_REPORT esportato come illustrato nel comando seguente:

ora2pg -t SHOW_REPORT

Lo strumento Ora2Pg può convertire codice SQL e PL/SQL dalla sintassi Oracle a PostgreSQL. Quindi, dopo l'analisi del database, Ora2Pg può stimare le difficoltà del codice e il tempo necessario per eseguire la migrazione di un database completo.

Per stimare il costo della migrazione in giorni umani, Ora2Pg consente di usare una direttiva di configurazione denominata ESTIMATE_COST. È anche possibile abilitare questa direttiva al prompt dei comandi:

ora2pg -t SHOW_REPORT --estimate_cost

L'unità di migrazione predefinita rappresenta circa cinque minuti per un esperto postgreSQL. Se questa migrazione è la prima, è possibile aumentare l'unità di migrazione predefinita usando la direttiva COST_UNIT_VALUE di configurazione o l'opzione della --cost_unit_value riga di comando.

L'ultima riga del report mostra il codice di migrazione stimato totale in giorni umani. La stima segue il numero di unità di migrazione stimate per ogni oggetto.

Nell'esempio di codice seguente vengono visualizzate alcune variazioni di valutazione:

  • Valutazione delle tabelle
  • Valutazione delle colonne
  • Valutazione dello schema che usa un'unità di costo predefinita di 5 minuti
  • Valutazione dello schema che usa un'unità di costo di 10 minuti
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

Ecco l'output della migrazione della valutazione dello schema B-5:

  • Livelli di migrazione:

    • R - Migrazione che può essere eseguita automaticamente

    • B - Migrazione con riscrittura del codice e un costo di giorni umani fino a 5 giorni

    • C - Migrazione con la riscrittura del codice e un costo di giorni umani per più di 5 giorni

  • Livelli tecnici:

    • 1 = Semplice: nessuna funzione archiviata e nessun trigger

    • 2 = Facile: nessuna funzione archiviata, ma trigger; nessuna riscrittura manuale

    • 3 = Semplice: funzioni archiviate e/o trigger; nessuna riscrittura manuale

    • 4 = Manuale: nessuna funzione archiviata, ma trigger o viste con riscrittura del codice

    • 5 = Difficile: funzioni archiviate e/o trigger con riscrittura del codice

La valutazione è costituita da:

  • Lettera (A o B) per specificare se la migrazione richiede la riscrittura manuale.

  • Numero compreso tra 1 e 5 per indicare la difficoltà tecnica.

Un'altra opzione, -human_days_limit, specifica il limite di giorni umani. In questo caso, impostare il livello di migrazione su C per indicare che la migrazione richiede una grande quantità di lavoro, la gestione completa dei progetti e il supporto per la migrazione. Il valore predefinito è 10 giorni umani. È possibile usare la direttiva HUMAN_DAYS_LIMIT di configurazione per modificare questo valore predefinito in modo permanente.

Questa valutazione dello schema è stata sviluppata per aiutare gli utenti a decidere quale database migrare per primo e quali team mobilizzare.

Convert

Nelle migrazioni con tempi di inattività minimi, l'origine della migrazione cambia. Si allontana dalla destinazione in termini di dati e schema dopo la migrazione monouso. Durante la fase di sincronizzazione dei dati, assicurarsi che tutte le modifiche nell'origine vengano acquisite e applicate alla destinazione quasi in tempo reale. Dopo aver verificato che tutte le modifiche vengano applicate alla destinazione, è possibile passare dall'origine all'ambiente di destinazione.

In questo passaggio della migrazione, il codice Oracle e gli script DDL vengono convertiti o convertiti in PostgreSQL. Lo strumento Ora2Pg esporta automaticamente gli oggetti Oracle in un formato PostgreSQL. Alcuni degli oggetti generati non possono essere compilati nel database PostgreSQL senza modifiche manuali.

Per comprendere quali elementi necessitano di intervento manuale, compilare prima di tutto i file generati da Ora2Pg nel database PostgreSQL. Controllare il log e quindi apportare le modifiche necessarie fino a quando la struttura dello schema non è compatibile con la sintassi PostgreSQL.

Creare un modello di migrazione

È consigliabile usare il modello di migrazione fornito da Ora2Pg. Quando si usano le opzioni --project_base e --init_project, Ora2Pg crea un modello di progetto con un albero di lavoro, un file di configurazione e uno script per esportare tutti gli oggetti dal database Oracle. Per altre informazioni, vedere la documentazione di Ora2Pg.

Usare il comando seguente:

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

Ecco un output di esempio:

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.

La sources/ directory contiene il codice Oracle. La schema/ directory contiene il codice convertito in PostgreSQL. E la reports/ directory contiene i report HTML e la valutazione dei costi di migrazione.

Dopo aver creato la struttura del progetto, viene creato un file di configurazione generico. Definire la connessione al database Oracle e i parametri di configurazione pertinenti nel file di configurazione. Per altre informazioni sul file di configurazione, vedere la documentazione di Ora2Pg.

Esportare oggetti Oracle

Esportare quindi gli oggetti Oracle come oggetti PostgreSQL eseguendo il file export_schema.sh.

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

Eseguire manualmente il comando seguente.

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

Per estrarre i dati, usare il comando seguente.

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

Compilare file

Compilare infine tutti i file nel server Database di Azure per PostgreSQL. È possibile scegliere di caricare i file DDL generati manualmente o usare il secondo script import_all.sh per importare tali file in modo interattivo.

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

Ecco il comando di importazione dei dati:

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

Durante la compilazione dei file, controllare i log e correggere la sintassi che Ora2Pg non è riuscito a convertire autonomamente.

Per altre informazioni, vedere Oracle per Database di Azure per PostgreSQL soluzioni alternative per la migrazione.

Migrazione

Dopo aver ottenuto i prerequisiti necessari e aver completato i passaggi di premigration, è possibile avviare lo schema e la migrazione dei dati.

Eseguire la migrazione dello schema e dei dati

Dopo aver apportato le correzioni necessarie, una build stabile del database è pronta per la distribuzione. Eseguire i psql comandi di importazione, che puntano ai file che contengono il codice modificato. Questa attività compila gli oggetti di database nel database PostgreSQL e importa i dati.

In questo passaggio è possibile implementare un livello di parallelismo per l'importazione dei dati.

Sincronizzare i dati e tagliare

Nelle migrazioni online (tempo di inattività minimo), l'origine della migrazione continua a cambiare. Si allontana dalla destinazione in termini di dati e schema dopo la migrazione monouso.

Durante la fase di sincronizzazione dei dati, assicurarsi che tutte le modifiche nell'origine vengano acquisite e applicate alla destinazione quasi in tempo reale. Dopo aver verificato l'applicazione di tutte le modifiche, è possibile passare dall'origine all'ambiente di destinazione.

Per eseguire una migrazione online, contattare AskAzureDBforPostgreSQL@service.microsoft.com il supporto tecnico.

In una migrazione delta/incrementale che usa Ora2Pg, per ogni tabella, usare una query che filtra (taglia) per data, ora o un altro parametro. Completare quindi la migrazione usando una seconda query che esegue la migrazione dei dati rimanenti.

Nella tabella dei dati di origine eseguire prima di tutto la migrazione di tutti i dati cronologici. Ecco un esempio:

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

È possibile eseguire una query sulle modifiche dopo la migrazione iniziale eseguendo un comando simile al seguente:

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

In questo caso, è consigliabile migliorare la convalida controllando la parità dei dati su entrambi i lati, l'origine e la destinazione.

Post-migrazione

Dopo la fase di migrazione , completare le attività successive alla migrazione per assicurarsi che tutto funzioni nel modo più uniforme ed efficiente possibile.

Correggere le applicazioni

Dopo la migrazione dei dati nell'ambiente di destinazione, tutte le applicazioni che in precedenza usavano l'origine devono iniziare a usare la destinazione. L'installazione a volte richiede modifiche alle applicazioni.

Test

Dopo la migrazione dei dati alla destinazione, eseguire test sui database per verificare che le applicazioni funzionino correttamente con la destinazione. Assicurarsi che l'origine e la destinazione vengano migrate correttamente eseguendo gli script di convalida dei dati manuali nei database di origine Oracle e di destinazione PostgreSQL.

Idealmente, se i database di origine e di destinazione hanno un percorso di rete, Ora2Pg deve essere usato per la convalida dei dati. È possibile usare l'azione TEST per assicurarsi che tutti gli oggetti del database Oracle siano stati creati in PostgreSQL.

Eseguire questo comando:

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

Optimize (Ottimizza)

La fase post-migrazione è fondamentale per riconciliare eventuali problemi di accuratezza dei dati e verificare l'completezza. In questa fase vengono risolti anche i problemi di prestazioni con il carico di lavoro.

Risorse per la migrazione

Per altre informazioni su questo scenario di migrazione, vedere le risorse seguenti. Supportano il coinvolgimento del progetto di migrazione reale.

Risorsa Descrizione
Guida di riferimento per la migrazione da Oracle ad Azure PostgreSQL Questo documento consente a architetti, consulenti, amministratori di database e ruoli correlati di eseguire rapidamente la migrazione dei carichi di lavoro da Oracle a Database di Azure per PostgreSQL usando Ora2Pg.
Soluzioni alternative per la migrazione da Oracle ad Azure PostgreSQL Questo documento consente a architetti, consulenti, amministratori di database e ruoli correlati di risolvere rapidamente o risolvere i problemi durante la migrazione dei carichi di lavoro da Oracle a Database di Azure per PostgreSQL.
Procedura per installare Ora2Pg in Windows o Linux Questo documento fornisce una guida di installazione rapida per la migrazione di schemi e dati da Oracle a Database di Azure per PostgreSQL usando Ora2Pg in Windows o Linux. Per altre informazioni, vedere la documentazione di Ora2Pg.

Queste risorse sono state progettate dal team di progettazione dei dati di SQL. Questa carta principale del team consiste nello sbloccare e accelerare la modernizzazione complessa per i progetti di migrazione della piattaforma dati alla piattaforma dati di Microsoft Azure.

Altre informazioni di supporto

Per informazioni sulla migrazione oltre l'ambito degli strumenti Ora2Pg, contattare @Ask database di Azure per PostgreSQL.

Passaggi successivi

Per una matrice di servizi e strumenti per la migrazione di database e dati e per attività speciali, vedere Servizi e strumenti per la migrazione dei dati.

Documentazione: