Gérer les blocs anonymes dans les SQL instructions dynamiques dans Aurora Postgre SQL - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gérer les blocs anonymes dans les SQL instructions dynamiques dans Aurora Postgre SQL

Créée par anuradha chintha () AWS

Environnement : PoC ou pilote

Source : Base de données relationnelle

Cible : Poster SQL

Type R : Ré-architecte

Charge de travail : Oracle ; logiciel libre

Technologies : bases de données ; migration

AWSservices : Amazon Aurora ; Amazon RDS

Récapitulatif

Ce modèle vous montre comment éviter l'erreur que vous obtenez lorsque vous manipulez des blocs anonymes dans SQL des instructions dynamiques. Vous recevez un message d'erreur lorsque vous utilisez le AWS Schema Conversion Tool pour convertir une base de données Oracle en une base de données Aurora Postgre SQL -Compatible Edition. Pour éviter cette erreur, vous devez connaître la valeur d'une variable de OUT liaison, mais vous ne pouvez connaître la valeur d'une variable de OUT liaison qu'après avoir exécuté l'SQLinstruction. L'erreur est due au fait que le AWS Schema Conversion Tool (AWSSCT) ne comprend pas la logique contenue dans l'SQLinstruction Dynamic. AWSSCTImpossible de convertir l'SQLinstruction dynamique en SQL code PL/ (c'est-à-dire en fonctions, procédures et packages).

Conditions préalables et limitations

Prérequis

Architecture

Pile technologique source

  • Base de données Oracle 10g et version ultérieure sur site

Pile technologique cible

  • Pochette Amazon Aurora SQL

  • Amazon RDS pour Postgrer SQL

  • AWSSchema Conversion Tool (AWSSCT)

Architecture de migration

Le schéma suivant montre comment utiliser AWS SCT des variables de OUT liaison Oracle pour scanner le code de votre application à la recherche d'SQLinstructions intégrées et convertir le code dans un format compatible utilisable par une base de données Aurora.

Schéma d'architecture pour l'utilisation AWS SCT et les variables de OUT liaison Oracle

Le schéma suivant illustre le flux de travail suivant :

  1. Générez un AWS SCT rapport pour la base de données source en utilisant Aurora Postgre SQL comme base de données cible.

  2. Identifiez le bloc anonyme dans le bloc de SQL code dynamique (pour lequel l'erreur AWS SCT a été déclenchée).

  3. Convertissez le bloc de code manuellement et déployez le code sur une base de données cible.

Outils

AWSservices

  • Amazon Aurora Postgre SQL -Compatible Edition est un moteur de base de données relationnelle entièrement géré ACID et conforme qui vous aide à configurer, exploiter et dimensionner les déploiements Postgre. SQL

  • Amazon Relational Database Service (RDSAmazon) pour Oracle vous aide à configurer, exploiter et dimensionner une base de données relationnelle Oracle dans AWS le cloud.

  • AWSSchema Conversion Tool (AWSSCT) vous aide à rendre les migrations de bases de données hétérogènes prévisibles en convertissant automatiquement le schéma de base de données source et la majorité des objets du code de base de données dans un format compatible avec la base de données cible.

Autres outils

  • pgAdminvous permet de vous connecter à votre serveur de base de données et d'interagir avec celui-ci.

  • Oracle SQL Developer est un environnement de développement intégré que vous pouvez utiliser pour développer et gérer des bases de données dans Oracle Database. Vous pouvez utiliser SQL*Plus ou Oracle SQL Developer pour ce modèle.

Épopées

TâcheDescriptionCompétences requises

Créez une instance Oracle sur Amazon RDS ou AmazonEC2.

Pour créer une instance de base de données Oracle sur AmazonRDS, consultez la section Création d'une instance de base de données Oracle et connexion à une base de données sur une instance de base de données Oracle dans la RDS documentation Amazon.

Pour créer une instance de base de données Oracle sur Amazon Elastic Compute Cloud (AmazonEC2), consultez Amazon EC2 for Oracle dans la documentation AWS Prescriptive Guidance.

DBA

Créez un schéma de base de données et des objets pour la migration.

Vous pouvez utiliser Amazon Cloud Directory pour créer un schéma de base de données. Pour plus d'informations, consultez la section Créer un schéma dans la documentation Cloud Directory.

DBA

Configurez les groupes de sécurité entrants et sortants.

Pour créer et configurer des groupes de sécurité, consultez la section Contrôle de l'accès à l'aide de groupes de sécurité dans la RDS documentation Amazon.

DBA

Vérifiez que la base de données est active.

Pour vérifier l'état de votre base de données, consultez la section Affichage RDS des événements Amazon dans la RDS documentation Amazon.

DBA
TâcheDescriptionCompétences requises

Créez une SQL instance Aurora Postgre sur AmazonRDS.

Pour créer une SQL instance Aurora Postgre, consultez la section Création d'un cluster de base de données et connexion à une base de données sur un cluster de base de données Aurora Postgre SQL dans la documentation AmazonRDS.

DBA

Configurez un groupe de sécurité entrant et sortant.

Pour créer et configurer des groupes de sécurité, consultez la section Fournir un accès au cluster de base de données dans le en VPC créant un groupe de sécurité dans la documentation Aurora.

DBA

Vérifiez que la base de SQL données Aurora Postgre est en cours d'exécution.

Pour vérifier l'état de votre base de données, consultez la section Visualisation RDS des événements Amazon dans la documentation Aurora.

DBA
TâcheDescriptionCompétences requises

Connectez-vous AWS SCT à la base de données source.

Pour vous connecter AWS SCT à votre base de données source, consultez la section Connexion à Postgre en SQL tant que source dans la AWS SCT documentation.

DBA

Connectez-vous AWS SCT à la base de données cible.

Pour vous connecter AWS SCT à votre base de données cible, consultez le document What is the AWS Schema Conversion Tool ? dans le guide de l'utilisateur du AWS Schema Conversion Tool.

DBA

Convertissez le schéma de base de données AWS SCT et enregistrez le code converti automatiquement sous forme de SQL fichier.

Pour enregistrer les fichiers AWS SCT convertis, consultez la section Enregistrer et appliquer votre schéma converti AWS SCT dans le guide de l'utilisateur du AWS Schema Conversion Tool.

DBA
TâcheDescriptionCompétences requises

Obtenez le SQL fichier pour une conversion manuelle.

Dans le fichier AWS SCT converti, extrayez le SQL fichier qui nécessite une conversion manuelle.

DBA

Mettez à jour le script.

Mettez à jour le SQL fichier manuellement.

DBA

Ressources connexes

Informations supplémentaires

L'exemple de code suivant montre comment configurer la base de données source 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;

L'exemple de code suivant montre comment configurer la base de SQL données Aurora Postgre cible :

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 ; $$