Migrer les packages Oracle SERIALLY _ REUSABLE pragma vers 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.

Migrer les packages Oracle SERIALLY _ REUSABLE pragma vers Postgre SQL

Créée par Vinay Paladi () AWS

Environnement : PoC ou pilote

Source : base de données Oracle

Cible : Poster SQL

Type R : Ré-architecte

Charge de travail : Oracle ; logiciel libre

Technologies : migration ; bases de données

AWSservices : AWS SCT ; Amazon Aurora

Récapitulatif

Ce modèle fournit une step-by-step approche pour la migration des packages Oracle définis comme SERIALLY _ REUSABLE pragma vers Postgre SQL sur Amazon Web Services (). AWS Cette approche préserve la fonctionnalité du SERIALLY _ REUSABLE pragma.

Postgre SQL ne supporte pas le concept de packages ni le REUSABLE pragma SERIALLY _. Pour obtenir des fonctionnalités similaires dans PostgreSQL, vous pouvez créer des schémas pour les packages et déployer tous les objets associés (tels que les fonctions, les procédures et les types) dans les schémas. Pour obtenir les fonctionnalités du SERIALLY _ REUSABLE pragma, l'exemple de script de fonction wrapper fourni dans ce modèle utilise un pack d'extension AWS Schema Conversion Tool (AWSSCT).

Pour plus d'informations, consultez SERIALLY_ REUSABLE Pragma dans la documentation Oracle.

Conditions préalables et limitations

Prérequis

  • Un AWS compte actif

  • La dernière version de AWS SCT et les pilotes requis

  • Une base de données Amazon Aurora Postgre SQL -Compatible Edition ou une base de données Amazon Relational Database Service (AmazonRDS) pour Postgre SQL

Versions du produit

  • Oracle Database version 10g et versions ultérieures

Architecture

Pile technologique source

  • Base de données Oracle sur site

Pile technologique cible

Architecture de migration

Données de base de données Oracle sur site destinées à AWS être utilisées AWSSCT, fichiers .sql, conversion manuelle, vers Postgre. SQL

Outils

AWSservices

Autres outils

  • pgAdminest un outil de gestion open source pour SQL Postgre. Il fournit une interface graphique qui vous permet de créer, de gérer et d'utiliser des objets de base de données.

Épopées

TâcheDescriptionCompétences requises

Configurez AWSSCT.

Configurez la AWS SCT connectivité à la base de données source. Pour plus d'informations, consultez la section Utilisation de la base de données Oracle comme source pour AWS SCT.

DBA, Développeur

Convertissez le script.

AWSSCTÀ utiliser pour convertir le package Oracle en sélectionnant la base de données cible comme étant compatible avec Aurora PostgreSQL.

DBA, Développeur

Enregistrez les fichiers .sql.

Avant d'enregistrer le fichier .sql, modifiez l'option Paramètres du projet AWS SCT sur Fichier unique par étape. AWSSCTséparera le fichier .sql en plusieurs fichiers .sql en fonction du type d'objet.

DBA, Développeur

Changez le code.

Ouvrez la init fonction générée par AWS SCT et modifiez-la comme indiqué dans l'exemple de la section Informations supplémentaires. Il ajoutera une variable pour obtenir la fonctionnalitépg_serialize = 0.

DBA, Développeur

Testez la conversion.

Déployez la init fonction sur la base de données SQL compatible Aurora Postgre et testez les résultats.

DBA, Développeur

Ressources connexes

Informations supplémentaires

Source Oracle Code: CREATE OR REPLACE PACKAGE test_pkg_var IS PRAGMA SERIALLY_REUSABLE; PROCEDURE function_1 (test_id number); PROCEDURE function_2 (test_id number ); END; CREATE OR REPLACE PACKAGE BODY test_pkg_var IS PRAGMA SERIALLY_REUSABLE; v_char VARCHAR2(20) := 'shared.airline'; v_num number := 123; PROCEDURE function_1(test_id number) IS begin dbms_output.put_line( 'v_char-'|| v_char); dbms_output.put_line( 'v_num-'||v_num); v_char:='test1'; function_2(0); END; PROCEDURE function_2(test_id number) is begin dbms_output.put_line( 'v_char-'|| v_char); dbms_output.put_line( 'v_num-'||v_num); END; END test_pkg_var; Calling the above functions set serveroutput on EXEC test_pkg_var.function_1(1); EXEC test_pkg_var.function_2(1); Target Postgresql Code: CREATE SCHEMA test_pkg_var; CREATE OR REPLACE FUNCTION test_pkg_var.init(pg_serialize IN INTEGER DEFAULT 0) RETURNS void AS $BODY$ DECLARE BEGIN if aws_oracle_ext.is_package_initialized( 'test_pkg_var' ) AND pg_serialize = 0 then return; end if; PERFORM aws_oracle_ext.set_package_initialized( 'test_pkg_var' ); PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'shared.airline.basecurrency'::CHARACTER VARYING(100)); PERFORM aws_oracle_ext.set_package_variable('test_pkg_var', 'v_num', 123::integer); END; $BODY$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION test_pkg_var.function_1(pg_serialize int default 1) RETURNS void AS $BODY$ DECLARE BEGIN PERFORM test_pkg_var.init(pg_serialize); raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char'); raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num'); PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'test1'::varchar); PERFORM test_pkg_var.function_2(0); END; $BODY$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION test_pkg_var.function_2(IN pg_serialize integer default 1) RETURNS void AS $BODY$ DECLARE BEGIN PERFORM test_pkg_var.init(pg_serialize); raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char'); raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num'); END; $BODY$ LANGUAGE plpgsql; Calling the above functions select test_pkg_var.function_1() select test_pkg_var.function_2()