Migración de Oracle a Azure Database for PostgreSQL mediante Ora2Pg
SE APLICA A: Azure Database for PostgreSQL con servidor flexible
Esta guía sirve de ayuda para migrar el esquema de Oracle a Azure Database for PostgreSQL.
Para obtener instrucciones detalladas y completas sobre la migración de Ora2Pg, consulte los Recursos de la guía de migración.
Requisitos previos
Para migrar el esquema de Oracle a Azure Database for PostgreSQL necesitará hacer lo siguiente:
- Comprobar que el entorno de origen es compatible.
- Descargue la versión más reciente de Ora2Pg.
- Tener la versión más reciente del módulo DBD.
Información general
PostgreSQL es una de las bases de datos de código abierto más avanzadas del mundo. En este artículo se describe cómo usar la herramienta Ora2Pg gratuita para migrar una base de datos de Oracle a PostgreSQL. Puede usar Ora2Pg para migrar una base de datos Oracle o una base de datos MySQL a un esquema compatible con PostgreSQL.
La herramienta Ora2Pg conecta la base de datos de Oracle, la examina automáticamente y extrae su estructura o datos. A continuación, Ora2Pg genera scripts SQL que puede cargar en la base de datos PostgreSQL. Puede usar Ora2Pg para tareas como la ingeniería inversa de una base de datos de Oracle, migrar una gran base de datos empresarial o simplemente replicar algunos datos de Oracle en una base de datos PostgreSQL. La herramienta es fácil de usar y no requiere conocimientos sobre bases de datos de Oracle que vayan más allá de la capacidad de proporcionar los parámetros necesarios para conectarse a la base de datos de Oracle.
Nota
Para obtener más información acerca del uso de la última versión de Ora2pg, consulte la Documentación de Ora2pg.
Arquitectura de migración típica de Ora2pg
Después de aprovisionar la máquina virtual y Azure Database for PostgreSQL, necesita dos configuraciones para habilitar la conectividad entre ellos: Permitir el acceso a servicios de Azure y Aplicar conexión SSL:
Hoja Seguridad de conexión>Permitir el acceso a servicios de Azure>ACTIVADO
Hoja Seguridad de conexión>Configuración de SSL>Aplicar conexión SSL>DESHABILITADO
Recomendaciones
Para mejorar el rendimiento de las operaciones de evaluación o exportación en el servidor de Oracle, recopile estadísticas:
BEGIN DBMS_STATS.GATHER_SCHEMA_STATS DBMS_STATS.GATHER_DATABASE_STATS DBMS_STATS.GATHER_DICTIONARY_STATS END;
Exporte datos mediante el comando
COPY
en lugar deINSERT
.Evite exportar tablas con sus claves externas (FK), restricciones e índices. Estos elementos ralentizan el proceso de importación de datos en PostgreSQL.
Cree vistas materializadas mediante la cláusula no data. Después, actualice las vistas.
Si es posible, use índices únicos en las vistas materializadas. Estos índices pueden acelerar la actualización cuando se usa la sintaxis
REFRESH MATERIALIZED VIEW CONCURRENTLY
.
Antes de la migración
Después de comprobar que el entorno de origen es compatible y que se cumplen los requisitos previos, está listo para iniciar la fase de premigración. Para empezar:
- Descubrir: realice el inventario de las bases de datos que necesita migrar.
- Evaluar: evalúe esas bases de datos para detectar posibles problemas u obstáculos de migración.
- Convertir: resuelva los problemas que haya detectado.
En el caso de las migraciones heterogéneas, como Oracle a Azure Database for PostgreSQL, esta fase también implica hacer que los esquemas de las bases de datos de origen sean compatibles con el entorno de destino.
Descubra
El objetivo de la fase de detección es identificar orígenes de datos existentes y detalles sobre las características que se están usando. Esta fase ayuda a entender mejor y a planear la migración. Este proceso conlleva examinar la red para identificar todas las instancias de Oracle de la organización junto con la versión y las características en uso.
Los scripts anteriores a la evaluación de Microsoft para Oracle se ejecutan en la base de datos de Oracle. Estos scripts consultan los metadatos de Oracle. Los scripts proporcionan:
- Un inventario de bases de datos, incluidos los recuentos de objetos por esquema, tipo y estado.
- Una estimación aproximada de los datos sin procesar de cada esquema basada en estadísticas.
- El tamaño de las tablas de cada esquema.
- El número de líneas de código por paquete, función, procedimiento, etc.
Descargue los scripts relacionados de GitHub.
Evaluar
Después de hacer el inventario de las bases de datos de Oracle, va a tener una idea del tamaño de las bases de datos y de los posibles desafíos. El siguiente paso es ejecutar la evaluación.
No es fácil estimar el costo de una migración de Oracle a PostgreSQL. Para evaluar el costo de migración, Ora2Pg comprueba todos los objetos de base de datos, funciones y procedimientos almacenados para objetos y código PL/SQL que no se puede convertir automáticamente.
La herramienta Ora2Pg tiene un modo de análisis de contenido que inspecciona la base de datos de Oracle para generar un informe de texto. El informe describe lo que contiene la base de datos de Oracle y lo que no se puede exportar.
Para activar el modo de análisis e informe, use el tipo exportado SHOW_REPORT
como se muestra en el siguiente comando:
ora2pg -t SHOW_REPORT
La herramienta Ora2Pg puede convertir código SQL y PL/SQL de sintaxis de Oracle a PostgreSQL. Por lo tanto, después de analizar la base de datos, Ora2Pg puede calcular las dificultades del código y el tiempo necesario para migrar una base de datos completa.
Para calcular el costo de migración en días humanos, Ora2Pg permite usar una directiva de configuración denominada ESTIMATE_COST
. También se puede habilitar esta directiva en un símbolo del sistema:
ora2pg -t SHOW_REPORT --estimate_cost
La unidad de migración predeterminada representa aproximadamente cinco minutos para un experto en PostgreSQL. Si esta migración es la primera, puede aumentar la unidad de migración predeterminada mediante la directiva de configuración COST_UNIT_VALUE
o la opción de línea de comandos --cost_unit_value
.
En la última línea del informe se muestra el código de migración total estimado en días por persona. La estimación sigue el número de unidades de migración estimadas para cada objeto.
En el ejemplo de código siguiente se ven algunas variaciones de evaluación:
- Evaluación de tablas
- Evaluación de columnas
- Evaluación de esquemas que usa una unidad de costo predeterminada de 5 minutos
- Evaluación de esquemas que usa una unidad de costo de 10 minutos
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
Esta es la salida del nivel de migración de evaluación de esquemas B-5:
Niveles de migración:
A: Migración que se puede ejecutar automáticamente
B: Migración con reescritura de código y un costo de hasta 5 días-persona.
C: Migración con reescritura de código y un costo de más de 5 días por persona
Niveles técnicos:
1 = Trivial: sin funciones almacenadas ni desencadenadores
2 = Fácil: sin funciones almacenadas, pero con desencadenadores; sin reescritura manual
3 = Simple: funciones almacenadas o desencadenadores; sin reescritura manual
4 = Manual: sin funciones almacenadas, pero con desencadenadores o vistas con reescritura de código
5 = Difícil: funciones almacenadas o desencadenadores con reescritura de código
La evaluación consta de:
Una letra (A o B) para especificar si la migración necesita reescritura manual.
Un número de 1 a 5 para indicar la dificultad técnica.
Otra opción, -human_days_limit
, especifica el límite de días por persona. En este caso, establezca el nivel de migración en C para indicar que esta necesita una gran cantidad de trabajo, la administración completa del proyecto y soporte de migración. El valor predeterminado es 10 días por persona. Puede usar la directiva de configuración HUMAN_DAYS_LIMIT
para cambiar este valor predeterminado de manera permanente.
Esta evaluación de esquemas se desarrolló para ayudar a los usuarios a decidir qué base de datos migrar primero y qué equipos movilizar.
Convert
En migraciones con un tiempo de inactividad mínimo, el origen de la migración cambia. Se aparta del destino en términos de datos y esquema después de la migración única. Durante la fase de sincronización de datos, asegúrese de que todos los cambios en el origen se capturen y se apliquen al destino prácticamente en tiempo real. Después de comprobar que todos los cambios se hayan aplicado al destino, puede realizar una migración total del origen al entorno de destino.
En este paso de la migración, el código de Oracle y los scripts DDL se convierten o se traducen a PostgreSQL. La herramienta Ora2Pg exporta los objetos Oracle en un formato PostgreSQL automáticamente. Algunos de los objetos generados no se pueden compilar en la base de datos de PostgreSQL sin cambios manuales.
Para comprender qué elementos necesitan intervención manual, compile primero los archivos generados por Ora2Pg en la base de datos PostgreSQL. Compruebe el registro y realice los cambios necesarios hasta que la estructura del esquema sea compatible con la sintaxis de PostgreSQL.
Creación de una plantilla de migración
Se recomienda usar la plantilla de migración que proporciona Ora2Pg. Cuando se usan las opciones --project_base
y --init_project
, Ora2Pg crea una plantilla de proyecto con un árbol de trabajo, un archivo de configuración y un script para exportar todos los objetos de la base de datos de Oracle. Para obtener más información, consulte la Documentación de Ora2Pg.
Use el comando siguiente:
ora2pg --project_base /app/migration/ --init_project test_project
Esta es la salida del ejemplo:
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.
El directorio sources/
contiene el código de Oracle. El directorio schema/
contiene el código trasladado a PostgreSQL. El directorio reports/
contiene los informes HTML y la evaluación del costo de la migración.
Una vez creada la estructura del proyecto, se crea un archivo de configuración genérico. Defina la conexión de base de datos de Oracle y los parámetros de configuración relevantes en el archivo de configuración. Para obtener más información sobre el archivo de configuración, consulte laDocumentación de Ora2Pg.
Exportación de objetos de Oracle
A continuación, exporte los objetos de Oracle como objetos de PostgreSQL. Para ello, ejecute el archivo export_schema.sh.
cd /app/migration/mig_project
./export_schema.sh
Ejecute el siguiente comando de forma manual.
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
Use el siguiente comando para extraer los datos.
ora2pg -t COPY -o data.sql -b %namespace%/data -c %namespace/config/ora2pg.conf
Compilación de archivos
Por último, compile todos los archivos en el servidor de Azure Database for PostgreSQL. Puede optar por cargar los archivos DDL generados de forma manual o por usar el segundo script import_all.sh para importar esos archivos de manera interactiva.
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
Este es el comando de importación de datos:
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
Mientras se compilan los archivos, compruebe los registros y corrija cualquier sintaxis que Ora2Pg no pudo convertir por sí mismo.
Para obtener más información, vea Soluciones alternativas de migración de Oracle a Azure Database for PostgreSQL.
Migrar
Una vez que tenga los requisitos previos necesarios y haya completado los pasos de premigración, puede iniciar la migración del esquema y los datos.
Migración de esquemas y datos
Una vez realizadas las correcciones necesarias, hay una compilación estable de la base de datos lista para implementar. Ejecute los comandos de importación psql
y apunte a los archivos que contienen el código modificado. Esta tarea compila los objetos de base de datos en la base de datos de PostgreSQL e importa los datos.
En este paso se puede implementar un nivel de paralelismo al importar los datos.
Sincronización de datos y migración total
En las migraciones en línea (tiempo de inactividad mínimo), el origen de migración sigue cambiando. Se aparta del destino en términos de datos y esquema después de la migración única.
Durante la fase de sincronización de datos, asegúrese de que todos los cambios en el origen se capturen y se apliquen al destino prácticamente en tiempo real. Después de comprobar que todos los cambios se hayan aplicado, puede realizar una migración total del origen al entorno de destino.
Para realizar una migración en línea, póngase en contacto con AskAzureDBforPostgreSQL@service.microsoft.com para obtener soporte técnico.
En una migración dedelta/incremental que usa Ora2Pg, para cada tabla, use una consulta que filtre (corta) por fecha, hora u otro parámetro. Luego finalice la migración mediante una segunda consulta que migre los datos restantes.
En la tabla de datos de origen, migre primero todos los datos históricos. Este es un ejemplo:
select * from table1 where filter_data < 01/01/2019
Puede consultar los cambios desde la migración inicial si ejecuta un comando como este:
select * from table1 where filter_data >= 01/01/2019
En este caso se recomienda mejorar la validación mediante la comprobación de la paridad de datos en ambos lados, el origen y el destino.
Etapa posterior a la migración
Cuando haya completado correctamente la fase de migración, realice las tareas posteriores a la migración para asegurarse de que todo funciona de la forma más fluida y eficaz posible.
Corrección de las aplicaciones
Cuando se hayan migrado los datos al entorno de destino, todas las aplicaciones que antes utilizaban el origen deben empezar a utilizar el destino. A veces la configuración requiere cambios en las aplicaciones.
Prueba
Después de migrar los datos al destino, ejecute pruebas en las bases de datos para comprobar que las aplicaciones funcionan bien con el destino. Para asegurarse de que el origen y el destino se hayan migrado correctamente, ejecute los scripts de validación de datos manuales en las bases de datos de origen de Oracle y de destino de PostgreSQL.
Idealmente, si las bases de datos de origen y destino tienen una ruta de acceso de red, Ora2Pg debe usarse para la validación de datos. Puede utilizar la acción TEST
para asegurarse de que todos los objetos de la base de datos de Oracle se han creado en PostgreSQL.
Ejecute este comando:
ora2pg -t TEST -c config/ora2pg.conf > migration_diff.txt
Optimización
La fase posterior a la migración es vital para resolver problemas de precisión de los datos y para comprobar su integridad. En esta fase también se abordan los problemas de rendimiento de la carga de trabajo.
Recursos de migración
Para obtener más información sobre este escenario de migración, vea los siguientes recursos. Ayudan con la integración del proyecto de migración real.
Recurso | Descripción |
---|---|
Libro de cocina de la migración de Oracle a Azure PostgreSQL | Este documento ayuda a los arquitectos, consultores, administradores de bases de datos y roles relacionados a migrar rápidamente cargas de trabajo de Oracle a Azure Database for PostgreSQL mediante Ora2Pg. |
Soluciones alternativas de migración de Oracle a Azure PostgreSQL | Este documento ayuda a los arquitectos, consultores, administradores de bases de datos y roles relacionados a solucionar rápidamente los problemas al migrar cargas de trabajo de Oracle a Azure Database for PostgreSQL. |
Pasos para instalar Ora2Pg en Windows o Linux | En este documento se proporciona una guía de instalación rápida para migrar el esquema y los datos de Oracle a Azure Database for PostgreSQL mediante Ora2Pg en Windows o Linux. Para obtener más información, consulte la Documentación de Ora2Pg. |
El equipo de ingeniería de datos SQL ha desarrollado estos recursos. El objetivo principal de este equipo es desbloquear y acelerar la modernización compleja de proyectos de migración de una plataforma de datos a la plataforma de datos de Microsoft Azure.
Más soporte técnico
Para obtener ayuda de migración más allá del ámbito de las herramientas Ora2Pg, póngase en contacto con @Ask Azure DB for PostgreSQL.
Pasos siguientes
Para obtener una matriz de servicios y herramientas para la migración de datos y bases de datos y para las tareas especializadas, vea Servicios y herramientas para la migración de datos.
Documentación: