Migrazione dei pacchetti Oracle SERIALLY _ REUSABLE pragma in Postgre SQL - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Migrazione dei pacchetti Oracle SERIALLY _ REUSABLE pragma in Postgre SQL

Creato da Vinay Paladi () AWS

Ambiente: PoC o pilota

Fonte: database Oracle

Destinazione: Postgre SQL

Tipo R: Re-architect

Carico di lavoro: Oracle; open source

Tecnologie: migrazione; database

AWSservizi: AWSSCT; Amazon Aurora

Riepilogo

Questo modello fornisce un step-by-step approccio per la migrazione dei pacchetti Oracle definiti come SERIALLY _ REUSABLE pragma verso Postgre su Amazon Web SQL Services (). AWS Questo approccio mantiene la funzionalità del pragma _. SERIALLY REUSABLE

Postgre SQL non supporta il concetto di pacchetti e il pragma _. SERIALLY REUSABLE Per ottenere funzionalità simili in PostgreSQL, puoi creare schemi per pacchetti e distribuire tutti gli oggetti correlati (come funzioni, procedure e tipi) all'interno degli schemi. Per ottenere la funzionalità del REUSABLE pragma SERIALLY _, lo script della funzione wrapper di esempio fornito in questo modello utilizza un pacchetto di estensione AWSSchema Conversion Tool () AWS SCT.

Per ulteriori informazioni, vedere SERIALLY_ REUSABLE Pragma nella documentazione di Oracle.

Prerequisiti e limitazioni

Prerequisiti

  • Un account attivo AWS

  • La versione più recente AWS SCT e i driver richiesti

  • Un database Amazon Aurora Postgre SQL -Compatible Edition o un database Amazon Relational Database Service (Amazon) per Postgre RDS SQL

Versioni del prodotto

  • Database Oracle versione 10g e successive

Architettura

Stack tecnologico di origine

  • Database Oracle locale

Stack tecnologico Target

Architettura di migrazione

Dati Oracle DB locali da AWS utilizzare AWSSCT, file.sql, conversione manuale, in Postgre. SQL

Strumenti

AWSservizi

Altri strumenti

  • pgAdminè uno strumento di gestione open source per SQL Postgre. Fornisce un'interfaccia grafica che consente di creare, gestire e utilizzare oggetti di database.

Epiche

AttivitàDescrizioneCompetenze richieste

Configurare AWSSCT.

Configura la AWS SCT connettività al database di origine. Per ulteriori informazioni, vedere Utilizzo del database Oracle come fonte per AWS SCT.

DBA, Sviluppatore

Convertire lo script.

Utilizzare AWS SCT per convertire il pacchetto Oracle selezionando il database di destinazione come Aurora SQL Postgre -Compatible.

DBA, Sviluppatore

Salva i file.sql.

Prima di salvare il file.sql, modificate l'opzione Impostazioni del progetto in File singolo AWS SCT per fase. AWSSCTseparerà il file.sql in più file.sql in base al tipo di oggetto.

DBA, Sviluppatore

Cambia il codice.

Apri la init funzione AWS SCT generata da e modificala come mostrato nell'esempio nella sezione Informazioni aggiuntive. Aggiungerà una variabile per ottenere la funzionalitàpg_serialize = 0.

DBA, Sviluppatore

Prova la conversione.

Distribuisci la init funzione nel database Aurora SQL Postgre -Compatible e verifica i risultati.

DBA, Sviluppatore

Risorse correlate

Informazioni aggiuntive

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()