Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Migración de aplicaciones heredadas de Oracle Pro*C a ECPG
Creado por Sai Parthasaradhi (AWS) y Mahesh Balumuri (AWS)
Resumen
La mayoría de las aplicaciones antiguas que tienen código SQL integrado utilizan el precompilador Pro*C de Oracle para acceder a la base de datos. Al migrar estas bases de datos de Oracle a Amazon Relational Database Service (Amazon RDS) para PostgreSQL o a una edición compatible con Amazon Aurora PostgreSQL, debe convertir el código de la aplicación a un formato que sea compatible con el precompilador de PostgreSQL, que se denomina ECPG. Este patrón describe cómo convertir el código de Oracle Pro*C a su equivalente en PostgreSQL ECPG.
Para obtener más información sobre Pro*C, consulte la documentación de Oracle
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa
Una base de datos compatible con Amazon RDS para PostgreSQL o Aurora PostgreSQL
Una base de datos de Oracle que se ejecuta en las instalaciones
Herramientas
Los paquetes de PostgreSQL que se enumeran en la siguiente sección.
AWS CLI: la interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto para interactuar con los servicios de AWS mediante comandos en el intérprete de comandos de línea de comandos. Con una configuración mínima, puede ejecutar comandos de la CLI de AWS que implementan una funcionalidad equivalente a la proporcionada por la consola de administración de AWS basada en navegador desde un símbolo del sistema.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Instale los paquetes de PostgreSQL. | Instale los paquetes PostgreSQL necesarios utilizando los siguientes comandos.
| Desarrollador de aplicaciones, DevOps ingeniero |
Instale los archivos de encabezado y las bibliotecas. | Instale el paquete
Solo para el entorno de desarrollo, ejecute también los siguientes comandos.
| Desarrollador de aplicaciones, DevOps ingeniero |
Configure la variable de ruta del entorno. | Establezca la ruta del entorno para las bibliotecas cliente de PostgreSQL.
| Desarrollador de aplicaciones, DevOps ingeniero |
Instale software adicional según sea necesario. | Si es necesario, instale PGLoader como reemplazo de SQL*Loader en Oracle.
Si llama a alguna aplicación Java desde un módulo Pro*C, instale Java.
Instale ant para compilar el código Java.
| Desarrollador de aplicaciones, DevOps ingeniero |
Instale la AWS CLI. | Instale la CLI de AWS para ejecutar comandos que interactúen con servicios de AWS de como AWS Secrets Manager y Amazon Simple Storage Service (Amazon S3) desde sus aplicaciones.
| Desarrollador de aplicaciones, DevOps ingeniero |
Identifique los programas que se convertirán. | Identifique las aplicaciones que desea convertir de Pro*C a ECPG. | Desarrollador de aplicaciones, propietario de la aplicación |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Elimine los encabezados no deseados. | Elimine los encabezados | Propietario de la aplicación, desarrollador de la aplicación |
Actualice las declaraciones de variables. | Agregue instrucciones Elimine de la aplicación las declaraciones
| Desarrollador de aplicaciones, propietario de la aplicación |
Actualice la funcionalidad ROWNUM. | La función Código Pro*C:
Código ECPG:
| Desarrollador de aplicaciones, propietario de la aplicación |
Actualice los parámetros de la función para usar variables de alias. | En PostgreSQL, los parámetros de las funciones no se pueden usar como variables de host. Sobrescríbalos mediante una variable de alias. Código Pro*C:
Código ECPG:
| Desarrollador de aplicaciones, propietario de la aplicación |
Actualice los tipos de estructura. | Defina los tipos de Código Pro*C: Archivo de encabezado (
Código ECPG: Archivo de encabezado (
Archivo Pro*C (
Archivo ECPG (
| Desarrollador de aplicaciones, propietario de la aplicación |
Modifique la lógica para extraerla de los cursores. | Para obtener varias filas de los cursores mediante variables de matriz, cambie el código que se va a utilizar Código Pro*C:
Código ECPG:
| Desarrollador de aplicaciones, propietario de la aplicación |
Modifique las llamadas a paquetes que no tienen valores de retorno. | Las funciones de los paquetes de Oracle que no tienen valores de retorno se deben llamar con una variable indicadora. Si la aplicación incluye varias funciones que tienen el mismo nombre o si las funciones de tipo desconocido generan errores de tiempo de ejecución, clasifique los valores en los tipos de datos. Código Pro*C:
Código ECPG:
| Desarrollador de aplicaciones, propietario de la aplicación |
Reescriba las variables SQL_CURSOR. | Reescriba la variable Código Pro*C:
Código ECPG:
| Desarrollador de aplicaciones, propietario de la aplicación |
Aplique patrones de migración comunes. |
| Desarrollador de aplicaciones, propietario de la aplicación |
Habilite la depuración, si fuera necesario. | Para ejecutar el programa ECPG en modo de depuración, añada el siguiente comando dentro del bloque de funciones principal.
| Desarrollador de aplicaciones, propietario de la aplicación |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un archivo ejecutable para ECPG. | Si tiene un archivo fuente de SQL C incrustado denominado
| Desarrollador de aplicaciones, propietario de la aplicación |
Cree un archivo de creación para su compilación. | Cree un archivo make para compilar el programa ECPG, tal como se muestra en el siguiente archivo de ejemplo.
| Desarrollador de aplicaciones, propietario de la aplicación |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Pruebe el código. | Pruebe el código de la aplicación que se convertirá para asegurarse de que funciona correctamente. | Desarrollador de aplicaciones, propietario de la aplicación, ingeniero de pruebas |
Recursos relacionados
ECPG: SQL integrado en C
(documentación de PostgreSQL) Gestión de errores
(documentación de PostgreSQL) Por qué utilizar el precompilador Pro*C/C++ de Oracle
(documentación de Oracle)
Información adicional
PostgreSQL tiene un precompilador SQL integrado, ECPG, que es equivalente al precompilador Pro*C de Oracle. El ECPG convierte los programas en C que tienen instrucciones SQL incorporadas en código C estándar sustituyendo las llamadas SQL por llamadas a funciones especiales. Luego, los archivos de salida se pueden procesar con cualquier cadena de herramientas del compilador de C.
Archivos de entrada y salida
ECPG convierte cada archivo de entrada que especifique en la línea de comandos en el archivo de salida C correspondiente. Si el nombre de un archivo de entrada no tiene una extensión de archivo, se asume la extensión .pgc. La extensión del archivo se sustituye por .c
para construir el nombre del archivo de salida. Sin embargo, puede anular el nombre del archivo de salida predeterminado utilizando la opción -o
.
Si utiliza un guión (-
) como nombre del archivo de entrada, ECPG lee el programa desde la entrada estándar y escribe en la salida estándar, a menos que lo anule mediante la opción -o
.
Archivos de encabezado
Cuando el compilador de PostgreSQL compila los archivos de código C preprocesados, busca los archivos de cabecera ECPG en el directorio de PostgreSQL include
. Por lo tanto, puede que tenga que usar la opción -I
para dirigir el compilador al directorio correcto (por ejemplo, -I/usr/local/pgsql/include
).
Bibliotecas
Los programas que utilizan código C con SQL incorporado tienen que estar enlazados a la biblioteca libecpg
. Por ejemplo, puede utilizar las opciones -L/usr/local/pgsql/lib -lecpg
del enlazador.
Las aplicaciones ECPG convertidas llaman a las funciones de la biblioteca libpq
a través de la biblioteca SQL integrada (ecpglib
) y se comunican con el servidor PostgreSQL mediante el protocolo frontend/backend estándar.