기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
100개 이상의 인수가 있는 Oracle 함수 및 프로시저를 PostgreSQL로 마이그레이션
작성자: Srinivas Potlachervoo(AWS)
요약
이 패턴은 100개 이상의 인수가 있는 Oracle Database 함수 및 프로시저를 PostgreSQL로 마이그레이션하는 방법을 보여줍니다. 예를 들어 이 패턴을 사용하여 Oracle 함수 및 프로시저를 다음 PostgreSQL 호환 AWS 데이터베이스 서비스 중 하나로 마이그레이션할 수 있습니다.
PostgreSQL용 Amazon Relational Database Service(Amazon RDS)
Amazon Aurora PostgreSQL 호환 에디션
PostgreSQL은 100개 이상의 인수가 있는 함수 또는 프로시저를 지원하지 않습니다. 해결 방법으로 소스 함수의 인수와 일치하는 형식 필드가 있는 새로운 데이터 유형을 정의할 수 있습니다. 그런 다음 사용자 지정 데이터 유형을 인수로 사용하는 PL/pgSQL 함수를 만들고 실행할 수 있습니다.
사전 조건 및 제한 사항
사전 조건
제품 버전
Amazon RDS Oracle DB 인스턴스 버전 10.2 이상
Amazon RDS PostgreSQL DB 인스턴스 버전 9.4 이상 또는 Aurora PostgreSQL-Compatible DB 인스턴스 버전 9.4 이상
Oracle SQL Developer 버전 18 이상
pgAdmin 버전 4 이상
아키텍처
소스 기술 스택
Amazon RDS Oracle DB 인스턴스 버전 10.2 이상
대상 기술 스택
Amazon RDS PostgreSQL DB 인스턴스 버전 9.4 이상 또는 Aurora PostgreSQL-Compatible DB 인스턴스 버전 9.4 이상
도구
서비스
PostgreSQL용 Amazon Relational Database Service (Amazon RDS)는 AWS Cloud에서 PostgreSQL 관계형 데이터베이스를 설정, 운영 및 조정하는 데 도움이 됩니다.
Amazon Aurora PostgreSQL-Compatible Edition은 PostgreSQL 배포를 설정, 운영 및 규모를 조정할 수 있는 완전관리형 ACID 준수 관계형 데이터베이스 엔진입니다.
기타 서비스
Oracle SQL Developer
는 기존 배포와 클라우드 기반 배포 모두에서 Oracle 데이터베이스의 개발 및 관리를 간소화하는 통합 개발 환경입니다. pgAdmin
은 PostgreSQL을 위한 오픈 소스 관리 도구입니다. 데이터베이스 객체를 생성, 유지 관리 및 사용하는 데 도움이 되는 그래픽 인터페이스를 제공합니다.
모범 사례
생성하는 데이터 유형이 소스 Oracle 함수 또는 프로시저에 포함된 유형 필드와 일치하는지 확인합니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
100개 이상의 인수가 있는 기존 Oracle/PLSQL 함수 또는 프로시저를 생성 또는 식별합니다. | 100개 이상의 인수가 있는 Oracle/PLSQL 함수 또는 프로시저를 생성합니다. -또는- 100개 이상의 인수가 있는 기존 Oracle/PLSQL 함수 또는 프로시저를 식별합니다. 자세한 내용은 Oracle Database 설명서의 섹션 14.7 CREATE FUNCTION Statement | Oracle/PLSQL 전문 지식 |
Oracle/PLSQL 함수 또는 프로시저를 컴파일합니다. | Oracle/PLSQL 함수 또는 프로시저를 컴파일합니다. 자세한 내용은 Oracle Database 설명서의 함수 컴파일 | Oracle/PLSQL 전문 지식 |
Oracle/PLSQL 함수를 실행합니다. | Oracle/PLSQL 함수 또는 프로시저를 실행합니다. 그런 다음 출력을 저장합니다. | Oracle/PLSQL 전문 지식 |
작업 | 설명 | 필요한 기술 |
---|---|---|
PostgreSQL에서 새로운 데이터 유형을 정의합니다. | PostgreSQL에서 소스 Oracle 함수 또는 프로시저의 인수에 나타나는 것과 동일한 필드를 모두 포함하는 새로운 데이터 유형을 정의합니다. 자세한 내용은 PostgreSQL 설명서의 CREATE USER | PostgreSQL PL/pgSQL 지식 |
작업 | 설명 | 필요한 기술 |
---|---|---|
새로운 데이터 유형을 포함하는 PostgreSQL 함수를 생성합니다. | 새로운 예제 함수를 검토하려면 이 패턴의 추가 정보 섹션을 참조하세요. | PostgreSQL PL/pgSQL 지식 |
PostgreSQL 함수를 컴파일합니다. | PostgreSQL에서 함수를 컴파일합니다. 새로운 데이터 유형 필드가 소스 함수나 프로시저의 인수와 일치하면 함수가 성공적으로 컴파일됩니다. | PostgreSQL PL/pgSQL 지식 |
PostgreSQL 함수를 실행합니다. | PostgreSQL 함수를 실행합니다. | PostgreSQL PL/pgSQL 지식 |
문제 해결
문제 | Solution |
---|---|
함수는 다음과 같은 오류를 반환합니다. ERROR: "<statement>" 근처의 구문 오류 | 함수의 명령문 모두가 세미콜론 ( |
함수는 다음과 같은 오류를 반환합니다. ERROR: "<variable>"은 알려진 변수가 아님 | 함수 본문에 사용된 변수가 함수 |
관련 리소스
Amazon Aurora PostgreSQL을 사용한 작업 (Aurora용 Amazon Aurora 사용 설명서)
CREATE TYPE
(PostgreSQL 설명서)
추가 정보
TYPE 인수를 포함하는 PostgreSQL 함수의 예
CREATE OR REPLACE FUNCTION test_proc_new
(
IN p_rec type_test_proc_args
)
RETURNS void
AS
$BODY$
BEGIN
/*
**************
The body would contain code to process the input values.
For our testing, we will display couple of values.
***************
*/
RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_acct_id: ', p_rec.p_acct_id);
RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_ord_id: ', p_rec.p_ord_id);
RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_ord_date: ', p_rec.p_ord_date);
END;
$BODY$
LANGUAGE plpgsql
COST 100;