목록으로

Programming Notes

Oracle에서 Azure DB for PostgreSQL로의 제로 다운타임 마이그레이션

공동 작성자: Maxim Lukiyanov, Microsoft Azure Postgres 부문 수석 PM 매니저 Edward Bell, Striim 글로벌 기술 제휴 및 솔루션 부문 시니어 디렉터 Matthew Burrows, Microsoft 데이터베이스 마이그레이션 및 현대화 부문 디렉터

미션 크리티컬 애플리케이션을 현대화하려는 기업에게 Oracle 워크로드를 Microsoft Azure로 이전하는 것은 완전 관리형 클라우드 네이티브 데이터 아키텍처의 이점을 실현하기 위한 핵심적인 단계입니다. Azure Database for PostgreSQL은 레거시 인프라 관리의 운영 오버헤드 없이 내장된 고가용성, 탄력적 확장성, 엔터프라이즈급 보안, 그리고 Azure의 분석 및 AI 에코시스템과의 통합 기능을 제공합니다.

많은 팀이 직면한 과제는 가동 중지 시간(Downtime), 리스크 또는 데이터 드리프트(Data Drift)를 초래하지 않으면서 어떻게 수년간 쌓인 Oracle의 운영 데이터를 Azure Database for PostgreSQL로 마이그레이션하느냐는 것입니다.

Microsoft와 Striim은 이 문제를 함께 해결합니다. Striim의 로그 기반 변경 데이터 캡처(CDC) 기술은 모든 Oracle 트랜잭션을 실시간으로 Azure Database for PostgreSQL에 지속적으로 스트리밍하여 데이터 손실 없는 마이그레이션, 지속적인 검증, 그리고 라이브 애플리케이션에 미치는 영향의 최소화를 실현합니다.

Microsoft 무제한 데이터베이스 마이그레이션 프로그램(Microsoft Unlimited Database Migration Program)의 일환으로, Striim은 엔터프라이즈급 CDC 기술, 아키텍처 베스트 프랙티스, 그리고 파트너의 전문 지식을 결합하여 고객이 Azure로 향하는 여정을 가속화하고 위험을 줄일 수 있도록 최적화되어 있습니다. 이 공동 솔루션은 기업이 확신을 가지고 Azure에서 더 빠르게 현대화를 추진하는 동시에, AI 지원 아키텍처와 장기적인 혁신을 위한 기반을 마련할 수 있도록 지원합니다.

이 튜토리얼에서는 Striim을 사용한 Oracle에서 Azure Database for PostgreSQL로의 마이그레이션 아키텍처, 배포 단계 및 베스트 프랙티스를 살펴봅니다.

지속적인 마이그레이션을 위해 Striim을 사용하는 이유

Microsoft와 Striim의 전략적 파트너십을 통해 기존 데이터베이스의 데이터를 Azure로 실시간 복제함으로써 제로 다운타임 온라인 마이그레이션이 가능해졌습니다. 이 '무제한 데이터베이스 마이그레이션 프로그램'을 통해 고객은 추가 비용 없이 필요한 만큼 많은 데이터베이스를 마이그레이션할 수 있도록 Striim 라이선스를 제한 없이 제공받습니다.

프로그램의 주요 특징은 다음과 같습니다:

  • SQL Server, Oracle, MySQL, PostgreSQL, Azure SQL 등 다양한 환경에서 제로 다운타임, 제로 데이터 손실 마이그레이션 지원.
  • 관계형 및 비관계형 시스템 전반의 이기종 미션 크리티컬 워크로드 지원.
  • 마이그레이션 후 분석 및 머신러닝(ML)에 즉시 활용 가능한 실시간 AI 지원 데이터 파이프라인 구축.

Striim을 사용하면 데이터가 로그 기반 CDC를 통해 지속적으로 이동하며, Oracle 트랜잭션 로그에서 직접 읽어 모든 Insert, Update, Delete 작업을 실시간으로 Azure에 복제합니다. 이를 통해 운영 시스템에 미치는 영향을 최소화하면서 마이그레이션 중에도 완전한 데이터 일관성을 유지할 수 있습니다.

아키텍처 개요

공동 권장 아키텍처는 다음과 같이 구성됩니다:

  1. 소스(Source): 기존 Oracle 인스턴스 (온프레미스 또는 타 클라우드 환경).
  2. 처리 계층(Processing Layer): 저지연 및 보안 데이터 이동을 위해 Azure에 배포된 Striim.
  3. 타겟(Target): Azure Database for PostgreSQL (유연한 서버).

연결은 표준 Oracle 포트(1521) 및 PostgreSQL 포트(5432)를 통해 이루어지지만, 고객이 설정한 포트를 사용할 수도 있습니다. Azure 고객은 Private Link, VNet 및 기타 기본 Azure 네트워킹 제어 기능을 사용하여 마이그레이션 전 과정에서 트래픽을 안전하게 보호할 수 있습니다.

1단계: Oracle 소스 준비

복제를 시작하기 전에 리두 로그(Redo logs)에 접근할 수 있고 Striim이 CDC 사용자를 이용할 수 있도록 Oracle을 구성해야 합니다.

Striim은 Oracle에 대해 여러 CDC 방식을 지원합니다:

  • Oracle Reader (LogMiner): Oracle의 LogMiner API를 사용하여 리두 로그를 읽습니다. 기본 방식입니다.
  • OJet: Oracle 21c 또는 대량의 리두 로그가 발생하는 대규모 워크로드에 사용되는 고성능 CDC 방식입니다.
  • GoldenGate trail files: Oracle GoldenGate가 이미 사용 중인 경우, 소스 데이터베이스에 직접 연결하지 않고 기존 GoldenGate 트레일 파일을 읽을 수 있습니다.

모든 옵션은 로그 기반이므로 CDC 오버헤드는 대개 1~5% 이내의 낮은 수준으로 유지됩니다.

방식을 선택한 후, Striim이 JDBC 리스너 포트(기본 1521)를 통해 Oracle에 연결할 수 있는지 확인하십시오. Oracle이 온프레미스에 있는 경우, 일반적으로 VPN/ExpressRoute 또는 Striim에서 Oracle 네트워크로의 SSH 터널/점프 호스트를 구성해야 CDC 사용자를 생성할 수 있습니다.

CDC 사용자 생성 (예시)

Oracle 사용자로서 Striim 전용 계정을 생성하고 리두 로그 접근에 필요한 권한을 부여합니다(정확한 권한은 버전 및 CDC 방식에 따라 다를 수 있습니다). 최신 지침은 Striim의 Oracle CDC 문서를 참조하십시오.

CREATE USER striim_user IDENTIFIED BY "StrongPassword!";

GRANT CONNECT, RESOURCE TO striim_user;

-- 리두/로그 뷰에 대한 권한 예시 (보안 및 Striim 문서에 따라 조정 필요)
GRANT SELECT ANY TRANSACTION TO striim_user;
GRANT SELECT ON V_$LOG TO striim_user;
GRANT SELECT ON V_$LOGFILE TO striim_user;
GRANT SELECT ON V_$ARCHIVED_LOG TO striim_user;
GRANT SELECT ON V_$DATABASE TO striim_user;

사용자 생성과 네트워킹 설정이 완료되면, Striim에서 다음과 같은 JDBC URL을 사용하여 Oracle에 연결하도록 구성할 수 있습니다. jdbc:oracle:thin:@//<oracle-host>:1521/<service_name>

2단계: Azure Database for PostgreSQL 준비

타겟 측에서는 Azure Database for PostgreSQL을 프로비저닝하고, 데이터 이동을 시작하기 전에 스키마, 네트워킹 및 권한이 준비되어 있어야 합니다.

스키마 생성

데이터 이동 파이프라인을 시작하기 전에 Oracle 소스에 대응하는 테이블을 Azure Database for PostgreSQL에 생성해야 합니다. 이는 다음 방법으로 가능합니다:

  • Striim의 스키마 변환 유틸리티 (CLI): Oracle 메타데이터를 기반으로 타겟 시스템용 SQL DDL을 생성합니다.
  • Striim의 마법사 기반 스키마 생성: 파이프라인 구성 중에 Striim UI에서 직접 타겟 테이블을 생성합니다.
  • 외부 도구: 기존의 스키마 마이그레이션 유틸리티나 커스텀 DDL을 사용할 수도 있습니다.

권한 설정

타겟 테이블에 대한 쓰기 권한이 있는 Striim용 Azure DB for PostgreSQL 사용자를 생성합니다. 예시는 다음과 같습니다.

CREATE USER striim_user WITH PASSWORD 'strongpassword';

GRANT INSERT, UPDATE, DELETE, SELECT ON ALL TABLES IN SCHEMA public TO striim_user;

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT INSERT, UPDATE, DELETE, SELECT ON TABLES TO striim_user;

Striim은 Azure Database for PostgreSQL에 대해 Database Writer 컴포넌트를 실행할 때 이 사용자를 사용합니다.

3단계: 마이그레이션 파이프라인 구축

완벽한 Oracle에서 Azure Database for PostgreSQL로의 마이그레이션은 일반적으로 다음과 같은 3단계로 진행됩니다.

  1. 스키마 마이그레이션 – Azure Database for PostgreSQL에 동일한 테이블과 객체를 생성합니다.
  2. 초기 로드(Initial Load) – Oracle의 과거 데이터를 Azure로 대량 로드합니다.
  3. 변경 데이터 캡처(CDC) – 실시간 트랜잭션을 지속적으로 스트리밍하여 운영 전환(Cutover) 전까지 소스와 타겟의 동기화를 유지합니다.

초기 로드 및 지속적인 스트림

위의 방법 중 하나로 스키마가 준비되면, Striim이 먼저 과거 데이터를 대량 로드한 다음 지속적인 CDC로 전환하도록 구성할 수 있습니다.

초기 로드 단계에서 Striim은 Database Reader 컴포넌트를 사용하여 Oracle에서 전체 테이블을 추출하고, Database Writer 컴포넌트를 사용하여 이를 Azure Database for PostgreSQL에 로드합니다. Striim 애플리케이션은 드래그 앤 드롭 인터페이스, 마법사 또는 아래와 같은 텍스트 기반 인터페이스를 통해 빌드할 수 있습니다.

Database Writer는 사용자 정의 배치 정책(Batch Policy)을 사용하여 데이터 쓰기 방식을 제어합니다. 기본값(예: EventCount:1000, Interval:60s)으로 설정하면, Striim은 1,000개의 이벤트가 쌓이거나 60초가 경과할 때 중 먼저 도달하는 시점에 PostgreSQL에 데이터를 기록합니다.

TQL을 사용한 초기 로드 구성의 개념적 예시는 다음과 같습니다.

CREATE SOURCE OracleInitialLoadReader USING DatabaseReader (
    Username:'striim_user',
    Password:'strongpassword',
    ConnectionURL:'jdbc:oracle:thin:@//oracle-host:1521/ORCL',
    Tables:'HR.EMPLOYEES'
);

CREATE TARGET PostgreSQLInitialLoadWriter USING DatabaseWriter (
    Username:'striim_user',
    Password:'strongpassword',
    ConnectionURL:'jdbc:PostgreSQL://pg-host:5432/mydb',
    Mode:'Insert',
    BatchPolicy:'EventCount:10000,Interval:30s'
)
INPUT FROM OracleInitialLoadReader;

지속적인 CDC 스트림

초기 로드가 완료되면 Striim은 전환 시점까지 새로운 Oracle 트랜잭션을 실시간으로 반영하는 CDC 파이프라인으로 전환합니다. CDC 파이프라인은 Oracle CDC Reader(Oracle Reader, OJet 또는 GoldenGate trail reader)와 Azure Database for PostgreSQL을 타겟으로 하는 Database Writer를 사용합니다.

TQL에서의 CDC 예시는 다음과 같습니다.

CREATE SOURCE OracleCDCReader USING OracleReader (
    Username:'striim_user',
    Password:'strongpassword',
    ConnectionURL:'jdbc:oracle:thin:@//oracle-host:1521/ORCL',
    Tables:'HR.EMPLOYEES'
);

CREATE TARGET PostgreSQLCDCWriter USING DatabaseWriter (
    Username:'striim_user',
    Password:'strongpassword',
    ConnectionURL:'jdbc:PostgreSQL://pg-host:5432/mydb',
    Mode:'UpdateOrInsert',
    BatchPolicy:'EventCount:1000,Interval:60s'
)
INPUT FROM OracleCDCReader;

데이터 손실을 방지하려면 초기 로드에서 지속적 복제로 전환할 때 Striim 문서의 시퀀싱 가이드라인을 준수해야 합니다.

컷오버 (전환)

Azure Database for PostgreSQL 환경이 완전히 동기화되고 Oracle에서 애플리케이션을 이전할 준비가 되면 다음을 수행합니다.

  1. Oracle 쓰기 중단: 소스 데이터베이스에 대한 애플리케이션 쓰기 작업을 일시적으로 중지합니다.
  2. 레코드 수 검증: Oracle과 Azure Database for PostgreSQL 간의 행 수(및 필요 시 체크섬이나 샘플링 검사)를 비교합니다. Striim은 이를 자동으로 수행하는 Validata라는 새로운 도구를 출시했습니다. 자세한 내용은 문의하기를 통해 확인하십시오.
  3. 애플리케이션 트래픽 리다이렉션: 애플리케이션이 이제 Azure PostgreSQL 인스턴스를 가리키도록 연결 문자열을 업데이트합니다.

Striim의 CDC가 소스와 타겟을 실시간으로 동기화 상태로 유지하므로 컷오버 윈도우는 대개 매우 짧으며, 최종 사용자의 가동 중지 시간을 최소화하거나 아예 없앨 수 있습니다.

변환 및 스마트 데이터 파이프라인 추가

단순한 일대일 복제를 넘어, Striim은 연속 SQL 쿼리나 커스텀 Java 프로세서를 사용하여 전송 중인 데이터를 보강, 변환 및 검증할 수 있도록 지원합니다. 예를 들어 감사를 위해 메타데이터를 추가할 수 있습니다.

SELECT *, CURRENT_TIMESTAMP() AS event_time, OpType() AS operation FROM SQLServerStream;

이러한 스마트 데이터 파이프라인을 사용하면 별도의 ETL 작업 없이도 스트림 내 변환(예: 중복 제거, 검증 또는 데이터 보강)이 가능하며, 현대화 과정을 하나의 연속적인 흐름으로 간소화할 수 있습니다.

성능 기대치

Striim과 Microsoft의 공동 테스트 결과는 다음과 같습니다.

  • 1TB 기록 데이터 로드: 일반적으로 4~6시간 내에 완료되며, 초기 로드 시간을 단축하기 위해 추가적인 성능 튜닝이 가능합니다.
  • CDC 복제 지연 시간: Insert, Update, Delete 작업에 대해 평균 1초 미만(Sub-second)의 지연 시간을 기록합니다.

성능은 스키마 복잡성, 하드웨어 및 네트워크 구성에 따라 달라집니다. 최적의 결과를 얻으려면 다음을 권장합니다.

  • 타겟 데이터베이스와 동일한 Azure 리전에 Striim을 배포하십시오.
  • 프라이빗 네트워킹을 사용하십시오.
  • 피크 시간대의 CDC 처리량을 감당할 수 있도록 충분한 CPU와 메모리를 할당하십시오.

지원 및 활성화

Microsoft 무제한 데이터베이스 마이그레이션 프로그램은 마이그레이션 프로세스 전반에 걸쳐 고객에게 Striim의 현장 전문 지식에 대한 직접적인 접근 권한을 제공하기 위해 설계되었습니다.

시작부터 끝까지 다음 사항을 기대할 수 있습니다.

  • 설치 키트 및 가이드를 포함한 온보딩 및 지속적인 지원.
  • 상위 단계의 서비스 패키지 이용 가능.
  • 문제 해결 및 복제 과정에서의 지속적인 지원을 위한 Striim으로의 직접적인 에스컬레이션 경로.
  • 파트너 참여를 위한 ECIF 지원, 컷오버 또는 주말 라이브 대기, SOW 승인을 간소화하기 위한 사전 승인된 서비스 블록 등 전문 서비스 및 자금 지원 유연성.

이러한 리소스를 통해 Oracle에서 Azure DB for PostgreSQL로의 마이그레이션은 초기 준비 단계부터 컷오버 이후 운영에 이르기까지 Microsoft와 Striim의 결합된 팀으로부터 완전한 지원을 받게 됩니다.

일회성 마이그레이션이든 지속적인 하이브리드 복제이든 관계없이 Striim의 CDC 엔진과 Azure PostgreSQL Database의 결합은 모든 트랜잭션이 무결성을 유지하며 전달되도록 보장합니다. 지금 Microsoft 담당자를 통해 Striim과 연결하여 현대화 여정을 시작하십시오.