TOOL/DATABASE 2020. 4. 17. 19:41

Oracle

  • Environment
    • Ubuntu 16.04.1
    • Oracle 11g

시간대 맞추기

1. SYSDATE, SYSTIMESTAMP 시간대 맞추기

SYSDATE SYSTIMESTAMP 는 OS System에 설정된 시간대의 시간을 출력한다.

  1. 시간설정 및 출력 확인
    • 1) Linux OS의 시간대와 시간을 확인한다.
        echo $TZ
        date
    • 2) Oracle Database에 출력되는 시간을 확인한다.
        -- Check Time as System (이곳이 System의 시각과 동기화된다.)
        SELECT SYSDATE, SYSTIMESTAMP FROM DUAL
        ;
    • OS와 DB의 시간대가 다르게 출력된다면 DB를 재가동해보자.
    • 또는 시간대를 수정하려면 OS의 oracle계정의 시간대를 수정해야한다.
    • 다음을 차례대로 해보자.
  2. Oracle 계정으로 접속한다.
     su - oracle
  3. 시간대를 맞춘다. - TZ 환경변수의 값을 변경한다. (영구적으로 적용하려면 설정파일에 넣어두든 한다.)
     export TZ=Asia/Seoul
  4. Oracle에 sqlplus로 접속하여 재가동한다.
     sqlplus / as sysdba
     SQL> shutdown immediate
     SQL> startup
     SQL> quit
  5. 확인
     -- Check Time as System (System의 시각과 동일하게 출력된다.)
     SELECT SYSDATE, SYSTIMESTAMP FROM DUAL
     ;
     -- Check DB Timezone Setup
     select DBTIMEZONE, SESSIONTIMEZONE FROM DUAL
     ;

2. CURRENT_DATE, CURRENT_TIMESTAMP, LOCALTIMESTAMP 시간대 맞추기

DB에 설정된 시간대에 맞춰서 출력된다.

  1. 설정 및 출력 확인
     -- Check DB Timezone Setup
     select DBTIMEZONE, SESSIONTIMEZONE FROM DUAL
     ;
     -- Check Time as DB
     SELECT CURRENT_DATE, CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL
     ;
  2. 시간대 설정 및 확인
    • 접속중인 세션의 시간대를 임시로 변경한다.
        --------------------------------------------------
        -- Alter Session Timezone - Connection 접속동안 세션의 시간대(Timezone)를 설정
        --------------------------------------------------
        ALTER SESSION SET TIME_ZONE = 'Asia/Seoul'
        ;
    • DataBase의 시간대를 변경한다.
        --------------------------------------------------
        -- Alter Database Timezone - Database의 시간대(Timezone)를 설정
        --------------------------------------------------
        ALTER DATABASE SET TIME_ZONE = '+09:00' -- Seoul이라면 9시간 빠르다
        ;
        -- Restart DB
        SHUTDOWN IMMEDIATE;
        STARTUP
      마쳤다면 1에서 설정과 출력을 다시 확인해보자.

3. 스케쥴러를 변경하려면 다음과 같다.

  • 해보지 않아서 모르겠지만 추후 참고될지 모르니 적어 놓는다.
      --------------------------------------------------
      -- Alter Scheduler Timezone
      --------------------------------------------------
      -- Check
      @show_scheduler_attribute.sql default_timezone
      ;
      -- Setup
      BEGIN
          DBMS_SCHEDULER.set_scheduler_attribute (
                  attribute => 'default_timezone',
                  value => 'US/Eastern');
      END;
      /
      -- Check
      @show_scheduler_attribute.sql default_timezone

4. Reference - 참조