본문 바로가기
Database/Oracle

[ORACLE] DBTIMEZONE() 함수로 데이터베이스 시간대 정확히 설정하는 방법

by Papa Martino V 2025. 6. 5.
728x90

오라클 DBTIMEZONE() 함수로 데이터베이스 시간대 정확히 설정하는 방법
[Oracle] DBTIMEZONE

 

오라클 데이터베이스에서 시간대(Time Zone)는 날짜 및 시간 데이터를 해석하고 비교하는 데 중요한 역할을 합니다. 특히 글로벌 서비스를 운영하거나 다국적 데이터를 처리할 때 시간대의 정확한 이해는 필수입니다. 이 글에서는 DBTIMEZONE() 함수에 대해 자세히 설명하고, 실무에서의 활용법과 주의사항까지 정리합니다.

1. DBTIMEZONE() 함수란?

DBTIMEZONE() 함수는 현재 데이터베이스의 표준 시간대를 반환합니다. 이 값은 일반적으로 설치 시 지정되며, 데이터베이스 전체의 시간 기준으로 사용됩니다.

문법:

SELECT DBTIMEZONE FROM dual;

예제 결과:

+05:00
-08:00
UTC

2. DBTIMEZONE의 반환 형식

  • 시간 오프셋 형식: +HH:MI 또는 -HH:MI (예: +09:00)
  • 지역 이름: UTC 등

주의할 점은, DBTIMEZONE은 시간대 이름(Time Zone Name)이 아닌 오프셋 값을 반환한다는 것입니다.

3. DBTIMEZONE vs SESSIONTIMEZONE

오라클은 시간대 관련 함수로 SESSIONTIMEZONE()도 함께 제공합니다. 두 함수의 차이는 아래와 같습니다:

항목 DBTIMEZONE SESSIONTIMEZONE
설명 DB의 기본 시간대 사용자의 세션 시간대
설정 방법 ALTER DATABASE SET TIME_ZONE ALTER SESSION SET TIME_ZONE
반환 형식 +HH:MI +HH:MI 또는 Time Zone Name

4. 실무 예제

예제 1: DBTIMEZONE 확인

SELECT DBTIMEZONE FROM dual;

예제 2: 세션 시간대 확인

SELECT SESSIONTIMEZONE FROM dual;

예제 3: 시간대 기준의 시간 삽입

INSERT INTO time_test (created_at)
VALUES (CURRENT_TIMESTAMP AT TIME ZONE DBTIMEZONE());

예제 4: 시간대 비교

SELECT DBTIMEZONE, SESSIONTIMEZONE FROM dual;

5. DBTIMEZONE 설정 변경 방법

DBTIMEZONE은 데이터베이스 단위로 설정되며, 설정을 변경하려면 데이터베이스를 재시작해야 합니다.

-- DBTIMEZONE 변경 예시
ALTER DATABASE SET TIME_ZONE = '+09:00';
-- 변경 후 재시작 필요
SHUTDOWN IMMEDIATE;
STARTUP;

시간대 변경은 반드시 DBA의 승인과 사전 테스트가 필요합니다.

6. DBTIMEZONE이 중요한 이유

  • 글로벌 애플리케이션의 데이터 정합성 유지
  • TIMESTAMP WITH TIME ZONE 칼럼에 대한 정확한 처리
  • 시간 비교 및 변환에서 예기치 않은 오류 방지

7. 관련 함수 정리

  • SESSIONTIMEZONE(): 현재 세션의 시간대 반환
  • CURRENT_TIMESTAMP: 세션 시간대 기준 현재 시간
  • SYS_EXTRACT_UTC(): UTC 기준으로 시간 추출
  • FROM_TZ(): TIMESTAMP에 시간대 지정
  • NEW_TIME(): 오래된 방식이므로 사용 지양

8. 주의사항 및 팁

  • DBTIMEZONE 값은 SYSDATE, SYSTIMESTAMP 함수와 다를 수 있음
  • 데이터 백업 및 마이그레이션 시 시간대 확인 필수
  • 타임존 변경 시 JOB, SCHEDULER, TRIGGER 등에 영향 가능

9. 요약

DBTIMEZONE()은 오라클 데이터베이스의 시간대를 확인하고 통제하는 중요한 함수입니다. 글로벌 서비스나 시간 기반 트랜잭션 로직이 포함된 애플리케이션에서는 반드시 이를 정확히 이해하고 활용할 필요가 있습니다.

참고자료

728x90