본문 바로가기

Start

리눅스 docker 안에 오라클 시간 변경

반응형

오픈전 테스트 하는데 현재 시간이 안맞아서 불편함이 있다 라는 요청에 시작해봄.

 

SYSDATE 시간이 안맞는다. 대략 9시간 차이.

 

오라클은 현재 리눅스 docker 안에 설치되어 있다.

docker exec -it oracle18 bash

su oracle

sqlplus

conn /as sysdba --권한없이 로그인

비번 물으면 엔터.

오라클 진입 완료.

 

-오라클 시간확인

SELECT CURRENT_DATE, CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

 

결과에 시간이 나오는데 맞지 않는다면 변경.

여기는 한국. 한국시간에 맞게 변경 해야한다.

 

-오라클 국적과 시간대 변경

ALTER SESSION SET TIME_ZONE = 'Asia/Seoul';
ALTER DATABASE SET TIME_ZONE = '+09:00' ;

 

그리고 

 

-오라클 종료

SHUTDOWN IMMEDIATE;

-오라클 시작

STARTUP

 

적용하기 위해 수정을 해주고 재시작을 했지만 날짜가 변하지 않는다.

리눅스로 다시 나가서 날짜를 확인해본다.

 

 

-리눅스 현재시간 확인

date

역시나 맞지 않는다. 일자는 맞으나 시간 차이가 있었다.

 

date -s 13:11:00

이렇게 s옵션을 써서 시간변경이 가능하다.

 

근데 지금 환경 자체가 docker위에 셋팅이 되어 있다.

그러니 docker 안에서도 날짜를 맞추준다.

 

하지만 docker 안에서 날짜를 수정하면 리눅스에서 수정했던 날짜가 바뀌고

리눅스에서 바꾸면 docker안에 날짜가 바뀌고....

이상해서 확인해보니

리눅스는 날짜 형식이 KST, docker 안에는 UTC이다.

 

일단 이 둘의 날짜형식을 맞춰줘봐야겠다고 생각했음.

 

-타임존 확인

ls -al /etc/localtime

확인해보니 리눅스는 /usr/share/zoneinfo/Etc/Asia 를 바라보고 있었고 

도커에서는 /usr/share/zoneinfo/Etc/UTC 를 바라보고 있었다.

 

-타임존 한국표준시로 심볼링크 수정

ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

UTC를 바라보고있는 도커를 수정

 

그리고 date로 확인을 해보니 잘나왔다.

 

 

그럼 이제 오라클에서 sysdate가 잘나오겠지?

했는데........ 그대로임.....흠...

 

그래서 다시 오라클 국적과 시간을 변경하고 재시작!

 

이렇게 해주었더니 잘나오기 시작했다.

 

오라클 시간을 바꾸기 위해 어디 위에서 돌고있는지 확인도 필요.

리눅스랑 도커와 따로 인점도 알아두어야 할듯 하다.

반응형