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
Cuenta activa AWS
Instancia de base de datos Amazon Relational Database Service (RDSAmazon) para Oracle
AWS_ORACLE_EXT
esquema (parte del paquete de AWS SCT extensión) en su base de datos de destinoVersión más reciente de AWSSchema Conversion Tool (AWSSCT)
y los controladores necesarios
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.
En el diagrama, se muestra el siguiente flujo de trabajo:
Genere un AWS SCT informe para la base de datos de origen utilizando Aurora Postgre SQL como base de datos de destino.
Identifique el bloque anónimo en el bloque de SQL código dinámico (en el que se produjo AWS SCT el error).
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
pgAdmin
le 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
Tarea | Descripción | Habilidades 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 |
Tarea | Descripción | Habilidades 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 | 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 | DBA |
Tarea | Descripción | Habilidades 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 |
Tarea | Descripción | Habilidades 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 ; $$