문제 상황
Docker를 이용해서 SpringBoot와 Oracle 11g 버전을 올리려 했는데 Oracle DB가 정상적으로 동작하는데 SpringBoot가 Oracle DB와 제대로 연결이 안되는걸 확인 오류 코드는
springboot-app_1 | java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
springboot-app_1 | ORA-01882: timezone region not found
문제 이유
Docker 내부에 타임존이 설정되어 있지 않거나, DB와 SpringBoot 간의 타임존이 달라서 JDBC에서 오류를 내고 있는 것
해결법
저는 SpringBoot Dockerfile과 docker-compose.yml 내부에 각 컨테이너의 TimeZone을 설정해주었습니다.
Spring boot - Dockerfile
ENV TZ=Asiz/Seoul # 타임존 한국 지정
Oracle DB - docker-compose.yml
version: '3.8'
services:
oracle:
image: oracleinanutshell/oracle-xe-11g
environment:
- ORACLE_PASSWORD= ....
- ORACLE_ALLOW_REMOTE=true
- TZ=Asia/Seoul # Oracle 컨테이너의 타임존을 한국 시간대로 설정합니다.
문제 상황
Docker를 이용해서 SpringBoot와 Oracle 11g 버전을 올리려 했는데 Oracle DB가 정상적으로 동작하는데 SpringBoot가 Oracle DB와 제대로 연결이 안되는걸 확인 오류 코드는
springboot-app_1 | java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
springboot-app_1 | ORA-01882: timezone region not found
문제 이유
Docker 내부에 타임존이 설정되어 있지 않거나, DB와 SpringBoot 간의 타임존이 달라서 JDBC에서 오류를 내고 있는 것
해결법
저는 SpringBoot Dockerfile과 docker-compose.yml 내부에 각 컨테이너의 TimeZone을 설정해주었습니다.
Spring boot - Dockerfile
ENV TZ=Asiz/Seoul # 타임존 한국 지정
Oracle DB - docker-compose.yml
version: '3.8'
services:
oracle:
image: oracleinanutshell/oracle-xe-11g
environment:
- ORACLE_PASSWORD= ....
- ORACLE_ALLOW_REMOTE=true
- TZ=Asia/Seoul # Oracle 컨테이너의 타임존을 한국 시간대로 설정합니다.