Gerenciar Fuso Horário

O campo Fuso Horário na Console e na API permite iniciar recursos do Sistema de BD com um fuso horário diferente do UTC (o padrão).

O fuso horário que você especifica ao criar o sistema de banco de dados se aplica ao host e ao Oracle Grid Infrastructure (se o sistema tiver o Grid Infrastructure) e controla o fuso horário dos arquivos de log do banco de dados. O fuso horário do próprio banco de dados não é afetado. No entanto, o fuso horário do banco de dados afeta somente o tipo de dados timestamp. Você pode alterar o fuso horário do banco de dados manualmente, mas a Oracle recomenda que você o mantenha como UTC (o padrão) para evitar a conversão de dados e melhorar o desempenho quando os dados forem transferidos entre bancos de dados. Essa configuração é especialmente importante para bancos de dados distribuídos, replicação e operações de exportação e importação.

Embora o UTC seja o fuso horário recomendado para uso, ter um fuso horário comum para seus clientes de banco de dados e hosts de aplicativos pode simplificar o gerenciamento e o diagnóstico e solução de problemas para o administrador do banco de dados.

Observação:

Os fusos horários são amplamente usados para fins de exibição ou para lidar com a entrada de dados do usuário. A alteração do fuso horário não altera o horário no relógio do sistema.

Opções de Fuso Horário

Se você usar a Console ou a API, as opções de fuso horário que poderá selecionar serão representadas no formato de região nomeada, por exemplo, America/Los_Angeles. A Console permite que você selecione UTC, o fuso horário detectado no browser (se seu browser oferecer suporte à detecção de fuso horário) ou um fuso horário alternativo.

Para especificar um fuso horário alternativo (a opção Selecionar outro fuso horário), primeiro selecione um valor no campo Região ou país para restringir a lista de fusos horários a serem selecionados no campo Fuso horário. No exemplo America/Los_Angeles, America é a região de tempo e Los_Angeles é o fuso horário. As opções que você vê nesses dois campos se correlacionam aproximadamente com os fusos horários compatíveis na classe Java.util.TimeZone e no sistema operacional Linux. Se você não vir o fuso horário que está procurando, tente selecionar "Diversos" no campo Região e país.

Dica:

Se você estiver usando a API e quiser ver uma lista de fusos horários compatíveis, poderá analisar as opções de fuso horário na Console. Essas opções são exibidas na página Criar Sistema de Banco de Dados ao mostrar opções avançadas depois de selecionar uma configuração do sistema de banco de dados.

Exibir o Fuso Horário Atual

Execute as etapas a seguir para exibir as informações de fuso horário.

  1. Faça log-on no host como usuário da grade.

    Exemplo:
    [opc@rc ~]$ sudo su - grid
  2. Use o comando a seguir para exibir o fuso horário.
    timedatectl
    Exemplo:
    [grid@rc ~]$ timedatectl 
            Local time: Thu 2023-03-16 08:00:25 UTC 
        Universal time: Thu 2023-03-16 08:00:25 UTC 
              RTC time: Thu 2023-03-16 08:00:21 
             Time zone: UTC (UTC, +0000) 
           NTP enabled: yes 
      NTP synchronized: no 
       RTC in local TZ: no 
            DST active: n/a

    Observe que o sistema está atualmente no fuso horário UTC.

  3. Faça log-on no banco de dados.

    Exemplo:
    [grid@rc ~]$ sqlplus / as sysdba 
    
    SQL*Plus: Release 21.0.0.0.0 - Production on Thu Mar 16 08:00:33 2023 
    Version 21.9.0.0.0 
    
    Copyright (c) 1982, 2022, Oracle.  All rights reserved. 
    
    Connected to:
    Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 -Production 
    Version 21.9.0.0.0
  4. Você pode exibir o horário do banco de dados atual usando o comando a seguir.
    sysdate
    Exemplo:
    SQL> select to_char(sysdate,'DD-MON-YYYY HH24:MI:SS') from dual; 
    
    TO_CHAR(SYSDATE,'DD-
    --------------------
    16-MAR-2023 08:00:40
  5. Sair.

Alterar o Fuso Horário do Sistema de Banco de Dados

Execute as etapas a seguir para definir o fuso horário do Sistema de Banco de Dados.

  1. Faça log-in no host como usuário raiz.

    Exemplo:
    [opc@rc ~]$ sudo su -
  2. Identifique o valor de fuso horário (TZ) correto a ser definido usando o comando a seguir. Por exemplo, se você quiser identificar o valor TZ correto para o fuso horário leste dos EUA (EST/EDT), poderá usar o comando tzselect e escolher Américas/Estados Unidos/Leste.
    tzselect
    Exemplo:
    [root@rc ~]# tzselect 
    Please identify a location so that time zone rules can be set correctly. 
    Please select a continent or ocean. 
     1) Africa 
     2) Americas 
     3) Antarctica 
     4) Arctic Ocean 
     5) Asia 
     6) Atlantic Ocean 
     7) Australia 
     8) Europe 
     9) Indian Ocean 
    10) Pacific Ocean 
    11) none - I want to specify the time zone using the Posix TZ format. 
    #? 2 
    Please select a country. 
     1) Anguilla              19) Dominican Republic    37) Peru 
     2) Antigua & Barbuda     20) Ecuador               38) Puerto Rico 
     3) Argentina             21) El Salvador           39) St Barthelemy 
     4) Aruba                 22) French Guiana         40) St Kitts & Nevis 
     5) Bahamas               23) Greenland             41) St Lucia 
     6) Barbados              24) Grenada               42) St Maarten (Dutch) 
     7) Belize                25) Guadeloupe            43) St Martin (French) 
     8) Bolivia               26) Guatemala             44) St Pierre & Miquelon 
     9) Brazil                27) Guyana                45) St Vincent 
    10) Canada                28) Haiti                 46) Suriname 
    11) Caribbean NL          29) Honduras              47) Trinidad & Tobago 
    12) Cayman Islands        30) Jamaica               48) Turks & Caicos Is 
    13) Chile                 31) Martinique            49) United States 
    14) Colombia              32) Mexico                50) Uruguay 
    15) Costa Rica            33) Montserrat            51) Venezuela 
    16) Cuba                  34) Nicaragua             52) Virgin Islands (UK) 
    17) Curaçao               35) Panama                53) Virgin Islands (US) 
    18) Dominica              36) Paraguay 
    #? 49 
    Please select one of the following time zone regions.
     1) Eastern (most areas)              16) Central - ND (Morton rural) 
     2) Eastern - MI (most areas)         17) Central - ND (Mercer) 
     3) Eastern - KY (Louisville area)    18) Mountain (most areas) 
     4) Eastern - KY (Wayne)              19) Mountain - ID (south); OR (east) 
     5) Eastern - IN (most areas)         20) MST - Arizona (except Navajo) 
     6) Eastern - IN (Da, Du, K, Mn)      21) Pacific 
     7) Eastern - IN (Pulaski)            22) Alaska (most areas) 
     8) Eastern - IN (Crawford)           23) Alaska - Juneau area 
     9) Eastern - IN (Pike)               24) Alaska - Sitka area 
    10) Eastern - IN (Switzerland)        25) Alaska - Annette Island 
    11) Central (most areas)              26) Alaska - Yakutat 
    12) Central - IN (Perry)              27) Alaska (west) 
    13) Central - IN (Starke)             28) Aleutian Islands 
    14) Central - MI (Wisconsin border)   29) Hawaii 
    15) Central - ND (Oliver) 
    #? 1 
    The following information has been given:
            United States 
            Eastern (most areas) 
    Therefore TZ='America/New_York' will be used. 
        Local time is now:    Thu Mar 16 04:01:39 EDT 2023. 
    Universal Time is now:    Thu Mar 16 08:01:39 UTC 2023. 
    Is the above information OK? 
    1) Yes 
    2) No 
    #? 1 
    You can make this change permanent for yourself by appending the line 
            TZ='America/New_York'; export TZ 
    to the file '.profile' in your home directory; then log out and log in again. 
    Here is that TZ value again, this time on standard output so that you 
    can use the /bin/tzselect command in shell scripts: 
            America/New_York
    [root@rc ~]#

    No comando tzselect, identificamos o valor TZ como America/New_York para o fuso horário EDT.

  3. Atualize o comando a seguir para definir o novo fuso horário.
    timedatectl set-timezone <new_time_zone>
    Exemplo:
    [root@rc ~]# timedatectl set-timezone America/New_York
  4. Verifique se o fuso horário foi atualizado usando o comando a seguir.
    timedatectl
    Exemplo:
    [root@rc ~]# timedatectl 
             Local time: Thu 2023-03-16 04:02:15 EDT 
         Universal time: Thu 2023-03-16 08:02:15 UTC 
               RTC time: Thu 2023-03-16 08:02:10 
              Time zone: America/New_York (EDT, -0400) 
            NTP enabled: yes 
       NTP synchronized: no 
        RTC in local TZ: no 
             DST active: yes 
        Last DST change: DST began at 
                         Sun 2023-03-12 01:59:59 EST 
                         Sun 2023-03-12 03:00:00 EDT 
        Next DST change: DST ends (the clock jumps one hour backwards) at 
                         Sun 2023-11-05 01:59:59 EDT 
                         Sun 2023-11-05 01:00:00 EST

    Observe que o sistema agora está no fuso horário America/New_York (EDT).

  5. Sair.

Alterar o Fuso Horário do Host em Sistemas de Banco de Dados que Usam o Grid Infrastructure

O fuso horário do Oracle Grid Infrastructure determina o fuso horário dos arquivos de log do banco de dados.

Execute as etapas a seguir para atualizar as informações de fuso horário do host dos sistemas de banco de dados que usam o Grid Infrastructure para o gerenciamento de armazenamento.

Observação:

  • As etapas de 1 a 10 devem ser executadas em todos os nós de um cluster RAC.
  • As etapas de 11 a 15 podem ser executadas em qualquer nó de um cluster RAC.
  • Este procedimento não se aplica a sistemas de banco de dados de provisionamento rápido, que usam o LVM (Logical Volume Manager) em vez do Grid Infrastructure para gerenciamento de armazenamento.
  1. Faça log-on no host como usuário grid.

    Exemplo:
    [opc@rc ~]$ sudo su - grid
  2. Identifique o valor de fuso horário (TZ) correto a ser definido usando o comando a seguir. Por exemplo, para identificar o valor TZ correto para o fuso horário do Pacífico EUA (PST/PDT), você pode usar o comando tzselect e escolher Américas/Estados Unidos/Pacífico.
    tzselect
    Exemplo:
    [grid@rc ~]$ tzselect 
    Please identify a location so that time zone rules can be set correctly. 
    Please select a continent or ocean. 
     1) Africa 
     2) Americas 
     3) Antarctica 
     4) Arctic Ocean 
     5) Asia 
     6) Atlantic Ocean 
     7) Australia 
     8) Europe 
     9) Indian Ocean 
    10) Pacific Ocean 
    11) none - I want to specify the time zone using the Posix TZ format. 
    #? 2 
    Please select a country. 
     1) Anguilla              19) Dominican Republic    37) Peru 
     2) Antigua & Barbuda     20) Ecuador               38) Puerto Rico 
     3) Argentina             21) El Salvador           39) St Barthelemy 
     4) Aruba                 22) French Guiana         40) St Kitts & Nevis 
     5) Bahamas               23) Greenland             41) St Lucia 
     6) Barbados              24) Grenada               42) St Maarten (Dutch) 
     7) Belize                25) Guadeloupe            43) St Martin (French) 
     8) Bolivia               26) Guatemala             44) St Pierre & Miquelon 
     9) Brazil                27) Guyana                45) St Vincent 
    10) Canada                28) Haiti                 46) Suriname 
    11) Caribbean NL          29) Honduras              47) Trinidad & Tobago 
    12) Cayman Islands        30) Jamaica               48) Turks & Caicos Is 
    13) Chile                 31) Martinique            49) United States 
    14) Colombia              32) Mexico                50) Uruguay 
    15) Costa Rica            33) Montserrat            51) Venezuela 
    16) Cuba                  34) Nicaragua             52) Virgin Islands (UK) 
    17) Curaçao               35) Panama                53) Virgin Islands (US) 
    18) Dominica              36) Paraguay 
    #? 49 
    Please select one of the following time zone regions. 
     1) Eastern (most areas)              16) Central - ND (Morton rural) 
     2) Eastern - MI (most areas)         17) Central - ND (Mercer) 
     3) Eastern - KY (Louisville area)    18) Mountain (most areas) 
     4) Eastern - KY (Wayne)              19) Mountain - ID (south); OR (east) 
     5) Eastern - IN (most areas)         20) MST - Arizona (except Navajo) 
     6) Eastern - IN (Da, Du, K, Mn)      21) Pacific 
     7) Eastern - IN (Pulaski)            22) Alaska (most areas) 
     8) Eastern - IN (Crawford)           23) Alaska - Juneau area 
     9) Eastern - IN (Pike)               24) Alaska - Sitka area 
    10) Eastern - IN (Switzerland)        25) Alaska - Annette Island 
    11) Central (most areas)              26) Alaska - Yakutat 
    12) Central - IN (Perry)              27) Alaska (west) 
    13) Central - IN (Starke)             28) Aleutian Islands 
    14) Central - MI (Wisconsin border)   29) Hawaii 
    15) Central - ND (Oliver) 
    #? 21 
    The following information has been given: 
            United States 
            Pacific 
    Therefore TZ='America/Los_Angeles' will be used. 
        Local time is now:    Thu Mar 16 01:08:57 PDT 2023. 
    Universal Time is now:    Thu Mar 16 08:08:57 UTC 2023. 
    Is the above information OK? 
    1) Yes 
    2) No 
    #? 1 
    You can make this change permanent for yourself by appending the line 
            TZ='America/Los_Angeles'; export TZ 
    to the file '.profile' in your home directory; then log out and log in again. 
    Here is that TZ value again, this time on standard output so that you 
    can use the /bin/tzselect command in shell scripts: 
            America/Los_Angeles 
    [grid@rc ~]$

    No comando tzselect, identificamos o valor TZ como America/Los_Angeles para o fuso horário PDT.

  3. Execute o comando a seguir para obter o nome do host.
    hostname
    Exemplo:
    [grid@rc ~]$ hostname 
    rc
  4. Execute o comando a seguir para obter o nome do banco de dados.
    srvctl config database -v
    Exemplo:
    [grid@rc ~]$ srvctl config database -v 
    SMDB0316_iad1cx    /u01/app/oracle/product/21.0.0.0/dbhome_1    21.0.0.0.0
  5. Faça log-out como usuário da grade e acesse como usuário-raiz.

    Exemplo:
    [grid@rc ~]$ exit 
    logout 
    [opc@rc ~]$ sudo su -
  6. Navegue até o seguinte diretório.
    cd $GRID_HOME/crs/install
    Exemplo:
    [root@rc ~]# cd /u01/app/21.0.0.0/grid/crs/install/
  7. Edite o conteúdo TZ do arquivo a seguir. Salve e feche o arquivo após editá-lo.
    vim s_crsconfig_<hostname>_env.txt
    Exemplo:
    [root@rc install]# vim s_crsconfig_rc_env.txt
  8. Verifique se a entrada TZ no arquivo foi atualizada.
    cat s_crsconfig_<hostname>_env.txt
    Exemplo:
    [root@rc install]# cat s_crsconfig_rc_env.txt 
    ######################################################################### 
    #This file can be used to set values for the NLS_LANG and TZ environment 
    #variables and to set resource limits for Oracle Clusterware and 
    #Database processes. 
    #1. The NLS_LANG environment variable determines the language and 
    #   characterset used for messages. For example, a new value can be 
    #   configured by setting NLS_LANG=JAPANESE_JAPAN.UTF8 
    #2. The Time zone setting can be changed by setting the TZ entry to 
    #   the appropriate time zone name. For example, TZ=America/New_York 
    #3. Resource limits for stack size, open files and number of processes 
    #   can be specified by modifying the appropriate entries. 
    # 
    #Do not modify this file except as documented above or under the 
    #direction of Oracle Support Services. 
    ######################################################################### 
    TZ=America/Los_Angeles 
    NLS_LANG=AMERICAN_AMERICA.AL32UTF8 
    CRS_LIMIT_STACK=2048 
    CRS_LIMIT_OPENFILE=65536 
    CRS_LIMIT_NPROC=65536 
    TNS_ADMIN= 
    [root@rc install]#
  9. Defina o novo fuso horário usando o comando a seguir.
    timedatectl set-timezone <new_time_zone>
    Exemplo:
    [root@rc install]# timedatectl set-timezone America/Los_Angeles

    Observação:

    • As etapas de 1 a 9 devem ser executadas em todos os nós de um cluster RAC.
    • As etapas de 10 a 15 podem ser executadas em qualquer nó de um cluster RAC.
  10. Navegue até o seguinte diretório.
    cd $GRID_HOME/bin
    Exemplo:
    [root@rc install]# cd /u01/app/21.0.0.0/grid/bin/
  11. Altere o valor TZ no nível do banco de dados para o fuso horário desejado usando o comando a seguir.
    srvctl setenv database -d <database_name> -t "TZ=<new_time_zone>"
    Exemplo:
    [root@rc bin]# ./srvctl setenv database -d SMDB0316_iad1cx -t "TZ=America/Los_Angeles"
  12. Verifique o conjunto de valores TZ usando o comando a seguir.
    srvctl getenv database -d <database_name>
    Exemplo:
    [root@rc bin]# ./srvctl getenv database -d SMDB0316_iad1cx 
    SMDB0316_iad1cx: 
    TZ=America/Los_Angeles
  13. Pare a pilha do CRS em todos os nós de computação.
    crsctl stop cluster
    Exemplo:
    [root@rc bin]# ./crsctl stop cluster 
    CRS-2673: Attempting to stop 'ora.crsd' on 'rc' 
    . 
    . 
    . 
    CRS-2673: Attempting to stop 'ora.cssd' on 'rc' 
    CRS-2677: Stop of 'ora.cssd' on 'rc' succeeded 
    [root@rc bin]#
  14. Inicie a pilha do CRS em todos os nós de computação.
    crsctl start cluster
    Exemplo:
    [root@rc bin]# ./crsctl start cluster 
    CRS-2672: Attempting to start 'ora.cssdmonitor' on 'rc' 
    . 
    . 
    . 
    CRS-2672: Attempting to start 'ora.crsd' on 'rc' 
    CRS-2676: Start of 'ora.crsd' on 'rc' succeeded 
    [root@rcbin]#
  15. Verifique se o fuso horário foi atualizado usando o comando a seguir.
    timedatectl
    Exemplo:
    [root@rc bin]# timedatectl 
             Local time: Thu 2023-03-16 01:19:15 PDT 
         Universal time: Thu 2023-03-16 08:19:15 UTC 
               RTC time: Thu 2023-03-16 08:19:10 
              Time zone: America/Los_Angeles (PDT, -0700) 
            NTP enabled: yes 
       NTP synchronized: no 
        RTC in local TZ: no 
             DST active: yes 
        Last DST change: DST began at 
                         Sun 2023-03-12 01:59:59 PST 
                         Sun 2023-03-12 03:00:00 PDT 
        Next DST change: DST ends (the clock jumps one hour backwards) at 
                         Sun 2023-11-05 01:59:59 PDT 
                         Sun 2023-11-05 01:00:00 PST

    Observe que o sistema agora está no fuso horário America/Los_Angeles (PDT).