Migración de bases de datos Oracle a PostgreSQL

/ / Arquitectura, Blog
Nuevo diseño responsive en la web del Boletín Oficial de Aragón
Firebase o cómo Google unifica todos los servicios móviles

Si te has encontrado con la necesidad de realizar una migración de una base de datos de Oracle a PostgreSQL es posible que este articulo te resulte de interés.

En keensoft nos hemos encontrado con esta tarea realizando migraciones de instalaciones de Alfresco basadas en Oracle y como resultado hemos construido una herramienta que nos permite ejecutar el proceso de transformación de la base de datos Oracle sin demasiados quebraderos de cabeza. Para ello nos hemos basado en Ora2pg y Docker

Ora2pg es una herramienta creada por Gilles Darold y reconocida por PostgreSQL como herramienta de conversión de esquemas de Oracle a PostgreSQL. Se distribuye como un módulo Perl.

Docker, tecnologia de “containerización” de aplicaciones, nos permite empaquetar la ejecución del proceso de transformación y así poder parametrizarlo y reutilizarlo en nuestros distintos proyectos. Además con la ayuda de Docker Compose podemos orquestar la ejecución de Oracle y PostgreSQL como parte del proceso completo y usarlo como origen y destino de los datos a transformar.

El funcionamiento es muy sencillo, partiendo de un backup de la base de datos Oracle origen de la transformación, se ejecuta el proceso que primero importa la copia en Oracle, después se ejecuta Ora2pg para exportar y tranformar los datos y en tercer lugar se importa el resultado en PostgreSQL. Finalmente se genera una copia de la base de datos PostgreSQL como destino de la base de datos transformada.

El resultado es fácilmente distribuible y ejecutable en cualquier sistema operativo y no requiere de ninguna instalación adicional.

Funcionamiento de la migración

  • El primer paso consiste en realizar un backup del repositorio origen de la migración
    • Backup de la base de datos Oracle origen utilizando las herramientas provistas por Oracle
    • Backup de los binarios (contentstore y contentstore.deleted)
    • Localizar una copia reciente de Solr
  • A continuación se parametriza la herramienta que necesita saber donde esta el backup que se va a utilizar y la versión de Alfresco concreta en la que nos encontramos
  • Una vez configurado el proceso, se inicializa el contenedor de Oracle y se importa el backup en un tablespace conocido
  • El siguiente paso consiste en inicializar la base de datos de PostgreSQL que será el destino de la transformación
  • A continuación, se ejecuta el proceso de exportación de Oracle y transformación a PostgreSQL con la ayuda Ora2pg
  • Una vez exportado los datos de Oracle, se genera en PostgreSQL el esquema de la versión especifica de Alfresco usando los dbscripts provistos por Alfresco
  • A continuación se ejecuta la importación de los datos transformados por Ora2pg
  • Como último paso de la migración del esquema se ejecutan unos scripts para la adecuación del esquema
  • Finalmente se ejecuta un pg_dump sobre la base de datos resultante en PostgreSQL

Para finalizar con la migración de Oracle a PostgreSQL, realizaremos una nueva instalación de la misma versión de Alfresco sobre PostgreSQL, una vez realizadas las comprobaciones básicas de funcionamiento, procederemos a parar la instancia y a restaurar el repositorio de la siguiente forma:

  • Restaurar la copia de los binarios de contentstore y contentstore.deleted realizada conjuntamente con la copia de la base de datos Oracle
  • Restaurar la base de datos resultante del proceso de transformación
  • Regenerar los índices de Solr

Esperamos tener pronto una versión publicada en nuestro Github

Unidad de negocio, keensoft