본문 바로가기
실험실/db이행

서버환경 이슈

by 죄니안죄니 2026. 1. 20.
반응형

 

PostgreSQL 12와 ora2pg를 Linux 7 환경에서 사용할 때 발생할 수 있는 주요 문제점

PostgreSQL 12 + ora2pg 주요 이슈


1. 호환성 문제

  • PostgreSQL 12는 2019년 릴리즈로 비교적 오래된 버전입니다
  • ora2pg 최신 버전은 잘 지원하지만, 일부 기능 제약이 있을 수 있습니다
  • PostgreSQL 12의 일부 deprecated 기능이나 변경된 문법 처리 필요


2. Linux 7 (CentOS/RHEL 7) 관련 이슈
Perl 모듈 의존성:

  • ora2pg는 Perl로 작성되어 있어 여러 Perl 모듈 필요
  • Linux 7의 기본 저장소에 없는 모듈이 있을 수 있음
  • DBD::Oracle, DBD::Pg 등의 설치가 까다로울 수 있음


Oracle Instant Client:

Oracle과 연결하려면 Oracle Instant Client 필요
Linux 7에서 호환되는 버전 선택 필요
라이브러리 경로 설정(LD_LIBRARY_PATH) 필수
3. 주요 기술적 문제점
데이터 타입 변환:

- NUMBER → NUMERIC/INTEGER 변환 시 정밀도 이슈
- DATE → TIMESTAMP 변환 시 타임존 문제
- CLOB/BLOB → TEXT/BYTEA 변환 시 크기 제한
- VARCHAR2(4000) → VARCHAR 길이 제한 차이

시퀀스 (Sequence):

  • Oracle의 시퀀스 문법과 PostgreSQL 12의 차이
  • PostgreSQL 10+에서는 IDENTITY 컬럼 지원되지만 ora2pg가 이를 제대로 변환 못할 수 있음

 

함수/프로시저:

  • PL/SQL → PL/pgSQL 자동 변환의 한계
  • 패키지(Package) 개념이 PostgreSQL에 없음
  • 내장 함수 차이 (예: NVL vs COALESCE, SYSDATE vs NOW())


트리거:

  • :NEW, :OLD 문법 차이
  • FOR EACH ROW 트리거 변환 시 로직 검증 필요


4. 성능 관련
대용량 데이터 마이그레이션:

  • COPY 명령 사용 시 메모리 이슈
  • 배치 크기 조정 필요 (DATA_LIMIT, BLOB_LIMIT)
  • 인덱스 생성 전략 (마이그레이션 후 생성 권장)


병렬 처리:

  • PARALLEL_TABLES 옵션 사용 시 서버 리소스 고려
  • Linux 7의 커널 파라미터 튜닝 필요


5. PostgreSQL 12 특정 이슈

  • 파티셔닝: PostgreSQL 12의 파티셔닝은 개선되었지만 Oracle의 파티셔닝과 완전히 다름
  • JSON 지원: PostgreSQL 12에서 JSON 처리 개선되었으나 Oracle JSON 함수와 매핑 필요
  • CTE (WITH 구문): PostgreSQL 12부터 CTE 최적화 변경 - 성능 영향 가능


6. 실무 권장 사항

# ora2pg 설정 파일 주요 체크 포인트

# 1. Oracle 연결
ORACLE_HOME=/usr/lib/oracle/19.8/client64
ORACLE_DSN=dbi:Oracle:host=hostname;sid=ORCL;port=1521

# 2. PostgreSQL 버전 명시
PG_VERSION=12

# 3. 데이터 타입 변환 커스터마이징
DATA_TYPE=NUMBER:numeric,DATE:timestamp

# 4. 스키마 변환 순서
TYPE=TABLE,SEQUENCE,VIEW,FUNCTION,PROCEDURE,TRIGGER,PACKAGE

# 5. 성능 튜닝
PARALLEL_TABLES=4
ORACLE_COPIES=2
DATA_LIMIT=10000


7. Linux 7 환경 설정

# PostgreSQL 12 저장소 추가
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# PostgreSQL 12 설치
sudo yum install -y postgresql12-server postgresql12-contrib

# ora2pg 설치
sudo yum install -y perl-DBD-Pg perl-DBD-Oracle ora2pg


추천 대응 방안

  1. 테스트 환경 구축: 운영 전 동일한 Linux 7 + PostgreSQL 12 환경에서 충분한 테스트
  2. 점진적 마이그레이션: DDL → 데이터 → 함수/프로시저 순으로 단계별 진행
  3. 변환 스크립트 검증: ora2pg가 생성한 SQL 파일을 반드시 수동 검토
  4. 롤백 계획: 마이그레이션 실패 시 복원 절차 준비
반응형

'실험실 > db이행' 카테고리의 다른 글

postgreSQL 컨테이너로 올릴지  (0) 2026.01.20
서버구축실패 요약  (0) 2026.01.20
서버 데이터 psql insert  (0) 2026.01.16
이슈 업무범위 ddl까지 vs data 이행까지  (0) 2026.01.15
이슈  (1) 2026.01.15

댓글