목록 보기
CDC 복제 이후 오라클이 느려졌다? child cursor 폭증이 만든 예상치 못한 문제
백엔드

CDC 복제 이후 오라클이 느려졌다? child cursor 폭증이 만든 예상치 못한 문제

네이버 D2
네이버 D2
2025년 4월 8일

두줄요약

Oracle 복제 전환 과정에서 child cursor 폭증으로 주문 동기화 지연이 발생했습니다. 바인딩 타입 고정과 TIMESTAMP 정규화 등으로 성능을 안정화했습니다.

문제 상황

  • nBase-T → Oracle 비동기 복제 전환 과정에서 주문 동기화 지연 발생
  • Oracle UPDATE 쿼리의 Slow Query로 connection pool 고갈과 타임아웃 유발
  • 단일 Query ID에서 child cursor가 2만 개 이상 생성되며 응답 시간 급증

원인 분석

  • 바인딩 값과 타입 차이로 child cursor 재사용 실패
  • 가변 VARCHAR 길이, nullable 필드, NUMBER·TIMESTAMP 자릿수 변화가 주요 분기점
  • child cursor 증가에 따른 라이브러리 캐시 잠금, 뮤텍스 경쟁, 커서 대기 발생

해결 방법

  • pstm.setNull, pstm.setObject(scale) 적용으로 바인딩 타입 고정 시도
  • 불필요한 UPDATE 대상 축소와 TIMESTAMP 밀리초 단위 truncate 반영
  • 복제 시점 기준으로 바인딩 형태를 정리해 child cursor 재생성 최소화

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...