반응형
Ora2Pg는 “DDL만 만드는 도구”가 아니라
원래는 “DDL + 데이터 이행까지 전부 가능한 도구”다.
하지만 실무에서는 대부분 DDL과 데이터 이행을 분리해서 쓴다.
왜 그렇게 되는지, 현실 기준으로 단계별로 설명할게요.
1️⃣ Ora2Pg의 원래 정체부터 정리
Ora2Pg는 공식적으로 Oracle → PostgreSQL 마이그레이션 도구입니다.
이론적으로는 다음을 전부 할 수 있습니다.
- 스키마 (TABLE, INDEX, SEQUENCE)
- 제약조건 (PK, FK, UNIQUE, CHECK)
- VIEW
- FUNCTION / PROCEDURE
- 데이터 이행 (COPY / INSERT)
- 대용량 병렬 이행
- 검증 리포트
👉 즉, DDL + DATA 둘 다 가능한 도구가 맞습니다.
2️⃣ 그런데 왜 “DDL만 쓰는 경우”가 많아질까?
이게 실무 포인트입니다.
이유 1️⃣ DDL은 “변환”, 데이터는 “이관”
- DDL: 구조 변환 문제
- DATA: 운영 데이터 문제
👉 성격이 완전히 다릅니다.
그래서 보통 이렇게 나눕니다.
DDL → 개발/설계/검증 영역
DATA → 운영/이행/리스크 영역
이유 2️⃣ Oracle 11g 실데이터는 예외가 너무 많다
Ora2Pg가 데이터 이행을 할 때 가장 많이 터지는 것들:
- CLOB / BLOB
- DATE / TIMESTAMP timezone
- CHAR vs VARCHAR2 padding
- NUMBER(38,0) → bigint overflow
- 깨진 데이터 (암묵적 형변환)
- 트리거 / 시퀀스 의존 데이터
👉 DDL은 잘 나오는데, 데이터에서 계속 멈춤
이유 3️⃣ “한 방에 이행”은 실패 확률이 높다
ora2pg -t COPY -o data.sql
이렇게 하면:
- 10%에서 오류
- 다시 처음부터
- 원인 찾기 어려움
👉 운영 데이터에서는 거의 지뢰밭
3️⃣ 그래서 실무에서 가장 많이 쓰는 패턴
✅ 패턴 A (가장 흔함, 추천)
1. Ora2Pg → DDL만 생성
2. DDL 수작업 정리 (PK, surrogate, FK)
3. PostgreSQL 스키마 확정
4. 데이터 이행은 별도 전략
데이터 이행은:
- Ora2Pg (TABLE 단위)
- SQL*Plus → CSV → COPY
- pgloader
- 커스텀 스크립트
✅ 패턴 B (중소 규모, 개발 DB)
Ora2Pg로 DDL + DATA 한 번에
조건:
- 데이터 적음
- 장애 허용
- 재시도 가능
- 운영 아님
👉 개발/테스트 DB 전용
⚠️ 패턴 C (대용량 운영 DB)
DDL: Ora2Pg
DATA: 전용 이행 시나리오
- 테이블별 순서 관리
- FK 나중에
- 검증 쿼리 필수
- 롤백 계획 필수
4️⃣ Ora2Pg 데이터 이행을 “그래도” 쓰는 경우
다음 조건이면 Ora2Pg 데이터 이행도 현실적입니다.
- 테이블 수 적음 (100개 이하)
- LOB 거의 없음
- NUMBER 단순
- 트리거 의존 없음
- 다운타임 허용
이때는 보통:
ora2pg -t TABLE -o schema.sql
ora2pg -t COPY -o data.sql
또는
ora2pg -t TABLE,COPY
5️⃣ 실무에서 가장 안전한 권장 흐름 (정리)
⭐ Oracle 11g → PostgreSQL 기준 베스트 프랙티스
1️⃣ Ora2Pg로 DDL만 생성
2️⃣ PK / surrogate 전략 확정
3️⃣ FK는 일단 제거
4️⃣ PostgreSQL에 스키마 배포
5️⃣ 데이터 이행 (테이블 단위)
6️⃣ 데이터 검증
7️⃣ FK / INDEX 복구
👉 DDL과 DATA를 분리하는 게 안정성 최고
6️⃣ “Ora2Pg 하나로 끝내면 안 되냐?”에 대한 솔직한 답
- 이론적으로 가능
- 데모에서는 성공
- 운영에서는 거의 항상 추가 작업 발생
👉 그래서 실무에서는:
Ora2Pg는 “번역기”로 쓰고
데이터 이행은 “이사 계획”으로 따로 짠다
한 문장 요약
Ora2Pg는 DDL + 데이터 이행 모두 가능하지만,
운영 마이그레이션에서는 DDL만 사용하고
데이터는 별도 이행 전략을 쓰는 게 일반적이다.
반응형
'실험실 > db이행' 카테고리의 다른 글
| 서버환경 이슈 (0) | 2026.01.20 |
|---|---|
| 서버 데이터 psql insert (0) | 2026.01.16 |
| 이슈 (1) | 2026.01.15 |
| 실행모델, Job구조, 상태모델, 보안모델, 결과물 스펙 등 결정사항 (0) | 2026.01.14 |
| 핵심 유즈케이스 (0) | 2026.01.14 |
댓글