티스토리 뷰

반응형

Oracle의 sysdate, systimestamp는 운영체제(OS) 시스템의 시간을 사용합니다. 그래서 일반적으로는 시스템의 시간대가 맞추어져 있다면 특별히 신경을 쓰지 않아도 되는데요,

 

그러나 Docker로 Oracle이 실행되는 경우, Docker도 독립된 시스템이므로 시간대가 맞지 않는 경우가 있습니다. (예로 Docker내 /etc/localtime이 연결되어 있지 않은 경우)

 

위 경우처럼 시간대가 맞지 않는 상황에서 Docker의 시스템 시간대를 변경하여 Oracle의 시간대를 맞추어 보도록 하겠습니다.

 

이 글은 아래 글과 연관되어 있습니다.

https://bundw.tistory.com/56

 

Docker(도커) Linux(리눅스)에서 Oracle(오라클) 19c 설치

Docker로 Oracle 19c 이미지를 생성하고 설치하는 방법을 알아보겠습니다. 시작하기 전에 먼저 Docker가 설치되어 있어야 합니다. 설치 방법은 아래 글을 참조해주세요. https://bundw.tistory.com/entry/CentOS-%.

bundw.tistory.com

 

 

먼저 Oracle sqlplus에 접속하여 sysdate, systimestamp를 확인해 봅니다.

 

SQL SELECT SYSDATE, SYSTIMESTAMP FROM DUAL; 질의를 실행합니다.

$ sudo docker exec -it oracle sqlplus sys/oracle@//localhost:1521/ORCLCDB as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 10 06:34:52 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> SELECT SYSDATE, SYSTIMESTAMP FROM DUAL;

SYSDATE
---------
SYSTIMESTAMP
---------------------------------------------------------------------------
10-MAY-22
10-MAY-22 06.34.57.339091 AM +00:00


SQL>

위 실행 결과와 같이 +09:00이 아닌, +00:00등과 같다면 TimeZone이 맞지 않은 것입니다.

 

sqlplus를 quit;로 종료합니다.

SQL> quit;
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
$

 

실행중인 Docker Container에 bash로 들어갑니다.

$ sudo docker exec -u 0 -it oracle bash

 

시스템의 localtime을 아래의 명령어로 변경하고 bash에서 나갑니다.

# cd /etc
# rm -f localtime
# ln -s /usr/share/zoneinfo/Asia/Seoul localtime
# exit

 

Docker Container를 재시작합니다.

$ sudo docker restart oracle

 

Oracle sqlplus에 접속하여 시간대가 변경되었는지 확인해 봅니다.

$ sudo docker exec -it oracle sqlplus sys/oracle@//localhost:1521/ORCLCDB as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 10 15:54:26 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> SELECT SYSDATE, SYSTIMESTAMP FROM DUAL;

SYSDATE
---------
SYSTIMESTAMP
---------------------------------------------------------------------------
10-MAY-22
10-MAY-22 03.54.32.624932 PM +09:00


SQL>

 

시간대가 +09:00로 잘 변경되었습니다.

반응형