Migración de funciones y procedimientos de Oracle con más de 100 argumentos a PostgreSQL - Recomendaciones de AWS

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 funciones y procedimientos de Oracle con más de 100 argumentos a PostgreSQL

Creado por Srinivas Potlachervoo (AWS)

Entorno: PoC o piloto

Origen: Oracle

Destino: PostgreSQL

Tipo R: redefinir la plataforma

Carga de trabajo: código abierto; Oracle

Tecnologías: bases de datos; migración

Servicios de AWS: Amazon RDS; Amazon Aurora

Resumen

Este patrón muestra cómo migrar funciones y procedimientos de Oracle Database que tienen más de 100 argumentos a PostgreSQL. Por ejemplo, puede usar este patrón para migrar funciones y procedimientos de Oracle a uno de los siguientes servicios de bases de datos de AWS compatibles con PostgreSQL:

  • Amazon Relational Database Service (Amazon RDS) para PostgreSQL

  • Edición de Amazon Aurora compatible con PostgreSQL

PostgreSQL no admite funciones o procedimientos que tengan más de 100 argumentos. Como solución alternativa, puede definir un nuevo tipo de datos cuyos campos de tipo coincidan con los argumentos de la función de origen. A continuación, puede crear y ejecutar una función PL/pgSQL que use el tipo de datos personalizado como argumento.

Requisitos previos y limitaciones

Requisitos previos 

Versiones de producto

  • Instancia de base de datos de Oracle de Amazon RDS, versión 10.2 y posteriores

  • Instancia de base de datos Amazon RDS PostgreSQL, versión 9.4 y posteriores, o instancia de base de datos Aurora compatible con PostgreSQL, versión 9.4 y posteriores

  • Oracle SQL Developer versión 18 y posteriores

  • pgAdmin versión 4 y posteriores

Arquitectura

Pila de tecnología de origen

  • Instancia de base de datos de Oracle de Amazon RDS, versión 10.2 y posteriores

Pila de tecnología de destino

  • Instancia de base de datos Amazon RDS PostgreSQL, versión 9.4 y posteriores, o instancia de base de datos Aurora compatible con PostgreSQL, versión 9.4 y posteriores

Herramientas

Servicios de AWS

Otros servicios

  • Oracle SQL Developer es un entorno de desarrollo integrado que simplifica el desarrollo y la administración de bases de datos de Oracle, tanto en implementaciones tradicionales como en implementaciones basadas en la nube.

  • pgAdmin es una herramienta de gestión de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos.

Prácticas recomendadas

Asegúrese de que el tipo de datos creado coincida con los campos de tipos que se incluyen en la función o procedimiento de Oracle de origen.

Epics

TareaDescripciónHabilidades requeridas

Cree o identifique una función o procedimiento de Oracle/PLSQL existente que tenga más de 100 argumentos.

Crear una función o procedimiento de Oracle/PLSQL con más de 100 argumentos.

-o bien-

Identifique una función o procedimiento Oracle/PLSQL existente que tenga más de 100 argumentos.

Para obtener más información, consulte las secciones 14.7 Instrucción CREATE FUNCTION y 14.11 Instrucción CREATE PROCEDURE de la documentación de bases de datos de Oracle.

Conocimientos de Oracle/PL/SQL

Compilar la función o procedimiento de Oracle/PLSQL.

Compilar la función o procedimiento de Oracle/PLSQL.

Para más información, consulte Compilación de una función en la documentación de la base de datos de Oracle.

Conocimientos de Oracle/PL/SQL

Ejecute la función de Oracle/PLSQL.

Ejecutar la función o procedimiento de Oracle/PLSQL. A continuación, guarde el resultado.

Conocimientos de Oracle/PL/SQL
TareaDescripciónHabilidades requeridas

Defina un nuevo tipo de datos en PostgreSQL.

Defina un nuevo tipo de datos en PostgreSQL que incluya todos los campos que aparecen en los argumentos de la función o procedimiento de Oracle de origen.

Para obtener más información, consulte CREATE TYPE en la documentación de PostgreSQL.

Conocimientos de PostgreSQL PL/pgSQL
TareaDescripciónHabilidades requeridas

Cree una función de PostgreSQL que incluya el nuevo tipo de datos.

Crear una función de PostgreSQL que incluya el nuevo argumento TYPE.

Para ver un ejemplo de función, consulte la sección de Información adicional de este patrón.

Conocimientos de PostgreSQL PL/pgSQL

Compile la función PostgreSQL.

Compile la función en PostgreSQL. Si los campos del nuevo tipo de datos coinciden con los argumentos de la función o procedimiento de origen, la función se compilará correctamente.

Conocimientos de PostgreSQL PL/pgSQL

Ejecute la función de PostgreSQL.

Ejecute la función de PostgreSQL.

Conocimientos de PostgreSQL PL/pgSQL

Resolución de problemas

ProblemaSolución

La función devuelve el siguiente error:

ERROR: error de sintaxis junto a “<statement>”

Asegúrese de que todas las instrucciones de la función terminen con punto y coma (;).

La función devuelve el siguiente error:

ERROR: “<variable>” no es una variable conocida

Asegúrese de que la variable empleada en el cuerpo de la función aparezca en la sección DECLARE de la función.

Recursos relacionados

Información adicional

Ejemplo de función PostgreSQL que incluye un argumento TYPE

CREATE OR REPLACE FUNCTION test_proc_new ( IN p_rec type_test_proc_args ) RETURNS void AS $BODY$ BEGIN /* ************** The body would contain code to process the input values. For our testing, we will display couple of values. *************** */ RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_acct_id: ', p_rec.p_acct_id); RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_ord_id: ', p_rec.p_ord_id); RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_ord_date: ', p_rec.p_ord_date); END; $BODY$ LANGUAGE plpgsql COST 100;