38
Oracle 데이터베이스를 AWS마이그레이션하는 전략 Abdul Sathar Sait 정진영 John Winford 2017 9

Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Oracle 데이터베이스를

AWS로 마이그레이션하는 전략

Abdul Sathar Sait

정진영

John Winford

2017년 9

Page 2: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 2 / 38

목차 소개 .......................................................................................................................................................................................................... 3

데이터 마이그레이션 전략 ........................................................................................................................................................... 4

단일 단계 마이그레이션 ........................................................................................................................................................... 4

2단계 마이그레이션 .................................................................................................................................................................... 4

제로 다운타임 마이그레이션 ................................................................................................................................................. 5

연속 데이터 복제 ......................................................................................................................................................................... 5

Oracle Database 마이그레이션에 사용되는 도구 ............................................................................................................. 5

Amazon RDS 또는 Amazon EC2에서 데이터베이스 만들기 ...................................................................................... 7

Amazon RDS .................................................................................................................................................................................. 7

Amazon EC2 ................................................................................................................................................................................... 7

데이터 마이그레이션 방법 ........................................................................................................................................................... 8

소규모 Oracle Database를 위한 데이터 마이그레이션 ................................................................................................. 8

Oracle SQL Developer 데이터베이스 복사 ..................................................................................................................... 9

Oracle Materialized View .................................................................................................................................................... 10

Oracle SQL*Loader ................................................................................................................................................................... 12

Oracle Export and Import 유틸리티 ............................................................................................................................... 16

대규모 Oracle Database를 위한 데이터 마이그레이션 .............................................................................................. 17

Oracle Data Pump를 이용한 데이터 마이그레이션 ................................................................................................ 18

외부 테이블을 이용한 데이터 마이그레이션 ............................................................................................................. 27

Oracle RMAN을 이용한 데이터 마이그레이션 .......................................................................................................... 27

AWS DMS를 이용한 데이터 복제.......................................................................................................................................... 29

Oracle GoldenGate를 이용한 데이터 복제 ....................................................................................................................... 30

Amazon EC2에 Oracle GoldenGate 허브 설치 ......................................................................................................... 31

Oracle GoldenGate와 함께 사용할 원본 데이터베이스 설치 ............................................................................ 32

Oracle GoldenGate와 함께 사용할 대상 데이터베이스 설치 ............................................................................ 33

Oracle GoldenGate Extract 및 Replicat 유틸리티 작업 ........................................................................................ 33

결론 ....................................................................................................................................................................................................... 36

추가 자료 ............................................................................................................................................................................................ 37

Page 3: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 3 / 38

개요 Amazon Web Services(AWS)는 엔터프라이즈급 솔루션을 신속하고 안정적이며 저렴하게 배포하는

포괄적 서비스 세트와 도구를 제공합니다. Oracle 데이터베이스는 폭넓게 사용되는 관계형

데이터베이스 관리 시스템으로서, 모든 규모의 기업에 배포되어 비즈니스 거래의 여러 단계에서

다양한 형태의 데이터를 관리합니다. 이 백서에서는 Oracle Database를 AWS로 마이그레이션할 때

선호되는 방법을 설명하고 여러분의 비즈니스에 가장 적합한 방법을 선택하도록 도와드립니다.

소개 이 백서에서는 Oracle Database를 온프레미스 또는 고객 데이터센터 서버에서 Amazon Web

Services(AWS)로 마이그레이션하는 모범 사례와 방법을 설명합니다. 데이터는 애플리케이션

바이너리와 달리 재작성 또는 재설치가 불가능합니다. 따라서 데이터 마이그레이션 작업을 신중히

계획하고 검증된 모범 사례를 바탕으로 수행해야 합니다.

AWS는 고객들이 Amazon Elastic Compute Cloud(Amazon EC2)는 물론 클라우드의 관리형

데이터베이스 서비스인 Amazon Relational Database Service(Amazon RDS)에서도 Oracle

Database를 실행토록 하는 유연성을 제공합니다.

— Amazon RDS(Amazon Relational Database Service)는 클라우드에서 관계형 데이터베이스를

간단히 설치, 운영, 확장하도록 지원합니다. 산업 표준 데이터베이스를 위해 저렴하고 크기

조정이 가능한 용량을 제공하고, 공통 데이터베이스 운영 작업을 관리합니다.

— Amazon EC2(Amazon Elastic Compute Cloud)는 클라우드에서 확장 가능한 컴퓨팅 용량을

제공합니다. Amazon EC2를 사용하면 미리 하드웨어에 투자할 필요가 없으므로 애플리케이션을

보다 신속히 개발하여 배포할 수 있습니다. Amazon EC2를 사용하여 필요한 수만큼의 가상

서버를 실행하고, 보안 및 네트워킹을 구성하고, 스토리지를 관리할 수 있습니다.

Amazon EC2에서 데이터베이스를 실행하는 것은 자체 서버에서 데이터베이스를 실행하는 것과

매우 유사합니다. Oracle Database를 Amazon EC2에서 실행하느냐 또는 Amazon RDS를

사용하느냐에 따라 데이터베이스 마이그레이션 프로세스가 달라질 수 있습니다. 예를 들어,

사용자들은 Amazon RDS 인스턴스에 운영 체제 수준의 액세스가 불가능합니다. 여러분의 요구에

가장 적합한 것을 선택하기 위해 예상되는 다양한 전략을 이해하는 것이 중요합니다.

Page 4: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 4 / 38

데이터 마이그레이션 전략 여러분이 선택하는 마이그레이션 전략은 몇 가지 요소에 따라 결정됩니다.

— 데이터베이스의 크기 — 원본 서버와 AWS 간의 네트워크 연결 — Oracle Database 소프트웨어의 버전 및 에디션 — 이용 가능한 데이터베이스 옵션, 도구 및 유틸리티 — 마이그레이션에 이용할 수 있는 기간 — 마이그레이션 및 AWS로 전환 작업을 단일 단계로 수행할 것인지, 또는 시간을 두고 순차적

단계로 수행할 것인지 여부 아래 섹션에서는 일부 일반적인 마이그레이션 전략을 설명합니다.

단일 단계 마이그레이션 단일 단계 마이그레이션은 24 ~ 72 시간 정도 정지할 수 있는 소규모 데이터베이스에 적합한 옵션입니다. 정지 기간 동안 원본 데이터베이스의 모든 데이터를 추출하고, 추출한 데이터를 AWS의 대상 데이터베이스로 마이그레이션합니다. AWS의 대상 데이터베이스를 테스트하고 원본과의 데이터 일관성을 검증합니다. 모든 검증이 성공적으로 완료되면 데이터베이스가 AWS로 전환됩니다.

2단계 마이그레이션 2단계 마이그레이션은 일반적으로 사용되는 방법인데, 그 이유는 최소한의 다운타임만 필요하고 모든 크기의 데이터베이스에 적용할 수 있기 때문입니다.

1. 특정 시점에 (사용량이 감소하는 시점이 바람직) 원본 데이터베이스에서 데이터를 추출하고,

데이터베이스가 여전히 가동되는 상태에서 마이그레이션을 수행합니다. 이 시점에는 다운타임이 없기 때문에 마이그레이션 창이 충분히 클 수 있습니다. 데이터 마이그레이션을 완료한 후, 대상 데이터베이스의 데이터를 검증하여 원본과의 일관성을 확인하고, AWS의 대상 데이터베이스를 테스트하여 성능, 애플리케이션과 연결 상태 및 필요한 여타 기준을 확인할 수 있습니다.

2. 최초 데이터 마이그레이션 이후에 원본 데이터베이스에서 변경된 데이터는 전환 전에 대상 데이터베이스로 전파됩니다. 이 단계를 통해 원본과 대상 데이터베이스가 동기화됩니다. 이 작업 일정은 데이터베이스를 정지할 수 있는 시간으로 정해야 합니다 (일반적으로 늦은 밤이나 주말의 몇 시간). 이 프로세스 진행 중에는 애플리케이션이 데이터베이스를 사용할 수 없기 때문에 원본 데이터베이스가 변경되지 않습니다. 일반적으로 첫 단계 이후에 변경되는 데이터 양은 데이터베이스 전체 크기에 비해 작으므로 이 단계는 신속히 진행되고 최소한의 다운타임만 필요합니다. 변경된 모든 데이터가 마이그레이션되고 나면, 대상 데이터베이스에서

Page 5: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 5 / 38

데이터를 검증하고, 필요한 검증을 수행하며, 모든 검증이 완료된 경우 AWS에

있는

데이터베이스로 전환할 수 있습니다.

제로 다운타임 마이그레이션 일부 비즈니스 상황에서는 다운타임 없이 데이터베이스 마이그레이션을 수행하는 것이 필요합니다.

이를 적절히 실행하려면 세부 계획 및 필요한 데이터 복제 도구가 필요합니다.

이 마이그레이션 방법에는 일반적으로 두 가지 구성요소, 즉 최초 대량 추출/로드 작업과 그 다음에 대량 단계 실행에 소요된 시간 동안 발생했던 변경 내용을 적용하는 작업이 포함됩니다.

변경 내용이 적용되고 나면 마이그레이션 데이터를 검증하고 필요한 테스트를 수행해야 합니다.

복제 프로세스를 통해 대상 데이터베이스를 원본 데이터베이스와 동기화하고, 원본의 모든 데이터 변경 내용을 대상에 계속 복제합니다. 동기화 복제는 원본 데이터베이스의 성능에 영향을 줄 수 있으므로, 몇 분의 데이터베이스 다운타임이 허용된다면 비동기 복제로 설정하는 것이 좋습니다.

원본과 대상 데이터베이스가 항상 동기화되기 때문에 언제든지 데이터베이스를 AWS로 전환할 수 있습니다.

제로 다운타임 마이그레이션을 지원하는 도구는 다수가 있습니다. AWS Database Migration

Service(AWS DMS)는 온프레미스, Amazon EC2 또는 Amazon RDS에서 실행되는 Oracle을 포함하여 다양한 데이터베이스 엔진을 지원합니다. Oracle GoldenGate도 실시간 데이터 복제를 위한 옵션 중 하나이며 Dbvisit Replicate, Attunity Replicate 등 타사 도구도 있습니다.

연속 데이터 복제 AWS의 대상 데이터베이스가 보고/BI 또는 재해 복구(DR) 목적의 클론으로 사용될 경우 연속 데이터 복제를 사용할 수 있습니다. 이 경우 프로세스는 제로 다운타임 마이그레이션과 동일하며,

다만 전환 및 복제의 중단이 없다는 점만 다릅니다.

Oracle Database 마이그레이션에 사용되는 도구 데이터 마이그레이션에 사용되는 도구와 기술은 여러 가지가 있습니다. 이들 도구 중 일부를 상호 교환하여 사용할 수 있고, 또는 시판되는 타사 도구나 오픈 소스 도구를 사용할 수도 있습니다.

— AWS Storage Gateway는 기업의 온프레미스 IT 환경과 AWS 스토리지 인프라 간에 원활하고 안전한 통합을 지원하기 위해 온프레미스 소프트웨어 어플라이언스를 클라우드 기반 스토리지에 연결하는 서비스입니다. 이 서비스를 이용하면 확장 가능하고 저렴한 저장을 위해 데이터를 AWS 클라우드에 안전하게 저장할 수 있습니다. AWS Storage Gateway는 기존 애플리케이션에 작동하는 산업 표준 스토리지 프로토콜을 지원합니다. 그리고 자주 액세스하는 데이터는 온프레미스에 유지하면서, 모든 암호화된 데이터를 Amazon Simple Storage Service

(Amazon S3) 또는 Amazon Glacier에 안전하게 저장함으로써 대기 시간이 짧은 성능을 제공합니다.

Page 6: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 6 / 38

— AWS Database Migration Service(AWS DMS)는 AWS에 대한 데이터베이스 이동 작업을 쉽고 안전하게 지원합니다. 대부분의 상용 및 오픈 소스 데이터베이스를 지원하고, 아울러 동종 및 이종 마이그레이션을 지원합니다. AWS DMS는 데이터베이스를 동기화 상태로 유지하고 마이그레이션 동안 다운타임을 최소화하기 위해 Change Data Capture 기술을 제공합니다. 이는 클라이언트 설치가 필요 없는 관리형 서비스입니다.

— Oracle Recovery Manager(RMAN)는 Oracle이 제공하는 도구로서 Oracle Database 백업 및 복원을 수행하고 관리할 때 사용합니다. RMAN는 완전한 핫 또는 콜드 백업 및 증분 백업을 지원합니다. RMAN은 백업 카탈로그를 유지함으로써 복원 프로세스의 간편성과 신뢰성을 제공합니다. 또한 RMAN를 통해서 백업 또는 활성 데이터베이스로부터 데이터베이스를 복제(클론)할 수도 있습니다.

— Oracle Data Pump Export는 Oracle Database에 대한 데이터 및 메타데이터 내보내기 및 가져오기를 지원하는 다목적 유틸리티입니다. 전체 데이터베이스, 선택된 스키마, 테이블 공간 또는 데이터베이스 개체에 대해 Data Pump Export/Import를 수행할 수 있습니다. Data Pump

Export/Import는 또한 선택적 데이터 내보내기/가져오기를 지원하기 위해 강력한 데이터 필터링 기능도 가지고 있습니다.

— Oracle GoldenGate는 원본과 한 개 이상의 대상 데이터베이스 간에 데이터를 복제하는 도구입니다. 이를 사용하여 고가용성 아키텍처를 구축할 수 있습니다. 또한 다른 유형의 IT

환경에서 실시간 데이터 통합, 트랜잭션 변경 데이터 캡처 및 복제 작업을 수행할 수도 있습니다.

— Tsunami UDP는 오픈 소스 파일 전송 프로토콜로서, TCP 제어 및 UDP 데이터를 사용하여 장거리 네트워크에 걸쳐 매우 빠른 속도로 전송을 합니다. 전송을 위해 UDP를 사용할 경우,

동일한 네트워크에서 TCP를 이용할 때보다 더 많은 처리량을 지원합니다. Tsunami UDP는 SourceForge.net의 Tsunami UDP 프로토콜 페이지에서 다운로드 할 수 있습니다.1

— Oracle SQL Developer는 Oracle에서 제공하는 무료 GUI 도구로서 데이터 조작, 개발 및 관리에 사용합니다. 이 Java 기반 도구는 Microsoft Windows, Linux 또는 Mac OS X 용으로 사용할 수 있습니다.

— Oracle SQL*Loader는 Oracle에서 제공하는 대량 데이터 로드 유틸리티로서 외부 파일을 데이터베이스에 로딩할 때 사용합니다. SQL*Loader는 전체 데이터베이스 클라이언트 설치의 일부로 포함됩니다.

— Attunity Replicate는 모든 주요 데이터베이스, 데이터 웨어하우스 및 Hadoop 플랫폼에서 데이터를 효율적으로 로드합니다. 수동 ETL 코딩 작업이 필요하지 않으며, 소프트웨어 설치 없이 데이터를 복제할 수 있습니다.

1 http://tsunami-udp.sourceforge.net/

Page 7: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 7 / 38

Amazon RDS 또는 Amazon EC2에서

데이터베이스 만들기 데이터를 AWS로 마이그레이션하려면 (온프레미스 또는 데이터센터에) 원본 데이터베이스와 AWS에 대상 데이터베이스가 있어야 합니다. 비즈니스 요구에 따라 Oracle용 Amazon RDS를 사용하거나 또는 Amazon EC2에 자체 데이터베이스를 설치하여 관리하는 방식 중에서 선택할 수 있습니다.

자신의 업무에 가장 적합한 서비스를 선택하도록 도움을 받으려면 아래 섹션들을 참조하십시오.

Amazon RDS 많은 고객들이 Oracle용 Amazon RDS 사용을 선호하는데 그 이유는 애플리케이션 개발에 집중할 시간 여유를 주기 때문입니다. Amazon RDS는 프로비저닝, 백업, 소프트웨어 패칭, 모니터링,

하드웨어 확장 등 많은 시간이 걸리는 데이터베이스 관리 작업을 자동화합니다. Amazon RDS는 데이터베이스 소프트웨어 설치, 구성, 관리는 물론 인프라 계획 및 프로비저닝 작업이 필요하지 않으므로 데이터베이스 운영 작업을 단순화합니다.

또한 Oracle용 Amazon RDS는 복제 작업을 쉽게 만들어 프로덕션 작업의 가용성과 신뢰성을 향상시킵니다. Multi-AZ 배포 옵션을 사용하면 높은 가용성과 주 데이터베이스에서 동기 복제되는 보조 데이터베이스로 자동 장애 조치를 취하는 기본 기능을 통해 업무상 중요한 작업을 실행할 수 있습니다. 모든 AWS 서비스와 마찬가지로 사전 투자가 필요하지 않으며, 리소스 사용량만큼만 비용을 지불하면 됩니다. 자세한 내용은 Oracle Database용 Amazon RDS를 참조하십시오.

Amazon RDS를 사용하려면 AWS 계정에 로그인하여 AWS 관리 콘솔에서 Amazon RDS Oracle

인스턴스를 실행합니다. 이것을 최종 데이터베이스를 만드는 중간 마이그레이션 데이터베이스로 취급하는 것이 좋은 전략입니다. 데이터 마이그레이션이 완료되기 전에 Multi-AZ 기능을 사용해서는 안 되는데, 그 이유는 Multi-AZ를 위한 복제가 데이터 마이그레이션 실행을 방해하기 때문입니다. 가져온 데이터 파일을 저장할 충분한 공간을 인스턴스에 부여하십시오. 일반적으로 이를 위해 데이터베이스 크기의 두 배만큼 프로비저닝을 하는 것이 필요합니다.

Amazon EC2 다른 방법으로, Oracle Database를 Amazon EC2에서 직접 실행할 수 있습니다. 그러면 전체 인프라와 데이터베이스 환경 설치를 완전히 통제할 수 있습니다. 이 옵션이 익숙한 접근법을 제공하지만 사용자가 Amazon EC2 인스턴스, 네트워킹, 스토리지 볼륨, 확장성, 보안 등 모든 필요한 구성요소를 (AWS 아키텍처 모범 사례를 기준으로) 설치, 구성, 관리하고 조정해야 합니다.

자세한 내용은 적합한 아키텍처 선택 지침 및 설치 구성 지침을 설명하는 백서(Advanced

Architectures for Oracle Database on Amazon EC2)를 참조하십시오.

Page 8: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 8 / 38

데이터 마이그레이션 방법 이 백서의 나머지 부분에서는 Oracle Database에서 AWS로 데이터를 마이그레이션하는 각각의

방법에 대해 자세히 설명합니다. 자세한 내용을 보기 전에 아래 표를 살펴보면 각 방법의 요약

내용을 빠르게 파악할 수 있습니다.

데이터 마이그레이션 방법 데이터베이스 크기 적용 대상 권장 사항

AWS Database Migration

Service

최대 5TB Amazon RDS 및

Amazon EC2

제로 다운타임 마이그레이션

Oracle SQL Developer

Database Copy

최대 200 MB Amazon RDS 및

Amazon EC2

소형 데이터베이스 -

개체 수에 관계 없음

Oracle Materialized Views 최대 500 MB Amazon RDS 및

Amazon EC2

소형 데이터베이스 -

개체 수 제한 있음

Oracle SQL*Loader 최대 10 GB Amazon RDS 및

Amazon EC2

중소형 데이터베이스 -

개체 수 제한 있음

Oracle Export and Import

Utilities

최대 10 GB Amazon RDS 및

Amazon EC2

개체 수가 많은 중소형

데이터베이스

Oracle Data Pump 최대 5TB Amazon RDS 및

Amazon EC2

데이터베이스 크기 10 GB ~

5 TB에 선호되는 방법

외부 테이블 최대 1 TB Amazon RDS 및

Amazon EC2

이것을 표준 방법으로 사용

중인 시나리오에서 권장

Oracle RMAN 크기 제한 없음 Amazon EC2 전용 5 TB 이상의 데이터베이스,

또는 데이터베이스 백업이 이미

Amazon S3에 있는 경우

Oracle GoldenGate 크기 제한 없음 Amazon RDS 및

Amazon EC2

제로 다운타임 마이그레이션

소규모 Oracle Database를 위한 데이터

마이그레이션 데이터 마이그레이션 전략은 데이터베이스 크기, 신뢰성, AWS 연결 네트워크의 대역폭,

마이그레이션에 사용 가능한 시간을 기준으로 수립해야 합니다. 다수의 Oracle Database가 10GB ~

5TB의 중대형 규모를 대상으로 하고, 일부는 5TB ~ 20TB 이상을 대상으로 하기도 합니다. 하지만

더 작은 데이터베이스를 마이그레이션하는 것이 필요할 수도 있습니다. 데이터베이스를 스키마

기준으로 분할하여 각 마이그레이션 작업의 크기를 작게 만드는 단계별 마이그레이션의 경우에는

특히 그렇습니다.

원본 데이터베이스가 10GB 미만이고 안정적인 고속 인터넷 연결이 있는 경우 본 섹션에 열거된

아래 방법 중 하나를 사용하여 데이터 마이그레이션을 할 수 있습니다. 이 섹션에서 설명하는 모든

Page 9: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 9 / 38

방법은 Amazon RDS Oracle 또는 Amazon EC2에서 실행하는 Oracle Database에 적용할 수

있습니다.

참고: 10GB 크기는 단순한 지침이며, 더 큰 데이터베이스에 대해서도 동일한 방법을 사용할 수

있습니다. 마이그레이션 시간은 데이터 크기와 네트워크 처리량에 따라 달라집니다. 하지만

데이터베이스 크기가 50GB를 초과할 경우 이 백서의 '대규모 Oracle Database를 위한 데이터

마이그레이션'에 열거된 방법 중 하나를 사용할 것을 권고합니다.

Oracle SQL Developer 데이터베이스 복사 마이그레이션하는 데이터의 전체 크기가 200MB 미만일 경우, 가장 간단한 솔루션은 Oracle SQL

Developer Database Copy 기능을 사용하는 것입니다. Oracle SQL Developer는 Oracle에서

제공하는 무료 GUI 도구로서 데이터 조작, 개발 및 관리에 사용합니다. 이 사용이 간편한 Java 기반

도구는 Microsoft Windows, Linux 또는 Mac OS X에서 사용할 수 있습니다. 이 방법을 통해서 원본

데이터베이스에서 대상 데이터베이스로 데이터를 직접 전송할 수 있으므로 중간 단계가 필요

없습니다.

SQL Developer가 다수의 개체를 취급할 수 있기 때문에 데이터베이스에 많은 개체가 포함되어

있어도 소규모 데이터베이스를 간편하게 마이그레이션할 수 있습니다. 이 방법을 사용하려면 원본

데이터베이스와 대상 데이터베이스 간에 안정적 네트워크 연결이 있어야 합니다. 또한 이 방법은

전송 중에 데이터 암호화가 필요하지 않다는 점에 유의하십시오.

Oracle SQL Developer Database Copy 기능을 사용하여 데이터베이스를 마이그레이션하려면 아래

절차를 수행합니다.

1. Oracle SQL Developer를 설치합니다.

2. 원본 및 대상 데이터베이스에 연결합니다.

3. Oracle SQL Developer의 도구(Tools) 메뉴에서 데이터베이스 복사(Database Copy) 명령을

클릭하여 데이터를 해당 Amazon RDS 또는 Amazon EC2 인스턴스에 복사합니다.

4. 데이터베이스 복사 마법사의 절차를 따릅니다. 마이그레이션할 개체를 선택하고, 데이터 제한을

위해 필터를 사용할 수도 있습니다.

아래 스크린샷은 데이터베이스 복사 마법사를 표시하고 있습니다.

Page 10: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 10 / 38

그림 1: 데이터 전송 과정을 보여주는 Oracle SQL Developer의 데이터베이스 복사 마법사

Oracle Materialized Views Oracle Database Materialized Views를 사용하여 Amazon RDS 또는 Amazon EC2를 위해 데이터를

AWS에 있는 Oracle 데이터베이스로 마이그레이션할 수 있습니다. 이 방법은 500MB 미만의

데이터베이스에 매우 적합합니다.

Materialized Views는 Oracle Database Enterprise Edition에서만 사용할 수 있기 때문에 이

방법은

원본 데이터 베이스와 대상 데이터베이스 모두에서 Oracle Data base Enterprise Edition을 사용 하는

경우에 만

적용 할 수 있습니다. Materialized Views 복제를 사용 하면 대상 테이블과 원본 간에 지속적인

동기화를

유지하면서

일회 마이그레이션으로 데이터를 AWS에 보낼 수 있습니다. 그

결과

제로

다운타임

컷오버(zero-downtime

cut

over) 입니다.

복제는 원본과 대상 데이터 베이스 간의

데이터 베이스

링크를

통해

이루어집니다.

최초

로드

시에,

원본 테이블의 모든 데이터가 대상 테이블로

이동

있도록

전체

새로

고침을

수행해야

합니다.

중요: 데이터가 데이터베이스 링크를 통해서 전송되기 때문에 원본 및 대상 데이터베이스가 SQL*Net을

통해 서로 연결할 수 있어야 합니다. 만약 네트워크 보안 설계가 연결을 허용하지 않을

Page 11: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 11 / 38

경우에는 이 방법을 사용할 수 없습니다.

전체 데이터베이스를 복사하는 앞의 방법(Oracle SQL Developer Database Copy 기능)과는 달리, 이

방법의 경우 마이그레이션할 각 테이블에 대해 Materialized Views 를 만들어야 합니다. 그러면

선택적으로

테이블을 AWS의 데이터베이스로 이동 할 수 있는 융통성이 부여됩니다.

하지만

다수의

테이블을

마이그레이션 해야 할 경우에는 프로세스를 더욱 복잡하게 만듭니다.

그래서

방법은

제한 된

수의

테이블만 마이그레이션할 때 보다 적합합니다.

이 방법으로 최선의 결과를 얻으려면 아래 절차를 완료하십시오. 원본 데이터베이스 사용자 ID가

SourceUser이고 암호는 PASS라고 가정합니다.

1. Amazon RDS 또는 Amazon EC2에 충분한 권한이 있는 새 사용자를 만듭니다.

Create user MV_DBLink_AWSUser identified by password

3. 원본 데이터베이스에 대한 데이터베이스 링크를 만듭니다.

CREATE DATABASE LINK SourceDB_lnk CONNECT TO SourceUser

IDENTIFIED BY PASS USING

'(description=(address=(protocol=tcp) (host=

crmdb.acmecorp.com) (port=1521))

(connect_data=(sid=ORCLCRM)))’

4. 데이터베이스 링크에 대한 테스트를 수행하여, AWS 데이터베이스에서 데이터베이스 링크를

통해 원본 데이터베이스에 있는 테이블에 액세스할 수 있는지 확인합니다.

Select * from tab@ SourceDB_lnk

5. 원본 데이터베이스에 로그인하여 마이그레이션할 각 테이블에 대해 구체화 뷰 로그를

만듭니다.

CREATE MATERIALIZED VIEW LOG ON customers

6. AWS의 대상 데이터베이스에서, 원본 데이터베이스에서 구체화 뷰 로그를 설정했던 각

테이블에 대해 구체화 뷰를 만듭니다.

Page 12: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 12 / 38

CREATE

MATERIALIZED

VIEW

customer

BUILD

IMMEDIATE

REFRESH

FAST

AS

SELECT

*

FROM

customer@

SourceDB_lnk

Oracle SQL*Loader Oracle SQL*Loader는 제한된 수의 개체가 포함된 10GB 미만의 중소 규모 데이터베이스에 적합합니다. 원본 데이터베이스에서 내보내고 및 대상 데이터베이스로 로드하는 프로세스가 스키마에 특정된 것이기 때문에 이 프로세스는 한 번에 하나의 스키마에만 사용해야 합니다.

데이터베이스에 여러 개의 스키마가 포함되어 있을 경우, 각 스키마에 대해 프로세스를 반복해야 합니다. 가져오기 작업을 여러 단계(한 번에 하나의 스키마)로 수행할 수 있기 때문에 전체 데이터베이스 크기가 크더라도 이 방법이 좋은 선택이 될 수 있습니다.

이 방법은 Amazon RDS 또는 Amazon EC2에서 Oracle Database에 적용할 수 있으며, 아래 두 가지 옵션 중에서 선택할 수 있습니다.

옵션 1

1. 원본 데이터베이스에서 데이터를 예를 들어 열/행 구분 기호가 있는 플랫 파일로 추출합니다.

2. 대상 데이터베이스에 원본과 동일한 테이블을 만듭니다 (이를 위해 작성된 스크립트 사용).

3. SQL*Loader를 사용하여 원본 시스템에서 대상 데이터베이스에 연결하고 데이터를 가져옵니다.

옵션 2

1. 원본 데이터베이스에서 데이터를 예를 들어 열/행 구분 기호가 있는 플랫 파일로 추출합니다.

2. 파일을 압축하고 암호화합니다.

3. Amazon EC2 인스턴스를 실행하고 거기에 전체 Oracle 클라이언트를 설치합니다 (SQL*Loader용). Amazon EC2에 있는 데이터베이스의 경우, 이것이 대상 데이터베이스가 위치한 것과 동일한 인스턴스가 될 수 있습니다. Amazon RDS의 경우, 이것은 임시 인스턴스가 됩니다.

4. 파일을 Amazon EC2로 전송합니다.

5. Amazon EC2 인스턴스에서 파일의 압축과 암호를 해제합니다.

6. 대상 데이터베이스에 원본과 동일한 테이블을 만듭니다 (이를 위해 작성된 스크립트 사용).

7. SQL*Loader를 사용하여 임시 Amazon EC2 인스턴스에서 대상 데이터베이스에 연결하고 데이터를 가져옵니다.

데이터베이스 크기가 작고, AWS의 대상 데이터베이스에 대해 직접 SQL*Net 액세스가 가능하고,

데이터 보안이 문제가 되지 않을 경우에 첫 번째 옵션을 사용하십시오. 그렇지 않을 경우 두 번째 옵션을 사용하는 것이 좋으며, 그 이유는 전송 단계에서 암호화 및 압축이 지원되기 때문입니다. 압축을 하면 파일 크기가 상당히 작아지므로 데이터 전송이 훨씬 빨라집니다.

Page 13: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 13 / 38

양쪽 옵션의 첫 단계인 데이터 추출을 수행할 때 SQL*Plus 또는 SQL Developer를 사용할 수

있습니다. SQL*Plus의 경우, SQL 스크립트 파일의 쿼리를 사용하여 출력을 텍스트 파일로 직접

전송합니다 (아래 예 참조).

set pagesize 0 set head off set feed off set line 200

SELECT col1|| '|' ||col2|| '|' ||col3|| '|' ||col4|| '|' ||col5 from SCHEMA.TABLE; exit;

두 번째 옵션에서 암호화하고 압축한 출력을 만들기 위해 (위 옵션 2 절차의 2단계 참조), 출력을

압축 유틸리티로 직접 파이핑할 수 있습니다.

Oracle SQL Developer를 사용하여 데이터를 추출할 수도 있습니다.

1. 연결 창에서 데이터를 추출할 테이블을 선택합니다.

2. 도구 메뉴에서 데이터베이스 내보내기 명령을 클릭합니다 (아래 스크린샷 참조).

Page 14: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 14 / 38

그림 2: 데이터베이스 내보내기 명령

7. 내보내기 마법사의 원본/대상 페이지(다음 스크린샷 참조)에서, DDL 내보내기 옵션을 선택하여

테이블 작성용 스크립트를 만들도록 권장하는데, 그러면 전체 프로세스가 단순화됩니다.

8. 같은 페이지의 형식 드롭다운 상자에서 로더를 선택합니다.

9. 같은 페이지의 다른 이름으로 저장 드롭다운 상자에서 별도 파일을 선택합니다.

Page 15: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 15 / 38

그림 3: 원본/대상 페이지의 내보내기 마법사 옵션

내보내기 마법사를 계속 진행하여 내보내기를 완료합니다. 내보내기 마법사는 스키마의 여러

테이블을 위해 데이터 파일, 제어 파일 및 테이블 작성 스크립트를 한번에 만들도록 지원하므로

동일 작업을 위해 Oracle SQL*Plus를 사용하는 것보다 훨씬 간편합니다.

위에 설명한 옵션 1을 사용할 경우, 데이터를 대상 데이터베이스로 가져오기 위해 추출된 데이터

및 제어 파일을 사용하여 원본 환경의 Oracle SQL*Loader를 실행할 수 있습니다. 이렇게 하려면

다음 명령을 사용하십시오.

sqlldr userid=userID/password@$service control=control.ctl log=load.log bad=load.bad discard=load.dsc data=load.dat direct=y skip_index_maintenance=true errors=0

옵션 2를 사용할 경우, 전체 Oracle 클라이언트가 설치된 Amazon EC2 인스턴스가 필요합니다.

또한 데이터 파일을 해당 Amazon EC2 인스턴스에 업로드해야 합니다. Amazon EC2에 있는

데이터베이스의 경우, 이것이 대상 데이터베이스가 위치한 것과 동일한 Amazon EC2 인스턴스가

Page 16: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 16 / 38

될 수 있습니다. Amazon RDS의 경우, 이것은 임시 Amazon EC2 인스턴스가 됩니다.

업로드를 수행하기 전에, 파일을 압축하여 암호화하는 것이 좋습니다. 이를 위해 Linux에서 TAR와

ZIP/GZIP 조합을 사용하거나 WinZip, 7-Zip 등 타사 유틸리티를 사용할 수 있습니다. Amazon EC2

인스턴스가 설정되어 실행되고 파일 압축 및 암호화가 끝나면, SFTP(Secure File Transfer Protocol)를

사용하여 파일을 Amazon EC2 인스턴스에 업로드합니다.

Amazon EC2 인스턴스에서 Oracle SQL*Plus를 사용하여 대상 데이터베이스로 연결하여 연결이

설정되는지 확인합니다. 추출에서 얻은 각 제어 파일에 대해 sqlldr 명령을 실행합니다 (앞의 예

참조). 모든 제어 파일에 대해 하나씩 sqlldr을 실행할 shell/bat 스크립트를 작성할 수도

있습니다.

참고: skip_index_maintenance=true를 사용하면 데이터 로드 성능이 크게 향상됩니다. 하지만

테이블 인덱스가 업데이트되지 않으므로 데이터 업로드가 완료된 후 모든 인덱스를 다시 구축해야

합니다.

Oracle Export and Import 유틸리티 Oracle Data Pump로 대체되고 있는 중이지만, 원래 Oracle Export and Import 유틸리티는 데이터에

binary float 및 binary double 데이터 유형이 없는 10GB 미만의 데이터베이스를 마이그레이션할 때

유용합니다. 가져오기 프로세스에서 스키마 개체가 만들어지므로 사전에 개체를 만들기 위해

스크립트를 실행할 필요가 없습니다. 따라서 이 프로세스는 작은 테이블이 다수 있는

데이터베이스에 적합합니다. 이 방법은 Amazon EC2에서 실행하는 Oracle용 Amazon RDS와 Oracle

Database에 적용할 수 있습니다.

첫 단계는 아래 명령을 사용하여 원본 데이터베이스의 테이블을 내보내는 작업입니다. 필요 시

사용자명과 암호는 바꾸십시오.

exp userID/password@$service FILE=exp_file.dmp LOG=exp_file.log

이 내보내기 프로세스를 통해, 지정된 테이블의 데이터와 스키마가 모두 포함된 이진 덤프 파일이

만들어집니다. 스키마와 데이터를 대상 데이터베이스로 가져올 수 있습니다.

다음 단계를 위해 다음 두 가지 옵션 중 하나를 선택합니다.

옵션 1

1. exp를 사용하여 데이터를 원본 데이터베이스에서 이진 덤프 파일로 내보냅니다.

2. imp를 실행하여 데이터를 원본 서버에서 대상 데이터베이스로 직접 가져옵니다.

Page 17: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 17 / 38

옵션 2

1. exp를 사용하여 데이터를 원본 데이터베이스에서 이진 덤프 파일로 내보냅니다.

2. 파일을 압축하고 암호화합니다.

3. Amazon EC2 인스턴스를 실행하고 거기에 전체 Oracle 클라이언트를 설치합니다 (emp/imp용).

Amazon EC2에 있는 데이터베이스의 경우, 이것이 대상 데이터베이스가 위치한 것과 동일한

인스턴스가 될 수 있습니다. Amazon RDS의 경우, 이것은 임시 인스턴스가 됩니다.

4. 파일을 Amazon EC2로 전송합니다.

5. Amazon EC2 인스턴스에서 파일의 압축과 암호를 해제합니다.

6. imp를 실행하여 데이터를 대상 데이터베이스로 가져옵니다.

데이터베이스 크기가 기가바이트를 초과할 경우, 옵션 2를 사용하는 것이 좋은데 그 이유는 압축

및 암호화 기능이 있기 때문입니다. 또한 이 방법은 가져오기 성능도 더 좋습니다.

옵션 1과 옵션 2 모두에서 아래 명령을 사용하여 대상 데이터베이스로 가져오기를 수행합니다.

imp userID/password@$service FROMUSER=cust_schema TOUSER=cust_schema FILE=exp_file.dmp LOG=imp_file.log

필요에 따라 exp 및 imp 명령에 넘겨줄 수 있는 많은 옵션 인수가 있습니다. 자세한 내용은

Oracle 설명서를 참조하십시오.

대규모 Oracle Database를 위한 데이터

마이그레이션 대규모 데이터베이스의 경우, '소규모 Oracle Database를 위한 데이터 마이그레이션'에서 설명한

방법 대신에 이 섹션에서 설명하는 방법 중 하나를 사용하는 것이 좋습니다. 이 설명의 목적상

대규모 데이터베이스는 10 GB 이상으로 정의합니다.

이 섹션에서는 대규모 데이터베이스를 마이그레이션하는 세 가지 방법을 설명합니다.

— Oracle Data Pump를 이용한 마이그레이션

Oracle Data Pump는 다수의 데이터를 마이그레이션하는 탁월한 방법으로서, Amazon RDS 또는

Amazon EC2에 있는 데이터베이스에 사용할 수 있습니다.

— Oracle 외부 테이블을 이용한 마이그레이션

Oracle 외부 테이블을 이용한 데이터 마이그레이션 프로세스는 Oracle Data Pump 프로세스와

매우 비슷합니다. 해당 프로세스가 이미 구축되어 있을 경우 이 방법을 사용하며, 그렇지

Page 18: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 18 / 38

않으면 Oracle Data Pump 방법을 사용하는 것이 더 좋습니다.

— Oracle RMAN을 이용한 마이그레이션

데이터베이스를 이미 AWS에 백업하고 있거나, 데이터를 AWS로 가져오기 위해 AWS Import/Export 서비스를 사용하고 있는 경우에 RMAN을 이용한 마이그레이션이 매우 유용합니다. Oracle RMAN은 Amazon EC2에 있는 데이터베이스에만 사용할 수 있으며 Amazon RDS에서는 사용할 수 없습니다.

Oracle Data Pump를 이용한 데이터 마이그레이션 마이그레이션할 데이터 크기가 10GB를 초과할 경우, AWS로 데이터를 마이그레이션할 때 가장 좋은 도구는 아마도 Oracle Data Pump일 것입니다. 이 방법은 유연한 데이터 추출 옵션, 높은 수준의 병렬 실행 방식 및 확장 가능한 작업을 지원하므로 데이터베이스 간 고속 데이터 및 메타데이터 이동이 가능합니다. Oracle Data Pump는 원래 Import/Export 도구를 대신하여 Oracle 10g에 구현되어 있으며, Oracle Database 10g 릴리스 1 이후에서만 사용할 수 있습니다.

Oracle Data Pump 방법은 Amazon EC2에서 실행하는 Oracle용 Amazon RDS와 Oracle Database에 적용할 수 있습니다. 관련 프로세스는 양쪽 모두 비슷하지만, Oracle용 Amazon RDS에서는 몇 단계가 더 필요합니다.

원래 Import/Export 유틸리티와는 달리 Oracle Data Pump의 가져오기 작업에서는 데이터 파일을 데이터베이스로 가져오기 위해 데이터 파일을 데이터베이스 서버 인스턴스에서 사용할 수 있어야 합니다. Amazon RDS 인스턴스의 파일 시스템에 직접 액세스할 수 없기 때문에, 파일을 원본에서 Amazon RDS 인스턴스로 전송하려면 하나 또는 그 이상의 EC2 인스턴스(브릿지 인스턴스)를 사용한 후 Amazon RDS 데이터베이스로 가져와야 합니다. 이들 임시 Amazon EC2 브릿지 인스턴스는 가져오기 동안에만 필요하기 때문에 가져오기가 끝나면 인스턴스를 즉시 종료할 수 있습니다. 이 목적으로 Amazon Linux 기반 인스턴스를 사용하도록 권장합니다. Amazon EC2 브릿지 인스턴스를 위해 Oracle Database를 설치할 필요가 없으며, Oracle Instance Client만 설치하면 됩니다.

참고: 이 방법을 사용하려면 Amazon RDS 데이터베이스 버전이 11.2.0.3 이상이어야 합니다.

아래에서는 Amazon EC2 및 Amazon RDS용 Oracle에서 Oracle Database용 Oracle Data Pump를 사용하여 데이터를 마이그레이션하는 전체 프로세스를 설명합니다.

Amazon EC2의 데이터베이스로 데이터 마이그레이션 1. Oracle Data Pump를 사용하여 원본 데이터베이스에 있는 데이터를 다수의 압축/암호화된

파일로 내보냅니다.

2. Tsunami UDP를 사용하여 파일을 AWS에서 대상 Oracle 데이터베이스를 실행하는 Amazon EC2 인스턴스로 이동합니다.

3. Oracle Data Pump 가져오기 기능을 사용하여 데이터를 대상 데이터베이스로 가져옵니다.

Page 19: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 19 / 38

Amazon RDS의 데이터베이스로 데이터 마이그레이션 1. Oracle Data Pump를 사용하여 원본 데이터베이스에 있는 데이터를 다수의 파일로 내보냅니다.

2. Tsunami UDP를 사용하여 파일을 AWS에 있는 Amazon EC2 브릿지 인스턴스로 이동합니다.

3. 제공된 Perl 스크립트(UTL_FILE 패키지를 이용함)를 사용하여 데이터 파일을 Amazon RDS로 이동합니다.

4. PL/SQL 스크립트(DBMS_DATAPUMP 패키지를 이용함)를 사용하여 데이터를 Amazon RDS 데이터베이스로 가져옵니다 (이 섹션의 끝에 예가 제시되어 있음).

Oracle Data Pump를 사용하여 원본 인스턴스의 데이터 내보내기 대규모 데이터베이스의 데이터를 내보낼 때에는 여러 쓰레드를 병렬로 실행하고 각 파일의 크기를 지정하는 것이 좋습니다. 그러면 내보내기 속도가 빨라지고, 프로세스의 다음 단계에서 신속히 파일들을 사용할 수 있습니다. 전체 데이터베이스를 내보낼 때까지 기다리지 않고 다음 단계로 이동할 수 있습니다. 즉 각 파일이 완료되면 다음 단계로 이동할 수 있습니다. 또한 매개 변수 COMPRESSION=ALL을 사용하여 압축할 수도 있는데, 그러면 추출 파일의 크기가 상당히 줄어듭니다. 그리고 암호를 지정하거나 또는 Oracle wallet을 사용하여 매개 변수 ENCRYPTION= all을 지정함으로써 파일을 암호화할 수도 있습니다. 압축 및 암호화 옵션에 관한 자세한 내용은 Oracle Data Pump 설명서를 참조하십시오.

아래에서 500GB 데이터베이스 내보내기 작업의 예를 보여주는데, 여덟 개의 쓰레드가 병렬로 실행되고 각 출력 파일은 최대 20GB입니다. 이를 통해 총 75GB의 22개 파일이 만들어집니다. 총 파일 크기는 실제 원본 데이터베이스 크기보다 훨씬 작은데 그 이유는 Oracle Data Pump의 압축 옵션 때문입니다.

expdp demoreinv/demo full=y dumpfile=data_pump_exp1:reinvexp1%U.dmp, data_pump_exp2:reinvexp2%U.dmp, data_pump_exp3:reinvexp3%U.dmp filesize=20G parallel=8 logfile=data_pump_exp1:reinvexpdp.log compression=all ENCRYPTION= all ENCRYPTION_PASSWORD=encryption_password job_name=reInvExp

Page 20: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 20 / 38

그림 4: Oracle Data Pump를 사용하여 원본 데이터베이스 인스턴스의 데이터 내보내기

출력 파일을 다른 디스크들로 분산하면 I/O 성능이 향상됩니다. 아래 예에서는 I/O 경합을 피하기

위해 세 개의 디스크를 사용합니다.

그림 5: 세 개 디스크에 기록하기 위해 여러 쓰레드에서 병렬 실행

Page 21: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 21 / 38

그림 6: 각 디스크에서 만들어진 덤프 파일

이 전체 프로세스에서 가장 시간이 많이 걸리는 부분이 AWS로 파일 전송 작업이므로, 파일 전송을

최적화하면 데이터 마이그레이션 시간이 크게 단축됩니다. 아래 절차는 파일 전송 최적화 방법을

표시합니다.

1. 내보내기 동안 덤프 파일을 압축합니다.

2. 파일 전송을 병렬 방식으로 직렬화합니다. 여기서 직렬화는 파일을 하나씩 전송함을 의미하며,

AWS로 업로드하기 위해 내보내기 완료 시까지 기다릴 필요가 없습니다. 다수 파일을 (충분한

대역폭이 있어서) 병렬로 업로드하면 성능이 더욱 향상됩니다. 사용하는 디스크 수만큼의

파일을 병렬로 업로드하고 AWS에서 그 파일을 수신하기 위해 같은 수의 Amazon EC2 브릿지

인스턴스를 사용하는 것이 좋습니다.

3. 데이터 파일을 Amazon EC2 인스턴스에 업로드할 때에는 Tsunami UDP 또는 상용 WAN

액셀러레이터를 사용합니다.

Tsunami를 사용하여 파일을 Amazon EC2에 업로드하기 아래 예에서는 Tsunami를 원본 데이터베이스 서버와 Amazon EC2 인스턴스에 모두 설치하는

방법을 보여줍니다.

Page 22: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 22 / 38

yum -y install make yum -y install automake yum -y install gcc yum -y install autoconf yum -y install cvs wget http://sourceforge.net/projects/tsunami-udp/files/latest/download?_test=goal tar -xzf tsunami*gz cd tsunami-udp* ./recompile.sh make install

Tsunami를 설치한 후에는 포트 46224를 열어 Tsunami 통신이 가능하게 합니다. 원본 데이터베이스 서버에서 Tsunami 서버를 시작합니다 (아래 예 참조). 병렬 업로드를 수행할 경우, 여러 Tsunami

서버를 시작해야 합니다.

cd/mnt/expdisk1 tsunamid *

대상 Amazon EC2 인스턴스에서 Tsunami 서버를 시작합니다 (아래 예 참조). 여러 파일을 병렬로 업로드할 경우, 각각의 Amazon EC2 브릿지 인스턴스에서 Tsunami 서버를 시작해야 합니다. 파일 병렬 업로드를 사용하지 않고 (Amazon RDS가 아닌) Amazon EC2의 Oracle 데이터베이스로 마이그레이션할 경우, Amazon EC2 브릿지 인스턴스를 피할 수 있습니다. 대신에 데이터베이스가 실행되는 Amazon EC2 인스턴스로 파일을 직접 업로드할 수 있습니다. 대상 데이터베이스가 Oracle용 Amazon RDS인 경우, Tsunami 서버를 Amazon RDS 서버에서 실행할 수 없기 때문에 브릿지 인스턴스가 필요합니다.

cd /mnt/data_files tsunami tsunami> connect source.db.server tsunami> get *

지금부터는 Amazon EC2의 데이터베이스와 Amazon RDS의 데이터베이스에 대한 프로세스가 다릅니다. 아래 섹션에서는 각 서비스의 프로세스를 보여줍니다.

Amazon EC2 인스턴스의 데이터베이스에 필요한 다음 절차 앞의 절차에서 한 개 이상의 Amazon EC2 브릿지 인스턴스를 사용했을 경우 Amazon EC2 브릿지 인스턴스의 모든 덤프 파일을 Amazon EC2 데이터베이스 인스턴스로 가져와야 합니다. 이를

Page 23: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 23 / 38

수행하는 가장 쉬운 방법은 파일이 포함된 Amazon EBS(Amazon Elastic Block Store) 볼륨을

Amazon EC2 브릿지 인스턴스에서 분리하고 이를 Amazon EC2 데이터베이스 인스턴스에 연결하는

것입니다.

모든 덤프 파일을 Amazon EC2 데이터베이스 인스턴스에서 사용할 수 있게 되면, Oracle Data

Pump의 가져오기 기능을 사용하여 데이터를 Amazon EC2의 대상 Oracle 데이터베이스로

가져옵니다 (아래 예 참조).

impdp demoreinv/demo full=y DIRECTORY=DPUMP_DIR dumpfile= reinvexp1%U.dmp,reinvexp2%U.dmp, reinvexp3%U.dmp parallel=8 logfile=DPimp.log ENCRYPTION_PASSWORD=encryption_password job_name=DPImp

이를 통해 모든 데이터를 데이터베이스로 가져옵니다. 로그 파일을 검토하여 모든 작업이 잘

수행되었는지 확인하고, 데이터를 검증하여 모든 데이터가 예상대로 마이그레이션되었는지

확인합니다.

Amazon EC2의 데이터베이스에 필요한 다음 절차 Amazon RDS는 관리형 서비스이기 때문에 Amazon RDS 인스턴스는 파일 시스템 액세스를

지원하지 않습니다. 하지만 Oracle RDS 인스턴스에는 외부에서 액세스할 수 있는 Oracle 디렉터리

개체가 있는데 이것을 DATA_PUMP_DIR라고합니다. Oracle UTL_FILE 패키지를 사용하여 Oracle Data

Pump 덤프 파일을 이 디렉터리에 복사할 수 있습니다. Perl 스크립트를 사용하여 브릿지

인스턴스의 파일을 Amazon RDS 인스턴스의 DATA_PUMP_DIR로 이동할 수 있습니다.

브릿지 인스턴스 준비 브릿지 인스턴스를 준비하려면 Perl이 데이터베이스에 연결할 수 있도록 Perl DBI와 Oracle DBD

모듈이 설치되어 있어야 합니다. 아래 명령을 사용하여 모듈이 설치되었는지 확인할 수 있습니다.

$perl -e 'use DBI; print $DBI::VERSION,"\n";'

$perl -e 'use DBD::Oracle; print $DBD::Oracle::VERSION,"\n";'

모듈이 아직 설치되지 않은 경우, 아래 절차에 따라 설치한 후 진행하십시오.

1. Oracle 웹사이트에서 Oracle Database Instant Client를 다운로드하여 ORACLE_HOME에 압축을

풉니다.

2. 환경 변수를 설정합니다 (아래 예 참조).

Page 24: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 24 / 38

$ export ORACLE_BASE=$HOME/oracle $ export ORACLE_HOME=$ORACLE_BASE/instantclient_11_2 $ export PATH=$ORACLE_HOME:$PATH $ export TNS_ADMIN=$HOME/etc $ export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH

10. DBD::Oracle을 다운로드하여 압축을 풉니다 (아래 예 참조).

$ wget http://www.cpan.org/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.74.tar.gz $ tar xzf DBD-Oracle-1.74.tar.gz $ $ cd DBD-Oracle-1.74

11. DBD::Oracle을 설치합니다 (아래 예 참조).

$ mkdir $ORACLE_HOME/log $ perl Makefile.PL $ make $ make install

파일을 Amazon RDS 인스턴스로 전송하기 파일을 Amazon RDS 인스턴스로 전송하려면 실제 데이터베이스보다 스토리지가 두 배 큰 Amazon

RDS 인스턴스가 필요한데, 그 이유는 데이터베이스와 Oracle Data Pump 덤프 파일용 공간이

필요하기 때문입니다. 가져오기가 완료되면 공간을 활용할 수 있도록 덤프 파일을 삭제할 수

있습니다. Amazon RDS 인스턴스는 데이터 마이그레이션 전용으로만 사용하는 것이 좋습니다.

데이터 가져오기가 완료되면, 데이터 마이그레이션 인스턴스의 스냅샷을 이용하여 적정량의

스토리지가 있는 새로운 Amazon RDS 인스턴스를 만들고 데이터 마이그레이션 인스턴스는 폐기할

수 있습니다. 데이터 마이그레이션을 위해 단일 Availability Zone 인스턴스를 사용하는 것이

좋습니다.

아래 예는 파일을 Amazon RDS 인스턴스로 전송하는 기본 Perl 스크립트를 보여주고 있습니다.

필요 시 내용을 변경합니다. 이 스크립트는 단일 쓰레드로 실행하기 때문에 소량의 네트워크

대역폭만 사용합니다. Amazon RDS 인스턴스로 보다 빨리 전송하기 위해 여러 스크립트

인스턴스를 병렬로 실행할 수 있지만, 덮어쓰기 및 데이터 손상이 발생하지 않도록 프로세스당 한

개의 파일만 로드해야 합니다. 여러 브릿지 인스턴스를 사용했을 경우에는 모든 인스턴스의

스크립트를 병렬로 실행할 수 있으며, 그러면 Amazon RDS 인스턴스에 대한 데이터 전송 속도가

빨라집니다.

Page 25: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 25 / 38

# RDS instance info my $RDS_PORT=4080; my $RDS_HOST="myrdshost.xxx.us-east-1-devo.rds-dev.amazonaws.com"; my $RDS_LOGIN="orauser/orapwd"; my $RDS_SID="myoradb";

my $dirname = "DATA_PUMP_DIR"; my $fname = $ARGV[0];

my $data = “dummy”; my $chunk = 8192;

my $sql_open = "BEGIN perl_global.fh := utl_file.fopen(:dirname, :fname, 'wb', :chunk); END;"; my $sql_write = "BEGIN utl_file.put_raw(perl_global.fh, :data, true); END;"; my $sql_close = "BEGIN utl_file.fclose(perl_global.fh); END;"; my $sql_global = "create or replace package perl_global as fh utl_file.file_type; end;"; my $conn = DBI- >connect('dbi:Oracle:host='.$RDS_HOST.';sid='.$RDS_SID.';port='.$RDS_PORT,$RDS_LOGIN, '') || die ( $DBI::errstr . "\n") ;

my $updated=$conn->do($sql_global); my $stmt = $conn->prepare ($sql_open); $stmt->bind_param_inout(":dirname", \$dirname, 12); $stmt->bind_param_inout(":fname", \$fname, 12); $stmt->bind_param_inout(":chunk", \$chunk, 4); $stmt->execute() || die ( $DBI::errstr . "\n");

open (INF, $fname) || die "\nCan't open $fname for reading: $!\n"; binmode(INF); $stmt = $conn->prepare ($sql_write); my %attrib = ('ora_type’,’24’); my $val=1; while ($val > 0) {

$val = read (INF, $data, $chunk); $stmt->bind_param(":data", $data , \%attrib); $stmt->execute() || die ( $DBI::errstr . "\n"); };

die "Problem copying: $!\n" if $!; close INF || die "Can't close $fname: $!\n";

Page 26: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 26 / 38

$stmt = $conn->prepare ($sql_close); $stmt->execute() || die ( $DBI::errstr . "\n");

아래 쿼리를 사용하여 DBMS_DATAPUMP 디렉터리에서 파일 목록을 확인할 수 있습니다.

SELECT * from

table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR'));

모든 파일이 Amazon RDS 인스턴스로 전송되고 나면, DBA 사용자 자격으로 Amazon RDS

데이터베이스에 연결하여 DBMS_DATAPUMP를 사용하는 PL/SQL 스크립트로 작업을 제출함으로써

파일을 데이터베이스로 가져옵니다 (아래 PL/SQL 스크립트 참조). 필요 시 내용을 변경합니다.

declare h1 NUMBER;

begin h1 := dbms_datapump.open (operation => 'IMPORT', job_mode

=> 'FULL', job_name => 'REINVIMP', version => 'COMPATIBLE');

dbms_datapump.set_parallel(handle => h1, degree => 8); dbms_datapump.add_file(handle => h1, filename =>

'IMPORT.LOG', directory => 'DATA_PUMP_DIR', filetype => 3); dbms_datapump.set_parameter(handle => h1, name =>

'KEEP_MASTER', value => 0); dbms_datapump.add_file(handle => h1, filename =>

'reinvexp1%U.dmp', directory => 'DATA_PUMP_DIR', filetype => 1);

dbms_datapump.add_file(handle => h1, filename => 'reinvexp2%U.dmp', directory => 'DATA_PUMP_DIR', filetype => 1);

dbms_datapump.add_file(handle => h1, filename => 'reinvexp3%U.dmp', directory => 'DATA_PUMP_DIR', filetype => 1);

dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1);

dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC');

dbms_datapump.set_parameter(handle => h1, name => 'REUSE_DATAFILES', value => 0);

dbms_datapump.set_parameter(handle => h1, name => 'SKIP_UNUSABLE_INDEXES', value => 0);

Page 27: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 27 / 38

dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0);

dbms_datapump.detach(handle => h1); end; /

작업이 완료되면 Amazon RDS 데이터베이스를 점검하여 모든 데이터를 성공적으로 가져왔는지 확인합니다. 이 시점에 UTL_FILE.FREMOVE를 사용하여 모든 덤프 파일을 삭제하여 디스크 공간을 회수할 수 있습니다.

외부 테이블을 이용한 데이터 마이그레이션 Oracle 외부 테이블은 Oracle Database의 한 기능으로서 플랫 파일에 있는 데이터를 마치 Oracle

테이블 파일처럼 쿼리할 수 있도록 지원합니다. AWS로 데이터 마이그레이션을 위해 Oracle 외부 데이터를 사용하는 프로세스는 Oracle Data Pump에서 사용하는 프로세스와 거의 동일합니다.

Oracle Data Pump에 기반한 방법은 대규모 데이터베이스 마이그레이션에 보다 적합합니다. 외부 테이블 방법은 현재 프로세스에서 이 방법을 사용하고 있고, Oracle Data Pump 기반 방법으로 전환을 원치 않을 경우에 유용합니다. 주요 절차는 다음과 같습니다.

1. 외부 테이블 파일을 RDS DATA_PUMP_DIR로 이동합니다.

2. 로드된 파일을 이용하여 외부 테이블을 작성합니다.

3. 외부 테이블의 데이터를 데이터베이스 테이블로 가져옵니다.

Data Pump 기반 방법과 마찬가지로, 데이터 파일 크기에 따라 파일을 온프레미스 서버에서 RDS

DATA_PUMP_DIR에 직접 기록하는 방법 또는 Amazon EC2 브릿지 인스턴스를 이용하는 방법 중에서 선택할 수 있습니다. 파일 크기가 대규모이고 브릿지 인스턴스 이용 방식을 선택한 경우,

Data Pump 기반 마이그레이션에서 설명한 것처럼 Tsunami UDP 또는 WAN 액셀러레이터는 물론 파일 압축 및 암호화 기능을 사용하는 것이 좋습니다.

Oracle 외부 테이블에 관한 자세한 내용은 Oracle 설명서의 외부 테이블 개념 부분을 참조하십시오.

Oracle RMAN을 이용한 데이터 마이그레이션 전체 데이터베이스를 마이그레이션할 계획이고 대상 데이터베이스가 Amazon EC2의 자체 관리형인 경우, 데이터 마이그레이션을 위해 Oracle RMAN을 사용할 수 있습니다. Oracle Data Pump를 이용한 데이터 마이그레이션이 Oracle RMAN을 통한 데이터 마이그레이션보다 빠르고 유연하지만,

아래의 경우에는 Oracle RMAN이 더 좋은 옵션입니다.

1. Amazon S3에 이용 가능한 RMAN 백업이 이미 있는 경우.

2. 데이터베이스가 매우 크고 (5TB 이상) AWS Import/Export를 이용할 계획인 경우.

3. AWS 데이터베이스로 전환하기 전에 많은 증분 데이터 변경 작업이 필요한 경우.

Page 28: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 28 / 38

참고: 이 방법은 Amazon EC2에만 사용할 수 있습니다. 대상 데이터베이스가 Amazon RDS인

경우에는 이 방법을 사용할 수 없습니다.

주요 절차는 다음과 같습니다.

4. RMAN을 사용하여 원본 데이터베이스의 전체 백업을 만듭니다.

5. 파일을 암호화하고 압축합니다.

6. 가장 적합한 방법으로 파일을 AWS로 전송합니다.

7. RMAN 백업을 대상 데이터베이스에 복원합니다.

8. 원본의 증분 백업을 캡처하고 전환을 수행할 수 있을 때까지 그 내용을 대상 데이터베이스에

적용합니다.

RMAN을 사용하여 원본 데이터베이스의 전체 백업 만들기 RMAN을 사용하여 원본 데이터베이스의 백업을 만드는 방법:

$ rman target=/

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; RMAN> BACKUP DATABASE PLUS ARCHIVELOG

압축 및 암호화 옵션에 대한 라이선스를 보유하고 있을 경우, RMAN 백업이 이미 암호화된 압축

파일로 만들어져 있습니다. 그렇지 않으면 백업 파일을 만든 후에, ZIP, 7-Zip, GZIP 등의 도구를

사용하여 파일을 암호화하고 압축해야 합니다. 모든 후속 작업은 대상 데이터베이스를 실행하는

서버에서 발생합니다.

파일을 AWS로 전송하기 데이터베이스 크기와 마이그레이션에 사용할 시간에 따라 파일을 AWS에 전송하는 최적의 방법을

선택할 수 있습니다. 100 GB ~ 5 TB 사이의 중대형 데이터베이스의 경우 'Tsunami를 사용하여

파일을 EC2에 업로드하기'에서 설명한 바와 같이 Tsunami UDP가 최선의 옵션입니다. 타사의 상용

WAN 액셀러레이터 도구를 사용해서도 동일한 결과를 얻을 수 있습니다. 5 TB 이상의 대규모

데이터베이스의 경우 AWS Import/Export를 사용하는 것이 더 좋은 옵션이 될 수 있습니다. 더

작은 데이터베이스의 경우 Amazon S3 멀티파트 업로드 기능을 사용하면 간단하고 효율적으로

수행할 수 있습니다.

데이터를 AWS의 Oracle Database로 마이그레이션하기 데이터를 대상 데이터베이스로 마이그레이션하는 방법에는 두 가지가 있습니다. 새 데이터베이스를

만들어 RMAN 백업으로 복원하거나, 또는 RMAN 백업으로 복제 데이터베이스를 만들 수 있습니다.

복제 데이터베이스를 만드는 작업이 더 간편합니다.

Page 29: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 29 / 38

복제 데이터베이스를 만들려면, 전송된 파일을 Amazon EC2의 Oracle Database 인스턴스에 액세스할 수 있는 위치로 이동합니다. 대상 인스턴스를 NOMOUNT 모드로 시작합니다. 이제 RMAN을 사용하여 대상 데이터베이스에 연결합니다. 이 예에서는 원본 데이터베이스나 RMAN 카탈로그에 연결하지 않으므로 아래 명령을 사용합니다.

$ rman AUXILIARY /

DUPLICATE TARGET DATABASE TO DBONEC2 SPFILE NOFILENAMECHECK;

이 프로세스 소요 시간은 데이터베이스 크기 및 Amazon EC2 인스턴스 유형에 따라 달라집니다. 더 좋은 성능을 발휘하려면, RMAN 백업 파일을 위해 Amazon EBS 범용 (SSD) 볼륨을 사용합니다. SSD 볼륨 유형에 관한 자세한 내용은 'Amazon EBS 범용 (SSD) 볼륨 유형 소개'를 참조하십시오. 이 프로세스가 완료되면 RMAN에 완료 메시지가 표시되고, 이제 복제 인스턴스가 마련됩니다. 확인 후, RMAN 백업 파일이 포함된 Amazon EBS 볼륨을 삭제할 수 있습니다. 나중에 사용하기 위해 필요 시 삭제 전에 볼륨의 스냅샷을 만들어 놓는 것이 좋습니다.

AWS DMS를 이용한 데이터 복제 AWS DMS(AWS Database Migration Service)는 특정 시점의 대량 업로드, Change Data Capture(CDC)를 이용한 제로 다운타임 마이그레이션, 데이터 하위 집합만 마이그레이션 등 다수의 마이그레이션 및 복제 전략을 지원할 수 있습니다. AWS DMS는 Amazon EC2, Amazon RDS 및 온프레미스에 있는 원본 및 대상을 지원합니다. 클라이언트 설치가 필요 없기 때문에 이들 원본 및 대상 시스템의 모든 조합에 아래 절차가 동일하게 적용됩니다. 또한 AWS DMS는 Oracle과 Oracle 사이에 수행하는 것처럼 손쉽게 데이터베이스간 데이터 마이그레이션을 지원합니다.

아래 절차는 AWS DMS를 사용하여 최소한의 다운타임으로 Oracle 데이터베이스 간에 데이터를 마이그레이션하는 방법을 설명합니다.

1. 원본 데이터베이스에 보완 로깅(supplemental logging)을 사용하도록 설정되어 있는지 확인합니다.

2. 대상 데이터베이스를 만들고, 대상이 Amazon RDS에 있는 경우 데이터베이스 백업과 Multi-

AZ가 꺼져 있는지 확인합니다.

3. Oracle SQL Developer 또는 원하는 도구를 사용하여 스키마의 no-data 내보내기를 수행한 후, 스키마를 대상 데이터베이스에 적용합니다.

4. 대상에서 트리거, 외부 키, 보조 인덱스(옵션)을 비활성화합니다.

5. AWS DMS 복제 인스턴스를 만듭니다.

Page 30: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 30 / 38

6. 원본 및 대상 엔드포인트를 지정합니다.

7. 원본 테이블을 대상 테이블에 매핑하는 "기존 데이터 마이그레이션 및 지속적 변경 복사" 작업을 만듭니다 (기본 작업에 모든 테이블이 포함됩니다).

8. 작업을 시작합니다.

작업의 전체 로드 부분이 완료되면 트랜잭션이 안정 상태가 됩니다.

9. 트리거, 외부 키 및 보조 인덱스를 활성화합니다.

10. 백업과 Multi-AZ를 켭니다.

11. 원래의 원본 데이터베이스를 사용하는 모든 애플리케이션을 끕니다.

12. 최종 트랜잭션 흐름이 완전히 처리되도록 합니다.

13. AWS의 새 데이터베이스에서 임의 애플리케이션을 지정하고 마이그레이션된 데이터베이스 사용을 시작합니다.

AWS DMS 사용에 관한 자세한 내용은 AWS DMS 설명서를 참조하십시오.

Oracle GoldenGate를 이용한 데이터 복제 Oracle GoldenGate는 실시간 변경 데이터 캡처 및 복제 도구입니다. Oracle GoldenGate는 원본 데이터베이스의 가장 최근에 변경된 데이터를 포함하는 트레일 파일(trail file)을 만든 후 이 파일을 대상 데이터베이스로 푸시합니다. Oracle GoldenGate는 제로 다운타임 데이터 마이그레이션을 수행하기 위해 사용할 수 있습니다. 또한 연속 데이터 복제를 위해서도 사용할 수 있습니다. Oracle GoldenGate는 Amazon EC2에서 실행하는 Oracle용 Amazon RDS와 Oracle Database에 모두 적용할 수 있습니다.

아래 절차는 Oracle GoldenGate를 사용한 데이터 마이그레이션 방법을 보여줍니다.

1. Oracle GoldenGate Extract 프로세스가 첫 번째 로드를 위해 모든 기존 데이터를 추출합니다.

2. Oracle GoldenGate Pump 프로세스가 추출 데이터를 Amazon EC2에서 실행되는 Replicat 프로세스에 전송합니다.

3. Replicat 프로세스가 데이터를 대상 데이터베이스에 적용합니다.

4. 첫 번째 로드 후에 프로세스가 계속 실행되어 변경된 데이터를 캡처하고 이를 대상 데이터베이스에 적용합니다.

GoldenGate Replicat는 전체 시스템의 핵심 부분입니다. Replicat 프로세스를 원본 환경의 서버에서 실행할 수 있지만, 성능 향상을 위해 AWS 내에 있는 Amazon EC2 인스턴스에서 실행할 것을 적극 권장합니다. 이 Amazon EC2 인스턴스를 GoldenGate 허브라고 하겠습니다. 여러 GoldenGate 허브를 보유할 수 있는데, 하나의 원본에서 여러 대상으로 데이터를 마이그레이션하는 경우에는 특히 그렇습니다.

Page 31: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 31 / 38

그림 7: 온프레미스에서 AWS의 Oracle Database로 Oracle GoldenGate 복제

Amazon EC2에 Oracle GoldenGate 허브 설치 Amazon EC2에 Oracle GoldenGate 허브를 만들려면, Oracle DBMS 11g 버전 11.2.0.3 및 Oracle

GoldenGate 11.2.1가 완전히 설치된 Amazon EC2 인스턴스를 만들어야 합니다. 또한 Oracle 패치

13328193도 적용하십시오. GoldenGate 설치에 관한 자세한 내용은 Oracle GoldenGate 설명서를

참조하십시오.

GoldenGate 허브는 원본 데이터베이스의 모든 데이터를 저장하고 처리하므로, 이 인스턴스에는

트레일 파일을 저장하기 위해 사용 가능한 충분한 스토리지가 있어야 합니다. GoldenGate

라이선스가 허용하는 가장 큰 인스턴스를 선택하는 것이 좋은 방법입니다. 최적의 가격과 성능을

원할 경우 Amazon EBS 범용 (SSD) 볼륨을 사용하십시오.

아래는 Amazon EC2 인스턴스에 GoldenGate 허브를 설치하는 프로세스입니다.

별칭을 만들려면 아래 항목을 tnsname.ora 파일에 추가하십시오. tnsname.ora 파일에 관한

자세한 내용은 Oracle GoldenGate 설명서를 참조하십시오.

$ cat /example/config/tnsnames.ora

TEST= (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=ec2-dns)(PORT=8200)) ) (CONNECT_DATA= (SID=ORCL) )

)

그 다음, Amazon EC2 명령줄 셸과 ggsci(GoldenGate 명령 인터프리터)를 사용하여 GoldenGate

디렉터리에 하위 디렉터리를 생성합니다. gg 디렉터리 아래에 하위 디렉터리가 생성되며 여기에는

매개 변수, 보고서 및 체크포인트 파일에 대한 디렉터리가 포함됩니다.

GoldenGate

허브

EC2의

Oracle

추출

펌프

Replicat

RDS

Oracle

Page 32: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 32 / 38

prompt$

cd

/gg

prompt$

./ggsci

GGSCI>

CREATE

SUBDIRS

Amazon EC2 명령줄 셸을 사용하여 GLOBALS 매개변수 파일을 만듭니다. 모든 GoldenGate

프로세스에 영향을 주는 매개 변수는 GLOBALS 매개 변수 파일에 정의되어 있습니다. 다음 예에서는 필요한 파일을 생성합니다.

prompt$

cd

$GGHOME

prompt$

vi

GLOBALS

CheckpointTable

oggadm1.oggchkpt

GoldenGate 허브 설치 및 구성의 마지막 단계는 관리자를 구성하는 것입니다. 다음 줄을 mgr.prm

파일에 추가하고 ggsci를 사용하여 관리자를 시작합니다.

PORT 8199

PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS

GGSCI> start mgr

이러한 단계를 완료했으면 GoldenGate 허브를 사용할 수 있습니다. 다음으로 원본 및 대상 데이터베이스를 설치합니다.

Oracle GoldenGate와 함께 사용할 원본 데이터베이스 설치 데이터를 AWS의 대상 데이터베이스에 복제하려면 GoldenGate용 원본 데이터베이스를 설치해야 합니다. 아래 절차를 사용하여 원본 데이터베이스 설치합니다. 이 절차는 Amazon EC2의 Oracle

Database와 Amazon RDS에서 모두 동일합니다.

1. compatible 매개 변수를 대상 데이터베이스와 동일하게 설정합니다 (대상이 Amazon RDS인 경우 11.2.0.3으로 설정합니다).

2. 보완 로깅을 활성화합니다.

3. GoldenGate 원본 데이터베이스를 위해 보관된 다시 실행 로그의 보존 기간을 설정합니다.

4. 원본 데이터베이스에 GoldenGate 사용자 계정을 만듭니다.

5. GoldenGate 사용자에게 필요한 권한을 부여합니다.

Page 33: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 33 / 38

Oracle GoldenGate와 함께 사용할 대상 데이터베이스 설치 GoldenGate 복제 작업을 수행하려면 대상 데이터베이스에서 아래 절차를 수행해야 합니다. 이

절차는 Amazon EC2의 Oracle Database와 Amazon RDS에서 모두 동일합니다.

1. 대상 데이터베이스에 GoldenGate 사용자 계정을 만듭니다.

2. GoldenGate 사용자에게 아래 예시된 필요 권한을 부여합니다.

CREATE SESSION ALTER SESSION CREATE CLUSTER CREATE INDEXTYPE CREATE OPERATOR CREATE PROCEDURE CREATE SEQUENCE CREATE TABLE CREATE TRIGGER CREATE TYPE SELECT ANY DICTIONARY CREATE ANY TABLE ALTER ANY TABLE LOCK ANY TABLE SELECT ANY TABLE INSERT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE

Oracle GoldenGate Extract 및 Replicat 유틸리티 작업 Oracle GoldenGate Extract와 Replicat 유틸리티는 함께 작동하여 트레일 파일을 사용한 증분형

트랜잭션 복제를 통해 원본 및 대상 데이터베이스의 동기 상태를 유지합니다. 원본 데이터베이스에

대해 발생하는 모든 변경 내용은 Extract에 의해 자동으로 감지되고 서식이 지정되어 GoldenGate

허브 온프레미스 또는 Amazon EC2 인스턴스의 트레일 파일로 전송됩니다. 초기 로드가 완료된

후에는 Replicat 유틸리티에서 이러한 파일과 복제본의 데이터를 읽어 대상 데이터베이스에

연속으로 복제합니다.

Oracle GoldenGate의 Extract 유틸리티 실행 Extract 유틸리티는 원본 데이터베이스에서 데이터를 검색 및 변환하고 트레일 파일로 출력합니다.

Extract는 트랜잭션 세부 정보를 메모리나 임시 디스크 스토리지의 대기열에 저장합니다.

트랜잭션이 원본 데이터베이스로 커밋되는 경우, Extract는 라우팅을 위해 모든 트랜잭션 세부

정보를 GoldenGate 허브 온프레미스 또는 Amazon EC2 인스턴스로 플러시하고 대상

데이터베이스로 플러시합니다.

Page 34: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 34 / 38

다음 프로세스에서는 Extract 유틸리티를 활성화하고 시작합니다.

첫째 GoldenGate 허브에 Extract 매개 변수 파일을 구성합니다. 다음 목록은 예제 Extract 매개

변수 파일을 보여 줍니다.

EXTRACT EABC SETENV (ORACLE_SID=ORCL) SETENV (NLSLANG=AL32UTF8)

USERID oggadm1@TEST, PASSWORD XXXXXX EXTTRAIL /path/to/goldengate/dirdat/ab IGNOREREPLICATES GETAPPLOPS TRANLOGOPTIONS EXCLUDEUSER OGGADM1 TABLE EXAMPLE.TABLE;

GoldenGate 허브에서 GoldenGate 명령줄 인터페이스(ggsci)를 실행합니다. 원본 데이터베이스에

로그인합니다. 다음 예는 로그인 형식을 보여 줍니다.

dblogin userid <user>@<db tnsname>

데이터베이스의 체크포인트 테이블을 추가합니다.

add checkpointtable Add transdata to turn on supplemental logging for the database table: add trandata <user>.<table>

또는 데이터베이스의 모든 테이블에 대해 보완 로깅을 사용하기 위해 transdata를 추가할 수도

있습니다.

add trandata <user>.*

ggsci 명령줄에서 다음 명령을 사용하여 Extract 유틸리티를 활성화합니다.

Page 35: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 35 / 38

add extract <extract name> tranlog, INTEGRATED tranlog, begin now add exttrail <path-to-trail-from-the param-file> extract <extractname-from-paramfile>, MEGABYTES Xm

Extract 유틸리티를 데이터베이스에 등록하여 보관 로그가 삭제되지 않도록 합니다. 이렇게 하면

필요할 경우 이전의 커밋되지 않은 트랜잭션을 복구할 수 있습니다. Extract 유틸리티를

데이터베이스에 등록하려면 다음 명령을 사용합니다.

register EXTRACT <extract process name>, DATABASE

Extract 유틸리티를 시작하려면 다음 명령을 사용합니다.

start <extract process name>

Oracle GoldenGate의 Replicat 유틸리티 실행 Oracle GoldenGate의 Extract 유틸리티는 트레일 파일의 트랜잭션 정보를 대상 데이터베이스로

푸시하는 데 사용됩니다.

다음 프로세스에서는 Replicat 유틸리티를 활성화하고 시작합니다.

먼저 GoldenGate 허브(온프레미스 또는 Amazon EC2 인스턴스)에서 Replicat 매개 변수 파일을

구성합니다. 다음 목록은 예제 Replicat 매개 변수 파일을 보여 줍니다.

REPLICAT RABC SETENV (ORACLE_SID=ORCL) SETENV (NLSLANG=AL32UTF8) USERID oggadm1@TARGET, password XXXXXX ASSUMETARGETDEFS MAP EXAMPLE.TABLE, TARGET EXAMPLE.TABLE;

그 다음, Oracle GoldenGate 명령줄 인터페이스(ggsci)를 시작합니다. 대상 데이터베이스에

로그인합니다. 다음 예는 로그인 형식을 보여 줍니다.

Page 36: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 36 / 38

dblogin userid <user>@<db tnsname>

ggsci 명령줄을 사용하여 체크포인트 테이블을 추가합니다. 사용자는 대상 테이블 스키마

소유자가 아니라 GoldenGate 사용자 계정이어야 합니다. 다음 예에서는 gg_checkpoint라는

체크포인트 테이블을 생성합니다.

add checkpointtable <user>.gg_checkpoint

Replicat 유틸리티를 활성화하려면 다음 명령을 사용합니다.

add replicat <replicat name> EXTTRAIL <extract trail file> CHECKPOINTTABLE <user>.gg_checkpoint

Replicat 유틸리티를 시작하려면 다음 명령을 사용합니다.

start <replicat name>

결론 이 백서에서는 Amazon EC2와 Amazon RDS 모두에서 Oracle Database를 AWS에 마이그레이션할

때 선호되는 방법을 설명하였습니다. 여러분의 비즈니스 요구와 마이그레이션 전략에 따라 여러

방법들을 조합하여 사용함으로써 데이터베이스 마이그레이션을 할 수도 있습니다. 최상의

마이그레이션 성능을 원할 경우 AWS에서 특히 Amazon EC2 인스턴스 및 Amazon EBS 범용 (SSD)

볼륨 유형을 위해 적절한 리소스 수준을 선택하는 것이 매우 중요합니다.

Page 37: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 37 / 38

추가 자료 AWS 서비스를 이용한 데이터 마이그레이션에 관한 추가 정보를 원할 경우 아래 자료를 참조하십시오.

AWS의 Oracle Database:

• Amazon EC2의 Oracle Database를 위한 고급 아키텍처 http://d0.awsstatic.com/enterprise-

marketing/Oracle/AWSAdvancedArchitecturesforOracleDBonEC2.pdf

• Amazon EC2의 Oracle 작업을 위한 운영 체제 선택 http://d0.awsstatic.com/whitepapers/choosing-os-for-oracle-workloads-on-ec2.pdf

• AWS의 Oracle Database를 위한 IOPS 요구 결정 http://d0.awsstatic.com/whitepapers/determining-iops-needs-for-oracle-database-on-aws.pdf

• AWS에서 Oracle Database를 실행하는 모범 사례 http://d0.awsstatic.com/whitepapers/best-practices-for-running-oracle-database-on-aws.pdf

• AWS 사례 연구: Amazon.com Oracle DB를 Amazon S3에 백업 http://aws.amazon.com/solutions/case-studies/amazon/

AWS의 Oracle

• http://aws.amazon.com/oracle/

• http://aws.amazon.com/rds/oracle/

AWS Database Migration Service (AWS DMS)

• http://aws.amazon.com/dms/

AWS의 Oracle에 관한 FAQ

• http://www.oracle.com/technetwork/topics/cloud/faq-098970.html

AWS의 Oracle 테스트 드라이브

• http://aws.amazon.com/solutions/global-solution-providers/oracle/labs/

AWS에서 Oracle 라이선싱

• http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf

Page 38: Oracle 데이터베이스를 · 2017-10-20 · Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략 페이지 4 / 38 데이터마이 그레이션전략

Amazon Web Services – Oracle 데이터베이스를 AWS로 마이그레이션하는 전략

페이지 38 / 38

AWS 서비스 세부 정보

• http://aws.amazon.com/products/

• http://aws.amazon.com/documentation/

• http://aws.amazon.com/whitepapers/

AWS 가격 정보

• http://aws.amazon.com/pricing/

• http://calculator.s3.amazonaws.com/index.html

© 2017, Amazon Web Services, Inc 또는 계열사. All rights reserved.

공지

본 문서는 정보 제공의 목적으로만 작성되었으며, 문서 발행일 현재 공급되는 AWS의 제품 및 실행 사례를 나타내었습니다. 고객들은 본 문서의 정보 및 AWS의 제품 또는 서비스 사용에 관하여 독자적인 평가를 수행할 책임이 있으며, 각 제품과 서비스는 어떠한 명시적 또는 암시적 보증 없이 "현재" 상태로 공급됩니다. 본 문서를 통해 AWS나 그 계열사, 공급자 또는 라이선스 제공자는 그 어떠한 보증이나 진술, 계약상 약정, 조건 또는 보장을 제시하지 않습니다. AWS가 그 고객에 대하여 갖는 책임은 AWS 계약으로 관장되며, 본 문서는 AWS와 고객 간 계약의 일부를 구성하거나 또는 그 내용을 변경하지 않습니다.