Oracle 연결 오류: SQLRecoverableException – Invalid Operation, NOT Connected

1. 오류 메시지 요약 2. 발생 원인 3. 자주 발생하는 상황 4. 해결 방법 4.1 HikariCP 설정 강화 주의: max-lifetime은 DB의 세션 만료 시간보다 짧게 설정해야 합니다. 4.2 Oracle DB 세션 타임아웃 확인 4.3 운영 상 참고사항 5. 결론 해당 오류는 커넥션 풀에서 이미 종료된 커넥션을 닫는 과정에서 흔히 발생하는 더 읽기

개별 항목 실패 시 해당 트랜잭션만 롤백 (TransactionTemplate 사용)

🧩 문제 현상 🔍 원인 분석 🛠 해결 방법 🧪 예시 적용 코드 (1000건씩 커밋) ✅ 적용 후 기대 효과 바깥 Tasklet 트랜잭션이 있을 때의 전파 조건은 Spring Batch Tasklet 트랜잭션 내 개별 항목 실패 시 커넥션 누수 방지 방법에서 이어집니다.

DataSource 커넥션 반환 누락 또는 수동 반환 필요

🧩 문제 현상 🔍 원인 분석 🛠 해결 방법 ✅ 적용 후 기대 효과 트랜잭션에 연결된 자원의 소유권은 Spring Batch Tasklet 트랜잭션 내 개별 항목 실패 시 커넥션 누수 방지 방법에서 이어집니다.

Spring Batch Tasklet에서 slave DB를 여러 번 호출할 때 커넥션은 각각 반환되는가?

🔹 질문 시나리오 Spring Batch Tasklet 안에서 slaveMapper를 사용하는 다음 코드처럼: slaveTxSupport.read(() -> slaveMapper.selectSomething());slaveTxSupport.read(() -> slaveMapper.selectAnotherThing()); 이 경우: 이 궁금증에 대한 답을 정리합니다. 🔍 결론 요약 항목 설명 TransactionTemplate.read(…) 호출마다 트랜잭션 생성됨 ✅ 맞습니다 각 트랜잭션은 독립적인 커넥션 사용 ✅ 맞습니다 첫 번째 호출이 끝난 시점에 커넥션 반환되는가 ✅ 반환됨 더 읽기

Spring Batch에서 slave DB 커넥션 반환 문제와 MyBatis + Hikari 트랜잭션 실전 가이드

🔹 문제 인식 🔹 핵심 원인 🔹 해결 방법 ✅ 1. TransactionTemplate으로 slave 트랜잭션 분리 List<Data> list = slaveTxSupport.read(() -> slaveMapper.selectByCondition(paramA, paramB)); ✅ 2. chunk 방식에서 ListItemReader에 적용 가능 @Bean@StepScopepublic ListItemReader<Entity> reader() { return new ListItemReader<>( slaveTxSupport.read(() -> mapper.selectList(param)) );} ✅ 3. 커넥션 반환 여부 확인 🔹 MyBatis Interceptor에서 커넥션 더 읽기

Spring Batch 작업을 Kubernetes CronJob으로 병렬 처리할 때의 고려사항과 커넥션 오류 대응 전략

✅ 1. Spring Batch를 Kubernetes CronJob에서 병렬로 실행하려는 시나리오 ✅ 2. HikariCP 경고: “Apparent connection leak detected” ✅ 3. MyBatis 쿼리가 길어질 때 INSERT 타임아웃 처리 @Options(timeout = 5)void insertMyData(@Param(“list”) List<MyDto> list); ✅ 4. 커넥션 오류 예외 예시 (Unknown thread id) ✅ 5. 기존 Step을 Partitioning Step으로 전환할 수 있는가?

Spring Batch 멀티스레드 환경에서 HikariCP Connection Leak 문제 해결 방법

🔹 개요Spring Batch에서 멀티스레드 환경을 사용한 후 HikariCP의 Connection Leak 경고가 발생하는 문제에 대해 분석하고 해결 방법을 정리합니다.특히 멀티스레드와 HikariCP의 connection-pool 설정, 트랜잭션 관리 방식, DAO 호출 구조가 Connection Leak에 미치는 영향을 집중적으로 다룹니다. 🔹 HikariCP 설정과 Connection Leak 원인 분석 사용된 HikariCP 설정은 다음과 같습니다. minimum-idle: 2 maximum-pool-size: 30 더 읽기

AWS Aurora MySQL 환경에서 HikariCP keepaliveTime 적용 조건과 커넥션 관리

내용 정정: Aurora MySQL이라는 이유만으로 HikariCP keepaliveTime이 불필요하다고 단정할 수 없습니다. DB·프록시·방화벽의 연결 제한, 드라이버와 HikariCP 버전에 따라 판단해야 합니다. 기존의 “Aurora Proxy” 표기는 AWS 서비스명인 RDS Proxy로 바로잡습니다. keepaliveTime이 하는 일 HikariCP가 풀의 유휴 연결을 주기적으로 확인하는 설정입니다. 사용 중인 쿼리의 실행 시간을 제한하거나 Failover로 끊긴 트랜잭션을 복구하지는 않습니다. 더 읽기

Spring Batch 5.1.2에서 HikariCP 연결 문제 해결 방법

Spring Batch 5.1.2를 사용하면서 HikariCP 연결 문제를 경험하는 경우가 많습니다. 특히, 데이터베이스 재시작 또는 세션 종료 후 커넥션이 끊기는 문제가 발생할 수 있습니다. 이 글에서는 이러한 문제의 원인을 분석하고, 해결 방법을 소개하겠습니다. 1. 문제 원인 분석 Spring Batch는 배치 작업을 실행하면서 데이터베이스와 지속적으로 연결을 유지합니다. 하지만 다음과 같은 상황에서 HikariCP의 더 읽기