Publicado 26. marzo 2026
Introducción
En este artículo continuamos nuestra serie de talleres sobre la migración de Oracle a PostgreSQL.
En la Parte 1, cubrimos las funciones de migración introducidas con KeepTool 16, entre ellas:
- crear estructuras de tablas en PostgreSQL
- crear estructuras para varias tablas
- migrar la lógica de los triggers
- crear vistas en PostgreSQL
- copiar datos de Oracle a PostgreSQL
- reescribir consultas SQL para PostgreSQL
En la Parte 2, nos centramos en las nuevas funciones de KeepTool 17 para migrar bases de datos Oracle a PostgreSQL. En particular, analizamos:
- la migración de procedimientos, funciones y package bodies de PL/SQL a PostgreSQL
- la migración de secuencias a PostgreSQL
- la migración de políticas a PostgreSQL
- la migración de privilegios a PostgreSQL
- la creación de comentarios en restricciones en PostgreSQL
- la combinación de herramientas de migración deterministas con el AI Assistant
Si está planificando una migración de una base de datos Oracle a PostgreSQL, estas nuevas funciones le ayudarán a automatizar aún más el proceso de conversión sin perder el control sobre el resultado final.
Migración de procedimientos, funciones y package bodies de PL/SQL a PostgreSQL
Uno de los pasos más importantes en una migración de Oracle a PostgreSQL es convertir la lógica PL/SQL de Oracle al lenguaje PL/pgSQL de PostgreSQL.
Para facilitar este proceso, KeepTool ayuda a migrar procedimientos, funciones y package bodies de Oracle a definiciones compatibles con PostgreSQL. Como resultado, Hora reescribe el código para que pueda ejecutarse con mayor facilidad en una base de datos PostgreSQL.
División de package bodies
La PostgreSQL Community Edition no admite packages. Por lo tanto, KeepTool divide cada package de Oracle en procedimientos y funciones separados.
El nombre original del procedimiento o de la función recibe como prefijo el nombre del package, separado por dos guiones bajos:
packagename__procedurename
packagename__functionname
Este enfoque funciona bien porque PostgreSQL no tiene el límite de 30 caracteres para identificadores que existe en Oracle. Además, mantiene agrupados de forma lógica todos los procedimientos y funciones del mismo package.
KeepTool también crea un procedimiento llamado:
packagename__initialization
Este procedimiento contiene la lógica del bloque de inicialización del package original. En otras palabras, cualquier código que se encuentre entre BEGIN ... END al final del package body se mueve a este procedimiento de inicialización generado.
Antes de llamar a cualquier otro procedimiento o función del package, asegúrese de ejecutar primero este procedimiento de inicialización.
Variables globales de package
Las variables globales de package se sustituyen por parámetros de configuración de PostgreSQL.
Estos valores siempre se almacenan como varchar. Al mismo tiempo, no se requiere una declaración previa y los nombres distinguen entre mayúsculas y minúsculas.
Ejemplo para la variable current_id en el package my_package:
Lectura:
nullif(current_setting('my_package.current_id', true), '')::int8
Cómo migrar la lógica PL/SQL a PostgreSQL
Para iniciar la migración, utilice la opción del menú contextual “DDL for PostgreSQL DB” en la cuadrícula PL/SQL Overview.

Este comando ahora admite selección múltiple, por lo que puede migrar varios procedimientos, funciones o package bodies en una sola operación. Dependiendo del tamaño del código, el proceso puede tardar unos segundos. Después, Hora muestra el código migrado.
La herramienta de migración convierte automáticamente aproximadamente el 95 % de las sentencias SQL de Oracle a ANSI SQL. Sin embargo, las sentencias muy complejas todavía pueden requerir ajustes manuales.
Entre otras cosas, la herramienta:
- declara variables de tipo record para los bucles cursor
FOR
- convierte las palabras clave de Oracle a minúsculas
- sustituye determinados tipos de datos específicos de Oracle cuando corresponde, por ejemplo, convirtiendo
DATE en TIMESTAMP(0)
- reescribe funciones no compatibles de Oracle a sintaxis compatible con PostgreSQL
- inserta la palabra clave
CALL para las llamadas a procedimientos
- adapta la sintaxis de declaración de variables
- convierte la sintaxis del manejo de excepciones
- reescribe la sintaxis de acceso a secuencias
- y mucho más
Después de la migración, siempre debe ejecutar el código generado en su base de datos PostgreSQL y comprobar si hay errores.

En algunos casos, seguirán siendo necesarios cambios manuales. En particular, preste atención a las conversiones implícitas de tipos de datos. PostgreSQL suele ser más estricto que Oracle, por lo que pueden ser necesarias conversiones explícitas.
Migración de secuencias a PostgreSQL
Para migrar secuencias, utilice la opción del menú contextual “DDL for PostgreSQL DB” en la cuadrícula Sequences Overview.
Aquí también se admite la selección múltiple, lo que significa que puede migrar varias secuencias en una sola operación. Una vez finalizado el proceso, Hora muestra el código PostgreSQL generado.
Para los equipos que realizan una migración de Oracle a PostgreSQL de mayor envergadura, esto hace que la conversión de secuencias sea más rápida y coherente.
Migración de políticas a PostgreSQL
Para migrar políticas, utilice la opción del menú contextual “DDL for PostgreSQL DB” en la cuadrícula Schema | Policies.
En esta área también está disponible la selección múltiple, de modo que se pueden migrar varias políticas a la vez. Cuando termina la conversión, Hora muestra el código resultante.
Como resultado, la migración de políticas se vuelve más sencilla dentro de un proyecto más amplio de modernización hacia PostgreSQL
Migración de privilegios de objetos a PostgreSQL
Los privilegios de objetos se migran automáticamente junto con los objetos de base de datos que convierta a PostgreSQL. Además, las correspondientes sentencias GRANT se añaden al DDL generado.
Esto es especialmente importante para la lógica procedimental, porque la sintaxis de privilegios de PostgreSQL difiere considerablemente de la de Oracle. Por ejemplo, en PostgreSQL, los permisos para procedimientos y funciones deben incluir la lista completa de tipos de parámetros formales.
KeepTool genera automáticamente esta sintaxis, reduciendo así el tiempo necesario y disminuyendo los errores durante la migración.
Creación de comentarios en restricciones en PostgreSQL
Hora genera automáticamente comentarios para las restricciones. Se trata de una función útil de PostgreSQL que no está disponible en Oracle de la misma manera.
Estos comentarios pueden utilizarse en las aplicaciones para mostrar mensajes de error más comprensibles cuando se producen violaciones de restricciones. Por ejemplo, un enfoque habitual es:
- leer el nombre de la restricción a partir del mensaje de error original de PostgreSQL
- buscar el comentario de esa restricción
- mostrar después ese comentario como un mensaje significativo en la aplicación
También puede ajustar manualmente los comentarios generados para que resulten aún más útiles para los usuarios finales.
Herramientas de migración deterministas frente al AI Assistant
Al planificar una migración de Oracle a PostgreSQL, puede preguntarse si es mejor confiar en las herramientas de migración integradas de KeepTool o en la lógica basada en IA.
La IA está mejorando rápidamente y también está disponible directamente en nuestras herramientas. Sin embargo, la IA todavía tiene una limitación importante: se basa en probabilidades y no en reglas deterministas. Como resultado, el mismo prompt puede producir resultados ligeramente diferentes con el tiempo.
Aquí es donde las herramientas de migración deterministas tienen una ventaja clara. Cada vez que las ejecuta, producen el mismo resultado y, por lo tanto, ofrecen una gran consistencia. Esa consistencia es extremadamente valiosa en proyectos de migración de gran tamaño.
Aunque todavía pueda ser necesario realizar cierto posprocesamiento manual, las herramientas deterministas proporcionan un punto de partida estable y repetible. Después, puede utilizar el AI Assistant integrado para cualquier refinamiento adicional, como pulir casos especiales o mejorar la legibilidad.

En la práctica, a menudo el mejor enfoque es combinar ambos:
- utilice la lógica de migración determinista de KeepTool para la conversión principal
- después, utilice el AI Assistant para el posprocesamiento y los ajustes finales
Resumen
Con KeepTool 17, la migración de Oracle a PostgreSQL se vuelve todavía más completa.
Ahora puede migrar no solo tablas, vistas, triggers y sentencias SQL, sino también lógica PL/SQL, secuencias, políticas, privilegios e incluso comentarios de restricciones.
En conjunto, el resultado es un flujo de migración más completo y coherente que combina la fiabilidad de la conversión determinista con la flexibilidad del refinamiento asistido por IA.
Si está planificando una migración de una base de datos Oracle a PostgreSQL, KeepTool 17 le ofrece una forma práctica y eficiente de acelerar el proceso sin perder el control sobre el resultado final.
➡️ Pruebe KeepTool gratis
Las herramientas Oracle de KeepTool están diseñadas específicamente para desarrolladores, administradores de bases de datos (DBA) y equipos de soporte. Con más de 25 años de experiencia, optimizamos continuamente nuestro software para que el análisis y la documentación de sus bases de datos sean más rápidos, eficientes y claros.