Migre los paquetes Oracle SERIALLY _ REUSABLE pragma a Postgre SQL - 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.

Migre los paquetes Oracle SERIALLY _ REUSABLE pragma a Postgre SQL

Creado por Vinay Paladi () AWS

Entorno: PoC o piloto

Origen: base de datos de Oracle

Objetivo: Postgre SQL

Tipo R: renovar arquitectura

Carga de trabajo: Oracle; código abierto

Tecnologías: migración; bases de datos

AWSservicios: AWS SCT Amazon Aurora

Resumen

Este patrón proporciona un step-by-step enfoque para migrar paquetes de Oracle que se definen como SERIALLY _ REUSABLE pragma a Postgre en Amazon Web SQL Services (). AWS Este enfoque mantiene la funcionalidad del pragma _. SERIALLY REUSABLE

Postgre SQL no admite el concepto de paquetes ni el pragma _. SERIALLY REUSABLE Para obtener una funcionalidad similar en PostgreSQL, puede crear esquemas para paquetes e implementar todos los objetos relacionados (como funciones, procedimientos y tipos) dentro de los esquemas. Para lograr la funcionalidad del REUSABLE pragma SERIALLY _, el script de función contenedora de ejemplo que se proporciona en este patrón utiliza un paquete de extensiones AWS Schema Conversion Tool (AWSSCT).

Para obtener más información, consulte SERIALLY_ REUSABLE Pragma en la documentación de Oracle.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta activa AWS

  • La última versión AWS SCT y los controladores necesarios

  • Una base de datos Amazon Aurora de edición SQL compatible con Postgre o una base de datos Amazon Relational Database Service (AmazonRDS) para Postgre SQL

Versiones de producto

  • Oracle Database versión 10g y posteriores

Arquitectura

Pila de tecnología de origen

  • Oracle Database en las instalaciones

Pila de tecnología de destino

Arquitectura de migración

Datos de bases de datos Oracle locales que se van a AWS utilizar AWSSCT, archivos.sql, conversión manual, a Postgre. SQL

Herramientas

AWSservicios

Otras herramientas

  • pgAdmines una herramienta de administración de código abierto para Postgre. SQL Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos.

Epics

TareaDescripciónHabilidades requeridas

Configurar AWSSCT.

Configure AWS SCT la conectividad con la base de datos de origen. Para obtener más información, consulte Uso de Oracle Database como fuente de AWS SCT.

DBA, desarrollador

Convierta el script.

AWSSCTUtilícelo para convertir el paquete Oracle seleccionando la base de datos de destino como compatible con Aurora Postgre. SQL

DBA, Desarrollador

Guarde los archivos.sql.

Antes de guardar el archivo.sql, modifique la opción Configuración del proyecto AWS SCT para convertirla en Archivo único por etapa. AWSSCTseparará el archivo.sql en varios archivos.sql según el tipo de objeto.

DBA, Desarrollador

Cambie el código.

Abra la init función generada por y AWS SCT cámbiela como se muestra en el ejemplo de la sección Información adicional. Añadirá una variable para lograr la funcionalidad de pg_serialize = 0.

DBA, desarrollador

Pruebe la conversión.

Implemente la init función en la base de datos Aurora SQL compatible con Postgre y pruebe los resultados.

DBA, Desarrollador

Recursos relacionados

Información adicional

Source Oracle Code: CREATE OR REPLACE PACKAGE test_pkg_var IS PRAGMA SERIALLY_REUSABLE; PROCEDURE function_1 (test_id number); PROCEDURE function_2 (test_id number ); END; CREATE OR REPLACE PACKAGE BODY test_pkg_var IS PRAGMA SERIALLY_REUSABLE; v_char VARCHAR2(20) := 'shared.airline'; v_num number := 123; PROCEDURE function_1(test_id number) IS begin dbms_output.put_line( 'v_char-'|| v_char); dbms_output.put_line( 'v_num-'||v_num); v_char:='test1'; function_2(0); END; PROCEDURE function_2(test_id number) is begin dbms_output.put_line( 'v_char-'|| v_char); dbms_output.put_line( 'v_num-'||v_num); END; END test_pkg_var; Calling the above functions set serveroutput on EXEC test_pkg_var.function_1(1); EXEC test_pkg_var.function_2(1); Target Postgresql Code: CREATE SCHEMA test_pkg_var; CREATE OR REPLACE FUNCTION test_pkg_var.init(pg_serialize IN INTEGER DEFAULT 0) RETURNS void AS $BODY$ DECLARE BEGIN if aws_oracle_ext.is_package_initialized( 'test_pkg_var' ) AND pg_serialize = 0 then return; end if; PERFORM aws_oracle_ext.set_package_initialized( 'test_pkg_var' ); PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'shared.airline.basecurrency'::CHARACTER VARYING(100)); PERFORM aws_oracle_ext.set_package_variable('test_pkg_var', 'v_num', 123::integer); END; $BODY$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION test_pkg_var.function_1(pg_serialize int default 1) RETURNS void AS $BODY$ DECLARE BEGIN PERFORM test_pkg_var.init(pg_serialize); raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char'); raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num'); PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'test1'::varchar); PERFORM test_pkg_var.function_2(0); END; $BODY$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION test_pkg_var.function_2(IN pg_serialize integer default 1) RETURNS void AS $BODY$ DECLARE BEGIN PERFORM test_pkg_var.init(pg_serialize); raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char'); raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num'); END; $BODY$ LANGUAGE plpgsql; Calling the above functions select test_pkg_var.function_1() select test_pkg_var.function_2()