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
AWSCompte actif
Amazon Relational Database Service (RDSAmazon) pour instance de base de données Oracle
AWS_ORACLE_EXT
schéma (inclus dans le pack d'AWSSCTextension) dans votre base de données cibleDernière version de AWSSchema Conversion Tool (AWSSCT)
et ses pilotes 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.
Le schéma suivant illustre le flux de travail suivant :
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.
Identifiez le bloc anonyme dans le bloc de SQL code dynamique (pour lequel l'erreur AWS SCT a été déclenchée).
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
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âche | Description | Compé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âche | Description | Compé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é | 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 | DBA |
Tâche | Description | Compé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âche | Description | Compé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 ; $$