Gestione bloques anónimos en SQL declaraciones dinámicas en Aurora 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.

Gestione bloques anónimos en SQL declaraciones dinámicas en Aurora Postgre SQL

Creado por anuradha chintha () AWS

Entorno: PoC o piloto

Origen: base de datos relacional

Objetivo: Postgre SQL

Tipo R: renovar arquitectura

Carga de trabajo: Oracle; código abierto

Tecnologías: bases de datos; migración

AWSservicios: Amazon Aurora; Amazon RDS

Resumen

Este patrón le muestra cómo evitar el error que se produce al gestionar bloques anónimos en SQL las sentencias dinámicas. Recibe un mensaje de error cuando utiliza la herramienta AWS Schema Conversion Tool para convertir una base de datos Oracle en una base de datos Aurora Postgre SQL -Compatible Edition. Para evitar el error, debe conocer el valor de una variable de OUT enlace, pero no podrá conocer el valor de una variable de OUT enlace hasta que ejecute la sentencia. SQL El error se debe a que la AWS Schema Conversion Tool (AWSSCT) no entiende la lógica de la SQL sentencia Dynamic. AWSSCTno puede convertir la SQL sentencia dinámica en SQL código PL/ (es decir, funciones, procedimientos y paquetes).

Requisitos previos y limitaciones

Requisitos previos 

Arquitectura

Pila de tecnología de origen

  • Oracle Database 10g en las instalaciones y versiones posteriores

Pila de tecnología de destino

  • Amazon Aurora Postgre SQL

  • Amazon RDS para Postgre SQL

  • AWSSchema Conversion Tool (AWSSCT)

Arquitectura de migración

El siguiente diagrama muestra cómo utilizar AWS SCT variables de enlace de Oracle OUT para escanear el código de la aplicación en busca de SQL sentencias incrustadas y convertir el código a un formato compatible que pueda utilizar una base de datos de Aurora.

Diagrama de arquitectura para usar variables AWS SCT de OUT enlace de Oracle

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. Genere un AWS SCT informe para la base de datos de origen utilizando Aurora Postgre SQL como base de datos de destino.

  2. Identifique el bloque anónimo en el bloque de SQL código dinámico (en el que se produjo AWS SCT el error).

  3. Convierta el bloque de código manualmente e impleméntelo en una base de datos de destino.

Herramientas

AWSservicios

  • Amazon Aurora Postgre SQL -Compatible Edition es un motor de base de datos relacional totalmente administrado y ACID compatible que le ayuda a configurar, operar y escalar las implementaciones de Postgre. SQL

  • Amazon Relational Database Service (RDSAmazon) para Oracle le ayuda a configurar, operar y escalar una base de datos relacional de Oracle en AWS la nube.

  • AWSSchema Conversion Tool (AWSSCT) le ayuda a hacer predecibles las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayoría de los objetos de código de la base de datos a un formato compatible con la base de datos de destino.

Otras herramientas

  • pgAdminle permite conectarse e interactuar con su servidor de base de datos.

  • Oracle SQL Developer es un entorno de desarrollo integrado que puede utilizar para desarrollar y gestionar bases de datos en Oracle Database. Puede utilizar SQL*Plus u Oracle SQL Developer para este patrón.

Epics

TareaDescripciónHabilidades requeridas

Cree una instancia de Oracle en Amazon RDS o AmazonEC2.

Para crear una instancia de base de datos de Oracle en AmazonRDS, consulte Creación de una instancia de base de datos de Oracle y conexión a una base de datos de una instancia de base de datos de Oracle en la RDS documentación de Amazon.

Para crear una instancia de base de datos de Oracle en Amazon Elastic Compute Cloud (AmazonEC2), consulte Amazon EC2 for Oracle en la documentación de orientación AWS prescriptiva.

DBA

Cree un esquema de base de datos y objetos para la migración.

Puede usar Amazon Cloud Directory para crear un esquema de base de datos. Para más información, consulte Crear un esquema en la documentación de Cloud Directory.

DBA

Configure grupos de seguridad entrantes y salientes.

Para crear y configurar grupos de seguridad, consulte Controlar el acceso con grupos de seguridad en la RDS documentación de Amazon.

DBA

Confirme que la base de datos se está ejecutando.

Para comprobar el estado de tu base de datos, consulta Visualización de RDS eventos de Amazon en la RDS documentación de Amazon.

DBA
TareaDescripciónHabilidades requeridas

Cree una SQL instancia de Aurora Postgre en Amazon. RDS

Para crear una SQL instancia de Aurora Postgre, consulte Crear un clúster de base de datos y conectarse a una base de datos en un clúster de base de datos Aurora Postgre en la SQL documentación de Amazon. RDS

DBA

Configure un grupo de seguridad entrante y saliente.

Para crear y configurar grupos de seguridad, consulte Proporcionar acceso al clúster de base de datos en el VPC mediante la creación de un grupo de seguridad en la documentación de Aurora.

DBA

Confirme que la SQL base de datos Aurora Postgre se esté ejecutando.

Para comprobar el estado de la base de datos, consulte Visualización de RDS eventos de Amazon en la documentación de Aurora.

DBA
TareaDescripciónHabilidades requeridas

Conéctese AWS SCT a la base de datos de origen.

Para conectarse AWS SCT a la base de datos de origen, consulte Conectarse a Postgre SQL como fuente en la AWS SCT documentación.

DBA

Conéctese AWS SCT a la base de datos de destino.

Para conectarse AWS SCT a la base de datos de destino, consulte la sección ¿Qué es la AWS Schema Conversion Tool? en la Guía del usuario de AWS Schema Conversion Tool.

DBA

Convierta el esquema de la base de datos AWS SCT y guarde el código convertido automáticamente como un SQL archivo.

Para guardar los archivos AWS SCT convertidos, consulte Guardar y aplicar el esquema convertido AWS SCT en la Guía del usuario de AWS Schema Conversion Tool.

DBA
TareaDescripciónHabilidades requeridas

Obtenga el SQL archivo para la conversión manual.

En el archivo AWS SCT convertido, extraiga el SQL archivo que requiere la conversión manual.

DBA

Actualice el script.

Actualice el SQL archivo manualmente.

DBA

Recursos relacionados

Información adicional

En el siguiente ejemplo de código se muestra cómo configurar la base de datos de origen de Oracle:

CREATE or replace PROCEDURE calc_stats_new1 ( a NUMBER, b NUMBER, result out NUMBER) IS BEGIN result:=a+b; END; /
set serveroutput on ; DECLARE a NUMBER := 4; b NUMBER := 7; plsql_block VARCHAR2(100); output number; BEGIN plsql_block := 'BEGIN calc_stats_new1(:a, :b,:output); END;'; EXECUTE IMMEDIATE plsql_block USING a, b,out output; DBMS_OUTPUT.PUT_LINE('output:'||output); END;

El siguiente código de ejemplo muestra cómo configurar la base de datos Aurora Postgre SQL de destino:

w integer, x integer) RETURNS integer AS $BODY$ DECLARE begin return w + x ; end; $BODY$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION test_pg.init() RETURNS void AS $BODY$ BEGIN if aws_oracle_ext.is_package_initialized ('test_pg' ) then return; end if; perform aws_oracle_ext.set_package_initialized ('test_pg' ); PERFORM aws_oracle_ext.set_package_variable('test_pg', 'v_output', NULL::INTEGER); PERFORM aws_oracle_ext.set_package_variable('test_pg', 'v_status', NULL::text); END; $BODY$ LANGUAGE plpgsql; DO $$ declare v_sql text; v_output_loc int; a integer :=1; b integer :=2; BEGIN perform test_pg.init(); --raise notice 'v_sql %',v_sql; execute 'do $a$ declare v_output_l int; begin select * from test_pg.calc_stats_new1('||a||','||b||') into v_output_l; PERFORM aws_oracle_ext.set_package_variable(''test_pg'', ''v_output'', v_output_l) ; end; $a$' ; v_output_loc := aws_oracle_ext.get_package_variable('test_pg', 'v_output'); raise notice 'v_output_loc %',v_output_loc; END ; $$