Migre pacotes Oracle SERIALLY _ REUSABLE pragma para o Postgre SQL - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Migre pacotes Oracle SERIALLY _ REUSABLE pragma para o Postgre SQL

Criado por Vinay Paladi () AWS

Ambiente: PoC ou piloto

Origem: banco de dados Oracle

Alvo: Postgre SQL

Tipo R: redefinir arquitetura

Workload: Oracle; código aberto

Tecnologias: migração; bancos de dados

AWSserviços: AWSSCT; Amazon Aurora

Resumo

Esse padrão fornece uma step-by-step abordagem para migrar pacotes Oracle definidos como SERIALLY _ REUSABLE pragma para o Postgre SQL na Amazon Web Services (). AWS Essa abordagem mantém a funcionalidade do REUSABLE pragma SERIALLY _.

O Postgre SQL não suporta o conceito de pacotes e o REUSABLE pragma SERIALLY _. Para obter uma funcionalidade semelhante no PostgreSQL, você pode criar esquemas para pacotes e implantar todos os objetos relacionados (como funções, procedimentos e tipos) dentro dos esquemas. Para obter a funcionalidade do REUSABLE pragma SERIALLY _, o exemplo de script de função wrapper fornecido nesse padrão usa um pacote de extensão AWSSchema Conversion Tool () AWS SCT.

Para obter mais informações, consulte SERIALLY_ REUSABLE Pragma na documentação da Oracle.

Pré-requisitos e limitações

Pré-requisitos

  • Uma AWS conta ativa

  • A versão mais recente AWS SCT e os drivers necessários

  • Um banco de dados Amazon Aurora Postgre SQL -Compatible Edition ou um banco de dados Amazon Relational Database Service (RDSAmazon) para Postgre SQL

Versões do produto

  • Banco de dados Oracle versão 10g e posterior

Arquitetura

Pilha de tecnologia de origem

  • Banco de dados Oracle on-premises

Pilha de tecnologias de destino

Arquitetura de migração

Dados do banco de dados Oracle local que vão AWS usar arquivos.sql AWSSCT, conversão manual, para Postgre. SQL

Ferramentas

AWSserviços

Outras ferramentas

  • pgAdminé uma ferramenta de gerenciamento de código aberto para o Postgre. SQL Ele fornece uma interface gráfica que ajuda você a criar, manter e usar objetos de banco de dados.

Épicos

TarefaDescriçãoHabilidades necessárias

Configurar AWSSCT.

Configure a AWS SCT conectividade com o banco de dados de origem. Para obter mais informações, consulte Usando o Oracle Database como fonte para AWS SCT.

DBA, Desenvolvedor

Converter o script.

Use AWS SCT para converter o pacote Oracle selecionando o banco de dados de destino como compatível com Aurora SQL Postgre.

DBA, Desenvolvedor

Salve os arquivos .sql.

Antes de salvar o arquivo.sql, modifique a opção Configurações do projeto em AWS SCT Arquivo único por estágio. AWSSCTseparará o arquivo.sql em vários arquivos.sql com base no tipo de objeto.

DBA, Desenvolvedor

Alterar o código.

Abra a init função AWS SCT gerada por e altere-a conforme mostrado no exemplo na seção Informações adicionais. Ele adicionará uma variável para obter a funcionalidade pg_serialize = 0.

DBA, Desenvolvedor

Teste a conversão.

Implante a init função no banco de dados SQL compatível com o Aurora Postgre e teste os resultados.

DBA, Desenvolvedor

Recursos relacionados

Mais informações

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