본문 바로가기

PostgreSQL6

오라클 SQL을 PostgreSQL로 바꾸는 규칙 20가지: NVL·DECODE·ROWNUM·MERGE까지 한 번에 서론: “문법만 바꾸면 되겠지”가 가장 위험한 착각오라클에서 PostgreSQL로 DB를 옮길 때, 가장 먼저 마주치는 벽은 SQL이다.겉으로는 비슷해 보여도 함수, NULL 처리, 페이징, UPSERT, 날짜/타임존까지작은 차이가 쌓이면 결과가 달라지고, 그게 운영 장애로 이어진다.이 글은 실무에서 가장 많이 부딪히는 변환 포인트를 규칙 20가지로 정리했다.NVL/DECODE/ROWNUM/MERGE 같은 대표 케이스는 물론,GROUP BY, 문자열/날짜 함수, outer join 구문까지 한 번에 정리한다.목표는 단순하다.“오라클 쿼리를 보고, PostgreSQL로 즉시 치환할 수 있는 수준”이다. 규칙 1) NVL → COALESCE오라클의 NVL(a, b)는 NULL이면 b로 치환한다.Postgre.. 2025. 12. 21.
오라클 DB를 PostgreSQL로 마이그레이션하는 절차: 무중단 전환까지 실무 체크리스트 서론: 오라클 → PostgreSQL 전환은 “DB 교체”가 아니라 “시스템 이식”이다오라클을 PostgreSQL로 바꾸는 작업은 단순히 데이터 덤프를 떠서 넣는 수준이 아니다.스키마, SQL, 트랜잭션, 인덱스, 배치, 운영 도구까지 모두 영향을 받는다.특히 운영 시스템이라면 “언제 어떻게 끊김 없이 바꿀 것인지”가 핵심이다.이 글에서는 실무에서 가장 많이 쓰는 방식으로사전 분석 → 변환 → 이관 → 검증 → 전환(컷오버) → 안정화 절차를 정리한다.※ 대규모 시스템 기준으로 작성했으며, 소규모 시스템도 이 체크리스트를 축약해 적용하면 된다. 1) 마이그레이션 방식 3가지 중 무엇을 택할까?먼저 전환 목표(RTO/RPO)와 서비스 중단 허용 시간을 확정해야 한다.그에 따라 방식이 갈린다.방식 A. 오프.. 2025. 12. 20.
다운타임 없는 DB 마이그레이션 완전 가이드: PostgreSQL & MySQL(Online DDL, gh-ost/pt-osc, Expand→Migrate→Contract) 다운타임 없는 DB 마이그레이션 완전 가이드: PostgreSQL & MySQL(Online DDL, gh-ost/pt-osc, Expand→Migrate→Contract)웹 서비스가 커질수록 스키마 변경은 필수가 됩니다. 문제는 잘못된 DDL 한 번으로 락이 길게 잡히거나재인덱싱으로 I/O가 폭증해 다운타임을 유발한다는 점이죠. 이 글은 PostgreSQL·MySQL 운영 환경에서무중단에 초점을 맞춘 Expand→Migrate→Contract 3단계 전략과, Online DDL,gh-ost/pt-osc 같은 도구 활용, 그리고 배포 파이프라인과의 연계를 실전 템플릿으로 정리합니다.1) 원칙: Expand → Migrate → Contract (EMC) Expand: 서비스 중단 없이 추가만 수행(새 .. 2025. 10. 28.
Docker 설치부터 Compose v2로 서비스 올리기(Nginx+PostgreSQL, Ubuntu 24.04) Docker 설치부터 Compose v2로 서비스 올리기(Nginx+PostgreSQL, Ubuntu 24.04)컨테이너는 배포를 단순화하고 환경 차이를 줄여줍니다. 이 글에서는 Ubuntu 24.04 서버에서 Docker Engine과 Docker Compose v2를 설치한 뒤, Nginx(리버스 프록시)와 PostgreSQL(데이터베이스)를 compose.yaml 하나로 올려보겠습니다. 설치→권한→네트워크/볼륨→헬스체크→백업→점검까지 운영 관점으로 정리합니다.1) Docker Engine + Compose v2 설치# 1) 패키지 준비sudo apt updatesudo apt install -y ca-certificates curl gnupg# 2) Docker 공식 GPG 키/리포지토리sudo i.. 2025. 10. 21.
Testcontainers로 DB 통합테스트: Docker 이미지까지 자동 띄우는 실전 가이드 Testcontainers로 DB 통합테스트: Docker 이미지까지 자동 띄우는 실전 가이드로컬에서 통합테스트를 돌릴 때마다“로컬 DB 켰나?” “테스트용 스키마는?” “동료 환경은 또 왜 깨졌지?”이런 문제를 반복해서 겪어본 적이 있을 겁니다.Testcontainers는 이런 고민을 줄여주기 위해,테스트 코드 안에서 직접 Docker 컨테이너를 띄우고 내리는 방식으로테스트마다 깨끗한 DB 환경을 자동으로 만들어 주는 라이브러리입니다.이 글에서는 Spring Boot + JPA + PostgreSQL 조합을 기준으로,Testcontainers로 DB 통합테스트를 설계하고 운영하는 방법을 정리합니다. 1. 왜 DB 통합테스트에 Testcontainers를 쓰는가?전통적인 통합테스트는 보통 이렇게 진행됩니.. 2025. 10. 10.
Docker로 PostgreSQL 운영하기: 백업·복구·업그레이드 실전 가이드 Docker로 PostgreSQL 운영하기: 백업·복구·업그레이드 실전 가이드Docker로 PostgreSQL를 올리면 설치와 실행은 놀랍도록 쉽지만,막상 운영 단계에 들어가면 백업, 복구, 버전 업그레이드, 볼륨 관리 같은 문제들이 한꺼번에 몰려옵니다.저 역시 처음에는 docker run 한 줄로 DB를 띄웠다가,볼륨 마운트와 백업 전략 없이 운영을 시작해버려서테스트 데이터가 통째로 날아간 적이 있습니다.이 글은 Docker + PostgreSQL 조합을 실제 서비스에 사용하면서 겪었던 시행착오를 바탕으로,컨테이너 구성 → 백업/복구 전략 → 업그레이드 시나리오까지 한 번에 정리한 운영 가이드입니다.1. 기본 구성: Docker Compose로 PostgreSQL 올리기먼저 docker run 단발성 .. 2025. 10. 9.