pgrecon: herramienta de código abierto para evaluar migraciones de Oracle a PostgreSQL y convertir esquemas
pgrecon, ya está disponible públicamente. Se trata de una herramienta de código abierto, con licencia Apache-2.0, diseñada para evaluar migraciones de Oracle a PostgreSQL y facilitar la conversión de esquemas. Su versión más reciente es la 0.7.3.
pgrecon funciona totalmente sin conexión a las bases de datos. Mediante un script SQL*Plus de solo lectura, que puede revisarse antes de ejecutarlo, se genera un volcado que la herramienta utiliza para crear un inventario local. De esta manera, pgrecon no necesita conectarse directamente a ninguna de las dos bases de datos. La herramienta utiliza un motor determinista que aplica 80 reglas al inventario para analizar aspectos como los tipos de datos y la semántica de longitud, el almacenamiento, el particionamiento, las estructuras PL/SQL (analizadas mediante una gramática completa en lugar de buscar patrones), el uso de paquetes proporcionados por Oracle, los objetos de los esquemas y los aspectos relacionados con el rendimiento. Cada análisis proporciona evidencias específicas a nivel de registro y recomendaciones para resolver los problemas detectados. Además, incluye un estimador que calcula el esfuerzo necesario en rangos de días-persona, basándose en componentes definidos y supuestos claramente establecidos.
El convertidor genera sentencias DDL nativas de PostgreSQL para todos los elementos cuya conversión puede garantizar: tablas con particiones nativas, restricciones, índices, secuencias, vistas (transformando las jerarquías CONNECT BY en WITH RECURSIVE), vistas materializadas, comentarios, permisos, triggers DML sencillos y rutinas independientes. Ahora también admite la conversión de consultas top-N basadas en ROWNUM mediante LIMIT y de sentencias MERGE. Los elementos que no pueden convertirse fielmente se identifican individualmente en un informe de elementos pendientes, sin generar sentencias DDL para ellos.
Verificación: todo el proceso de extracción se valida cada noche mediante integración continua (CI) con Oracle XE 11g, XE 21c y Oracle Free 23ai. Además, con cada commit, el resultado de la conversión se aplica a PostgreSQL 16, 17 y 18. Cada noche, un fuzzer de esquemas genera entornos Oracle diseñados para poner a prueba el sistema y verifica que no se produzcan errores críticos, pérdidas silenciosas de datos y que las sentencias DDL puedan ejecutarse correctamente. Por su parte, los resultados del benchmark público se obtienen mediante un flujo de trabajo incluido en el repositorio. Este instala los esquemas de ejemplo HR, OE y CO de Oracle, junto con utPLSQL, PLJSON, Logger y Alexandria, en una instancia operativa de Oracle XE 21c. Posteriormente, extrae y convierte los objetos, y aplica el resultado a PostgreSQL 16. En la versión 0.7.3, se procesaron 423 sentencias sin ningún rechazo. Asimismo, ambos niveles de scripts de extracción tienen en cuenta la diferencia entre las longitudes expresadas en caracteres y en bytes, de modo que VARCHAR2(30 CHAR) se convierte correctamente en varchar(30).
La herramienta es compatible con las versiones de Oracle desde la 9.2 hasta la 23ai, gracias a dos categorías de scripts de extracción. Para realizar el análisis, se necesita Python 3.11 o una versión posterior.
Instalación: pip install pgrecon
- Sitio web del proyecto: muzzammil242.github.io/pgrecon
- Código fuente: github.com/Muzzammil242/pgrecon
- Notas de la versión: pgrecon 0.7.3

