

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

# Aurora PostgreSQL로 온프레미스 Oracle 데이터베이스의 데이터를 마이그레이션하기
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql"></a>

*Michelle Deng, Shunan Xiang, Amazon Web Services*

## 요약
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-summary"></a>

이 패턴은 온프레미스 Oracle 데이터베이스에서 Amazon Aurora PostgreSQL-Compatible Edition으로 데이터를 마이그레이션하기 위한 지침을 제공합니다. 이는 DML(데이터 조작 언어) 활동이 많은 대형 테이블을 포함하는 수 테라바이트 규모의 Oracle 데이터베이스를 대상으로 가동 중지 시간을 최소화하는 온라인 데이터 마이그레이션 전략을 목표로 합니다. Oracle Active Data Guard 스탠바이 데이터베이스는 기본 데이터베이스에서 데이터 마이그레이션을 오프로드하기 위한 소스로 사용됩니다. ORA-01555 오류를 방지하기 위해 전체 로드 중에 Oracle 기본 데이터베이스에서 대기 데이터베이스로의 복제를 일시 중단할 수 있습니다. 

데이터 유형이 NUMBER인 기본 키(PK) 또는 외래 키(FK)의 테이블 열은 일반적으로 Oracle에 정수를 저장하는 데 사용됩니다. 더 나은 성능을 위해 PostgreSQL에서 이를 INT 또는 BIGINT로 변환하는 것을 권장합니다. AWS Schema Conversion Tool(AWS SCT)을 사용하여 PK 및 FK 열의 기본 데이터 유형 매핑을 변경할 수 있습니다. (자세한 내용은 AWS 블로그 게시물[Oracle에서 PostgreSQL로 NUMBER 데이터 유형 변환](https://aws.amazon.com/blogs/database/convert-the-number-data-type-from-oracle-to-postgresql-part-2/)을 참조하세요.) 이 패턴의 데이터 마이그레이션에서는 전체 로드와 변경 데이터 캡처(CDC) 모두에 AWS Database Migration Service(AWS DMS)를 사용합니다.

또한, 이 패턴을 사용하여 PostgreSQL용 Amazon Relational Database Service(Amazon RDS)로 온프레미스 Oracle 데이터베이스를 마이그레이션하거나, Amazon Elastic Compute Cloud(Amazon EC2)에서 호스팅되는 Oracle 데이터베이스를 Amazon RDS for PostgreSQL 또는 Aurora PostgreSQL-Compatible로 마이그레이션할 수 있습니다.

## 사전 조건 및 제한 사항
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-prereqs"></a>

**사전 조건 **
+ 활성 상태의 AWS 계정
+ Active Data Guard 예비 데이터베이스가 구성된 온프레미스 데이터 센터의 Oracle 원본 데이터베이스 
+ 온프레미스 데이터 센터와 AWS 클라우드 간에 구성된 AWS Direct Connect
+ [Oracle 데이터베이스를 AWS DMS의 원본으로 사용](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)하는 방법 숙지
+ [PostgreSQL 데이터베이스를 AWS DMS의 대상으로 사용](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)하는 방법 숙지

**제한 사항 **
+ Amazon Aurora 데이터베이스 클러스터는 최대 128TiB의 스토리지로 생성할 수 있습니다. Amazon RDS for PostgreSQL 데이터베이스 인스턴스는 최대 64TiB의 스토리지로 생성할 수 있습니다. 최신 스토리지 정보는 AWS 설명서의 [Amazon Aurora 스토리지 및 신뢰성](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html) 및 [Amazon RDS DB 인스턴스 스토리지](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)를 참고하십시오.

**제품 버전**
+ AWS DMS는 버전 10.2 이상(버전 10.x의 경우), 11g 및 최대 12.2, 18c 및 19c까지의 모든 Oracle 데이터베이스 에디션을 지원합니다. 지원되는 버전의 최신 목록은 AWS 설명서에서 [Oracle 데이터베이스를 AWS DMS용 원본으로 사용하기](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) 섹션을 참조하세요.

## 아키텍처
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-architecture"></a>

**소스 기술 스택**
+ Oracle Active Data Guard 예비 데이터베이스가 구성된 온프레미스 Oracle 데이터베이스 

**대상 기술 스택**
+ Aurora PostgreSQL-Compatible 

**데이터 마이그레이션 아키텍처**

![\[Oracle 데이터베이스를 Aurora PostgreSQL-Compatible로 마이그레이션하기\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/49f9b03e-6d33-4ac0-94ad-d3e6d02e6d63/images/0038a36b-fb7d-4f2d-8376-8d38290b0736.png)


## 도구
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-tools"></a>
+ **AWS DMS** - [AWS Database Migration Service](https://docs.aws.amazon.com/dms/index.html)(AWS DMS)는 여러 원본 및 대상 데이터베이스를 지원합니다. 지원되는 Oracle 원본 및 대상 데이터베이스 버전과 에디션의 목록은 AWS DMS 설명서에서 [Oracle 데이터베이스를 AWS DMS의 원본으로 사용하기](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) 섹션을 참조하세요. 소스 데이터베이스가 AWS DMS에서 지원되지 않는 경우, 6단계(*에픽* 섹션에 있음)에서 데이터를 마이그레이션할 다른 방법을 선택해야 합니다. **중요 참고 사항:** 이 마이그레이션은 이기종 마이그레이션이므로 먼저 데이터베이스가 상용(COTS) 애플리케이션을 지원하는지 확인해야 합니다. 애플리케이션이 COTS인 경우 진행하기 전에 공급업체에 문의하여 Aurora PostgreSQL-Compatible이 지원되는지 확인하십시오. 자세한 내용은 AWS 설명서의 [AWS DMS 단계별 마이그레이션 안내](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)를 참고하십시오.
+ **AWS SCT** – [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.htm)(AWS SCT)은 원본 데이터베이스 스키마와 대부분의 사용자 지정 코드를 대상 데이터베이스와 호환되는 형식으로 자동 변환하여 유형이 다른 데이터베이스 마이그레이션을 촉진합니다. 도구가 변환하는 사용자 지정 코드에는 보기, 저장된 절차 및 함수가 포함됩니다. 도구가 자동으로 변환할 수 없는 코드는 명확하게 표시되므로 직접 변환할 수 있습니다. 

## 에픽
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-epics"></a>

### 마이그레이션 계획
<a name="plan-the-migration"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 소스 및 대상 데이터베이스 버전을 확인합니다. |  | DBA | 
| AWS SCT 및 드라이버를 설치합니다. |  | DBA | 
| 원본 데이터베이스에 AWS SCT 필수 사용자 및 권한을 추가하고 검증합니다. |  | DBA | 
| 워크로드용 AWS SCT 프로젝트를 생성하고 소스 데이터베이스에 연결합니다. |  | DBA | 
| 평가 보고서를 작성하고 타당성을 평가하세요. |  | DBA, 앱 소유자 | 

### 대상 데이터베이스를 준비합니다.
<a name="prepare-the-target-database"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Aurora PostgreSQL-Compatible 대상 데이터베이스를 생성합니다. |  | DBA | 
| 원본 데이터베이스에서 사용자, 역할 및 권한 목록을 추출합니다. |  | DBA | 
| 기존 데이터베이스 사용자를 새 데이터베이스 사용자에 매핑합니다. |  | 앱 소유자 | 
| 대상 데이터베이스에서 사용자를 생성합니다. |  | DBA | 
| 대상 Aurora PostgreSQL-Compatible 데이터베이스에 이전 단계의 역할을 적용합니다. |  | DBA | 
| 원본 데이터베이스의 데이터베이스 옵션, 파라미터, 네트워크 파일 및 데이터베이스 링크를 검토하고 대상 데이터베이스에 적용할 수 있는지 평가하세요. |  | DBA, 앱 소유자 | 
| 대상 데이터베이스에 관련 설정을 적용합니다. |  | DBA | 

### 데이터베이스 객체 코드 변환 준비
<a name="prepare-for-database-object-code-conversion"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 대상 데이터베이스에 대한 AWS SCT 연결을 구성합니다. |  | DBA | 
| AWS SCT에서 스키마를 변환하고 변환된 코드를 .sql 파일로 저장합니다. |  | DBA, 앱 소유자 | 
| 자동 변환에 실패한 모든 데이터베이스 객체를 수동으로 변환합니다. |  | DBA, 앱 소유자 | 
| 데이터베이스 코드 변환을 최적화합니다. |  | DBA, 앱 소유자 | 
| 객체 유형에 따라 .sql 파일을 여러 .sql 파일로 분리합니다. |  | DBA, 앱 소유자 | 
| 대상 데이터베이스에서 SQL 스크립트를 확인합니다. |  | DBA, 앱 소유자 | 

### 데이터 마이그레이션 준비
<a name="prepare-for-data-migration"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| AWS DMS 복제 인스턴스를 생성합니다. |  | DBA | 
| 원본 및 대상 DB 엔드포인트를 생성합니다. | PK 및 FK의 데이터 유형이 Oracle의 NUMBER에서 PostgreSQL의 BIGINT로 변환되는 경우 소스 엔드포인트를 생성할 때 연결 속성 `numberDataTypeScale=-2`를 지정하는 것이 좋습니다. | DBA | 

### 데이터 마이그레이션 — 전체 로드
<a name="migrate-data-ndash-full-load"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 대상 데이터베이스에 스키마와 테이블을 생성합니다. |  | DBA | 
|  테이블을 그룹화하거나 테이블 크기에 따라 큰 테이블을 분할하여 AWS DMS 전체 로드 작업을 생성합니다. |  | DBA | 
| 소스 Oracle 데이터베이스에서 애플리케이션을 잠시 중지합니다. |  | 앱 소유자 | 
| Oracle 스탠바이 데이터베이스가 기본 데이터베이스와 동기화되는지 확인하고 기본 데이터베이스에서 스탠바이 데이터베이스로의 복제를 중지합니다. |  | DBA, 앱 소유자 | 
| 소스 Oracle 데이터베이스에서 애플리케이션을 시작합니다. |  | 앱 소유자 | 
| Oracle 스탠바이 데이터베이스에서 Aurora PostgreSQL-Compatible 데이터베이스까지 AWS DMS 전체 로드 작업을 병렬로 시작합니다. |  | DBA | 
| 전체 로드가 완료된 후 PK 및 보조 인덱스를 생성합니다. |  | DBA | 
| 데이터를 검증합니다. |  | DBA | 

### 데이터 마이그레이션 — CDC
<a name="migrate-data-ndash-cdc"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Oracle 스탠바이가 기본 데이터베이스와 동기화된 시점과 이전 작업에서 애플리케이션이 다시 시작되기 전에, 사용자 지정 CDC 시작 시간 또는 시스템 변경 번호(SCN)를 지정하여 AWS DMS 지속 복제 작업을 생성합니다. |  | DBA | 
| AWS DMS 작업을 병렬로 시작하여 Oracle 예비 데이터베이스에서 Aurora PostgreSQL-Compatible 데이터베이스까지 지속적으로 변경되는 사항을 복제합니다. |  | DBA | 
| Oracle 기본 데이터베이스에서 스탠바이 데이터베이스로 복제를 재설정합니다. |  | DBA | 
| 대상 Aurora PostgreSQL-Compatible 데이터베이스가 소스 Oracle 데이터베이스와 거의 동기화될 때 Oracle 데이터베이스에서 로그를 모니터링하고 애플리케이션을 중지합니다. |  | DBA, 앱 소유자 | 
| 대상이 소스 Oracle 데이터베이스와 완전히 동기화되면 AWS DMS 작업을 중지합니다. |  | DBA | 
| FK를 생성하고 원본 및 대상 데이터베이스의 데이터를 확인합니다. |  | DBA | 
| 대상 데이터베이스에 함수, 보기, 트리거, 시퀀스 및 기타 객체 유형을 생성합니다. |  | DBA | 
| 대상 데이터베이스에 역할 부여를 적용합니다. |  | DBA | 

### 애플리케이션 마이그레이션
<a name="migrate-the-application"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| AWS SCT를 사용하여 애플리케이션 코드 내에서 SQL 문을 분석하고 변환합니다. |  | 앱 소유자 | 
| AWS에 새 애플리케이션 서버를 생성합니다. |  | 앱 소유자 | 
| 애플리케이션 코드를 새 서버로 마이그레이션합니다. |  | 앱 소유자 | 
| 대상 데이터베이스 및 드라이버에 맞게 애플리케이션 서버를 구성합니다. |  | 앱 소유자 | 
| 애플리케이션의 소스 데이터베이스 엔진 관련 코드를 모두 수정하세요. |  | 앱 소유자 | 
| 대상 데이터베이스에 맞게 애플리케이션 코드를 최적화합니다. |  | 앱 소유자 | 

### 전환
<a name="cut-over"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 새 애플리케이션 서버를 대상 데이터베이스로 가리킵니다. |  | DBA, 앱 소유자 | 
| 온전성 검사를 수행합니다. |  | DBA, 앱 소유자 | 
| 가동을 시작합니다. |  | DBA, 앱 소유자 | 

### 프로젝트 닫기
<a name="close-the-project"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 임시 AWS 리소스를 종료합니다. |  | DBA, 시스템 관리자 | 
| 프로젝트 문서를 검토하고 검증하세요. |  | DBA, 앱 소유자 | 
| 마이그레이션 시간, 수동 대비 도구 사용 비율, 비용 절감, 기타 유사한 데이터에 대한 지표를 수집합니다. |  | DBA, 앱 소유자 | 
| 프로젝트를 마무리하고 피드백을 제공하세요. |  | DBA, 앱 소유자 | 

## 관련 리소스
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-resources"></a>

**참조**
+ [Oracle Database에서 Aurora PostgreSQL-Compatible로: 마이그레이션 플레이북](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook.pdf) 
+ [Amazon RDS for Oracle Database를 Amazon Aurora MySQL로 마이그레이션](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2aurora.html)
+ [AWS DMS 웹사이트](https://aws.amazon.com/dms/)
+ [AWS DMS 설명서](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [AWS SCT 웹 사이트](https://aws.amazon.com/dms/schema-conversion-tool/)
+ [AWS SCT 설명서](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Oracle에서 Amazon Aurora로 마이그레이션](https://aws.amazon.com/getting-started/projects/migrate-oracle-to-amazon-aurora/)

**자습서**
+ [AWS DMS 시작하기](https://aws.amazon.com/dms/getting-started/) 
+ [Amazon RDS 시작](https://aws.amazon.com/rds/getting-started/)
+ [AWS 데이터베이스 마이그레이션 서비스 단계별 안내](https://docs.aws.amazon.com/dms/latest/sbs/dms-sbs-welcome.html)