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.
Migre aplicaciones heredadas de Oracle Pro*C a ECPG
Creado por Sai Parthasaradhi () y Mahesh Balumuri () AWS AWS
Entorno: PoC o piloto | Origen: Oracle | Objetivo: Postgre SQL |
Tipo R: renovar arquitectura | Carga de trabajo: Oracle | Tecnologías: Migración; bases de datos |
Resumen
La mayoría de las aplicaciones antiguas que tienen SQL código incorporado 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 (RDSAmazon) for SQL Postgre o Amazon Aurora SQL Postgre -Compatible Edition, debe convertir el código de la aplicación a un formato que sea compatible con el precompilador de Postgre, que se denomina. SQL ECPG Este patrón describe cómo convertir el código Pro*C de Oracle a su equivalente en Postgre. SQL ECPG
Para obtener más información sobre Pro*C, consulte la documentación de Oracle
Requisitos previos y limitaciones
Requisitos previos
Una AWS cuenta activa
Una base de datos compatible con Amazon RDS for Postgre o SQL Aurora SQL Postgre
Una base de datos de Oracle que se ejecuta en las instalaciones
Herramientas
Los paquetes de Postgre SQL se enumeran en la siguiente sección.
AWSCLI— La interfaz de línea de AWS comandos (AWSCLI) es una herramienta de código abierto para interactuar con los AWS servicios mediante comandos en el shell de la línea de comandos. Con una configuración mínima, puede ejecutar AWS CLI comandos que implementen una funcionalidad equivalente a la proporcionada por la consola de AWS administración basada en un navegador desde una línea de comandos.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Instale los paquetes de PostgreSQL. | Instale los SQL paquetes de Postgre necesarios mediante los siguientes comandos.
| Desarrollador de aplicaciones, ingeniero DevOps |
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 SQL cliente de Postgre.
| Desarrollador de aplicaciones, ingeniero DevOps |
Instale software adicional según sea necesario. | Si es necesario, instálelo pgLoadercomo 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, ingeniero DevOps |
Instale el AWSCLI. | Instale los comandos AWS CLI to run para interactuar con AWS servicios 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 a las que quiere convertir de Pro*C. ECPG | Desarrollador de aplicaciones, propietario de la aplicación |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Elimine los encabezados no deseados. | Elimine | 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 Código Pro*C:
ECPGcódigo:
| 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 la función no se pueden usar como variables de host. Sobrescríbalos mediante una variable de alias. Código Pro*C:
ECPGcódigo:
| Desarrollador de aplicaciones, propietario de la aplicación |
Actualice los tipos de estructura. | Defina los tipos de Código Pro*C: Archivo de encabezado (
ECPGcódigo: Archivo de encabezado (
Archivo Pro*C (
ECPGarchivo (
| 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:
ECPGcódigo:
| 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:
ECPGcódigo:
| Desarrollador de aplicaciones, propietario de la aplicación |
Reescribe SQL _ CURSOR variables. | Reescriba la variable Código Pro*C:
ECPGcódigo:
| 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 ECPG programa 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 paraECPG. | Si tiene un archivo fuente en 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 ECPG programa, 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- Incrustado SQL en C
(documentación de PostgreSQL) Manejo de errores (documentación de
PostgreSQL) Por qué utilizar el precompilador Pro*C/C++ de Oracle
(documentación de Oracle)
Información adicional
Postgre SQL tiene un precompilador integrado, que es equivalente al SQL precompilador ECPG Pro*C de Oracle. ECPGconvierte los programas en C que tienen SQL sentencias incrustadas en código C estándar sustituyendo las llamadas por llamadas a funciones especiales. SQL Luego, los archivos de salida se pueden procesar con cualquier cadena de herramientas del compilador de C.
Archivos de entrada y salida
ECPGconvierte 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 -o
opción.
Archivos de encabezado
Cuando el SQL compilador de Postgre compila los archivos de código C preprocesados, busca los archivos de ECPG cabecera en el directorio de Postgre. SQL 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 código incrustado SQL tienen que estar enlazados a la biblioteca. libecpg
Por ejemplo, puede utilizar las opciones -L/usr/local/pgsql/lib -lecpg
del enlazador.
ECPGLas aplicaciones convertidas llaman a las funciones de la libpq
biblioteca a través de la SQL biblioteca integrada (ecpglib
) y se comunican con el SQL servidor Postgre mediante el protocolo estándar de frontend/backend.