쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

Oracle SERIALLY_REUSABLE 프라그마 패키지를 PostgreSQL로 마이그레이션 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Oracle SERIALLY_REUSABLE 프라그마 패키지를 PostgreSQL로 마이그레이션

작성자: Vinay Paladi(AWS)

요약

이 패턴은 SERIALLY_REUSABLE 프라그마로 정의된 Oracle 패키지를 Amazon Web Services(AWS) 의 PostgreSQL로 마이그레이션하기 위한 단계별 접근 방식을 제공합니다. 이 접근 방식은 SERIALLY_REUSABLE 프라그마의 기능을 유지합니다.

PostgreSQL은 패키지 개념과 SERIALLY_REUSABLE 프라그마를 지원하지 않습니다. PostgreSQL에서 유사한 기능을 사용하려면 패키지용 스키마를 만들고 스키마 내에 모든 관련 객체(예: 함수, 프로시저, 형식) 를 배포하면 됩니다. SERIALLY_REUSABLE 프라그마의 기능을 구현하기 위해 이 패턴에서 제공되는 예제 래퍼 함수 스크립트는 AWS Schema Conversion Tool(AWS SCT) 확장 팩을 사용합니다.

자세한 내용은 Oracle 설명서의 SERIALLY_REUSABLE 프라그마를 참조하십시오.

사전 조건 및 제한 사항

사전 조건 

  • 활성 상태의 AWS 계정

  • 최신 버전의 AWS SCT 및 필수 드라이버

  • Amazon Aurora PostgreSQL-Compatible Edition 데이터베이스 또는 Amazon Relational Database Service(Amazon RDS) for PostgreSQL 데이터베이스

제품 버전

  • Oracle Database 버전 10g 이상

아키텍처

소스 기술 스택

  • Oracle Database 온프레미스

대상 기술 스택

마이그레이션 아키텍처

AWS SCT, .sql 파일, 수동 변환을 사용하여 AWS로 전송되는 온프레미스 Oracle DB 데이터를 PostgreSQL로 변환합니다.

도구

서비스

기타 도구

  • pgAdmin은 PostgreSQL을 위한 오픈 소스 관리 도구입니다. 데이터베이스 객체를 생성, 유지 관리 및 사용하는 데 도움이 되는 그래픽 인터페이스를 제공합니다.

에픽

작업설명필요한 기술

AWS SCT를 설정합니다.

소스 데이터베이스에 대한 AWS SCT 연결을 구성합니다. 자세한 내용은 Oracle Database를 AWS SCT의 소스로 사용을 참조하십시오.

DBA, 개발자

스크립트 변환.

AWS SCT를 사용하면 대상 데이터베이스를 Aurora PostgreSQL-Compatible로 선택하여 Oracle 패키지를 변환할 수 있습니다.

DBA, 개발자

.sql 파일을 저장합니다.

.sql 파일을 저장하기 전에 AWS SCT의 프로젝트 설정 옵션을 스테이지별 단일 파일로 수정합니다. AWS SCT는 객체 유형에 따라 .sql 파일을 여러 .sql 파일로 분리합니다.

DBA, 개발자

코드를 변경합니다.

AWS SCT에서 생성한 init 함수를 열고 추가 정보 섹션의 예제에 표시된 대로 변경합니다. pg_serialize = 0 함수를 구현하기 위한 변수가 추가됩니다.

DBA, 개발자

변환을 테스트합니다.

Aurora PostgreSQL-Compatible 데이터베이스에 init 함수를 배포하고 결과를 테스트합니다.

DBA, 개발자

AWS SCT를 사용하여 Oracle 패키지 마이그레이션

작업설명필요한 기술

AWS SCT를 설정합니다.

소스 데이터베이스에 대한 AWS SCT 연결을 구성합니다. 자세한 내용은 Oracle Database를 AWS SCT의 소스로 사용을 참조하십시오.

DBA, 개발자

스크립트 변환.

AWS SCT를 사용하면 대상 데이터베이스를 Aurora PostgreSQL-Compatible로 선택하여 Oracle 패키지를 변환할 수 있습니다.

DBA, 개발자

.sql 파일을 저장합니다.

.sql 파일을 저장하기 전에 AWS SCT의 프로젝트 설정 옵션을 스테이지별 단일 파일로 수정합니다. AWS SCT는 객체 유형에 따라 .sql 파일을 여러 .sql 파일로 분리합니다.

DBA, 개발자

코드를 변경합니다.

AWS SCT에서 생성한 init 함수를 열고 추가 정보 섹션의 예제에 표시된 대로 변경합니다. pg_serialize = 0 함수를 구현하기 위한 변수가 추가됩니다.

DBA, 개발자

변환을 테스트합니다.

Aurora PostgreSQL-Compatible 데이터베이스에 init 함수를 배포하고 결과를 테스트합니다.

DBA, 개발자

관련 리소스

추가 정보

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()
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.