Gérer les blocs anonymes dans les instructions Dynamic SQL dans Aurora PostgreSQL - 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 instructions Dynamic SQL dans Aurora PostgreSQL

Créée par anuradha chintha (AWS)

Récapitulatif

Ce modèle vous montre comment éviter l'erreur que vous obtenez lors de la gestion de blocs anonymes dans des instructions Dynamic SQL. Vous recevez un message d'erreur lorsque vous utilisez l'outil AWS Schema Conversion Tool pour convertir une base de données Oracle en une base de données Aurora PostgreSQL Edition compatible. 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'instruction SQL. L'erreur est due au fait que l'AWS Schema Conversion Tool (AWS SCT) ne comprend pas la logique contenue dans l'instruction Dynamic SQL. AWS SCT ne peut pas convertir l'instruction SQL dynamique en code PL/SQL (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

  • Amazon Aurora PostgreSQL

  • Amazon RDS for PostgreSQL

  • Outil de conversion de schéma AWS (AWS SCT)

Architecture de migration

Le schéma suivant montre comment utiliser les variables de OUT liaison AWS SCT et Oracle pour scanner le code de votre application à la recherche d'instructions SQL 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 des variables de liaison AWS SCT et Oracle OUT

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

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

  2. Identifiez le bloc anonyme dans le bloc de code SQL dynamique (pour lequel AWS SCT a généré l'erreur).

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

Outils

Services AWS

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

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

  • AWS Schema Conversion Tool (AWS SCT) 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

  • pgAdmin vous 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 Amazon EC2.

Pour créer une instance de base de données Oracle sur Amazon RDS, 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 documentation Amazon RDS.

Pour créer une instance de base de données Oracle sur Amazon Elastic Compute Cloud (Amazon EC2), 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 Create a Schema 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 documentation Amazon RDS.

DBA

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

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

DBA
TâcheDescriptionCompétences requises

Créez une instance Aurora PostgreSQL dans Amazon RDS.

Pour créer une instance Aurora PostgreSQL, 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 PostgreSQL dans la documentation Amazon RDS.

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 VPC en créant un groupe de sécurité dans la documentation Aurora.

DBA

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

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

DBA
TâcheDescriptionCompétences requises

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

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

DBA

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

Pour 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 d'AWS Schema Conversion Tool.

DBA

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

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

DBA
TâcheDescriptionCompétences requises

Obtenez le fichier SQL pour une conversion manuelle.

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

DBA

Mettez à jour le script.

Mettez à jour manuellement le fichier SQL.

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 données Aurora PostgreSQL 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 ; $$