Gestisci fuso orario

Il campo Fuso orario nella console e nell'API consente di avviare le risorse del sistema DB con un fuso orario diverso da UTC (impostazione predefinita).

Il fuso orario specificato quando si crea il sistema di database si applica all'host e a Oracle Grid Infrastructure (se il sistema dispone di Grid Infrastructure) e controlla il fuso orario dei file di log del database. Il fuso orario del database stesso non è interessato. Tuttavia, il fuso orario del database influisce solo sul tipo di dati timestamp. È possibile modificare manualmente il fuso orario del database, ma Oracle consiglia di mantenerlo come UTC (impostazione predefinita) per evitare la conversione dei dati e migliorare le prestazioni quando i dati vengono trasferiti tra i database. Questa configurazione è particolarmente importante per i database distribuiti, le operazioni di replica ed esportazione e importazione.

Sebbene UTC sia il fuso orario consigliato da utilizzare, la presenza di un fuso orario comune per i client di database e gli host delle applicazioni può semplificare la gestione e la risoluzione dei problemi per l'amministratore del database.

Nota

I fusi orari sono in gran parte utilizzati a scopo di visualizzazione o per gestire l'input dell'utente. La modifica del fuso orario non modifica l'ora nel clock di sistema.

Opzioni fuso orario

Sia che si utilizzi la console o l'API, le opzioni relative al fuso orario da cui è possibile effettuare la selezione sono rappresentate nel formato dell'area denominata, ad esempio America/Los_Angeles. La console consente di selezionare UTC, il fuso orario rilevato nel browser (se il browser supporta il rilevamento del fuso orario) o un fuso orario alternativo.

Per specificare un fuso orario alternativo (l'opzione Seleziona un altro fuso orario), selezionare innanzitutto un valore nel campo Regione o paese per limitare la lista dei fusi orari da selezionare nel campo Fuso orario. Nell'esempio America/Los_Angeles, America è l'area temporale e Los_Angeles è il fuso orario. Le opzioni visualizzate in questi due campi sono approssimativamente correlate ai fusi orari supportati sia nella classe Java.util.TimeZone che nel sistema operativo Linux. Se il fuso orario desiderato non viene visualizzato, provare a selezionare "Varie" nel campo Regione e paese.

Suggerimento

Se si utilizza l'interfaccia API e si desidera visualizzare un elenco dei fusi orari supportati, è possibile esaminare le opzioni relative al fuso orario nella console. Queste opzioni vengono visualizzate nella pagina Crea sistema DB quando vengono visualizzate le opzioni avanzate dopo aver selezionato una forma di sistema DB.

Visualizza il fuso orario corrente

Per visualizzare le informazioni sul fuso orario, attenersi alla procedura riportata di seguito.

  1. Accedere all'host come utente Grid.

    Esempio:
    [opc@rc ~]$ sudo su - grid
  2. Utilizzare il comando seguente per visualizzare il fuso orario.
    timedatectl
    Esempio:
    [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

    Si noti che il sistema si trova attualmente nel fuso orario UTC.

  3. Accedere al database.

    Esempio:
    [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. È possibile visualizzare l'ora corrente del database utilizzando il comando seguente.
    sysdate
    Esempio:
    SQL> select to_char(sysdate,'DD-MON-YYYY HH24:MI:SS') from dual; 
    
    TO_CHAR(SYSDATE,'DD-
    --------------------
    16-MAR-2023 08:00:40
  5. Esci.

Modificare il fuso orario del sistema DB

Per impostare il fuso orario del sistema DB, attenersi alla procedura riportata di seguito.

  1. Accedere all'host come utente root.

    Esempio:
    [opc@rc ~]$ sudo su -
  2. Identificare il valore TZ (Time Zone) corretto da impostare utilizzando il comando seguente. Ad esempio, se si desidera identificare il valore TZ corretto per il fuso orario orientale degli Stati Uniti (EST/EDT), è possibile utilizzare il comando tzselect e scegliere Americas/United States/Eastern.
    tzselect
    Esempio:
    [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 ~]#

    Dal comando tzselect è stato identificato il valore TZ come America/New_York per il fuso orario EDT.

  3. Aggiornare il comando seguente per impostare il nuovo fuso orario.
    timedatectl set-timezone <new_time_zone>
    Esempio:
    [root@rc ~]# timedatectl set-timezone America/New_York
  4. Verificare se il fuso orario è stato aggiornato utilizzando il comando seguente.
    timedatectl
    Esempio:
    [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

    Il sistema si trova ora nel fuso orario America/New_York (EDT).

  5. Esci.

Modificare il fuso orario dell'host nei sistemi DB che utilizzano Grid Infrastructure

Il fuso orario di Oracle Grid Infrastructure determina il fuso orario dei file di log del database.

Eseguire i passi riportati di seguito per aggiornare le informazioni sul fuso orario dell'host dei sistemi DB che utilizzano Grid Infrastructure per la gestione dello storage.

Nota

  • I passi da 1 a 10 devono essere eseguiti su tutti i nodi di un cluster RAC.
  • I passi da 11 a 15 possono essere eseguiti su qualsiasi nodo di un cluster RAC.
  • Questa procedura non si applica ai sistemi DB con provisioning rapido che utilizzano Logical Volume Manager anziché Grid Infrastructure per la gestione dello storage.
  1. Accedere all'host come utente grid.

    Esempio:
    [opc@rc ~]$ sudo su - grid
  2. Identificare il valore TZ (Time Zone) corretto da impostare utilizzando il comando seguente. Ad esempio, se si desidera identificare il valore TZ corretto per il fuso orario PST/PDT (Pacific Pacific Time Zone), è possibile utilizzare il comando tzselect e scegliere Americas/United States/Pacific.
    tzselect
    Esempio:
    [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 ~]$

    Il valore TZ è stato identificato dal comando tzselect come America/Los_Angeles per il fuso orario PDT.

  3. Eseguire il comando seguente per ottenere il nome host.
    hostname
    Esempio:
    [grid@rc ~]$ hostname 
    rc
  4. Eseguire il comando seguente per ottenere il nome del database.
    srvctl config database -v
    Esempio:
    [grid@rc ~]$ srvctl config database -v 
    SMDB0316_iad1cx    /u01/app/oracle/product/21.0.0.0/dbhome_1    21.0.0.0.0
  5. Eseguire il logout come utente Grid e accedere come utente root.

    Esempio:
    [grid@rc ~]$ exit 
    logout 
    [opc@rc ~]$ sudo su -
  6. Passare alla seguente directory.
    cd $GRID_HOME/crs/install
    Esempio:
    [root@rc ~]# cd /u01/app/21.0.0.0/grid/crs/install/
  7. Modificare il contenuto del fuso orario del file seguente. Salvare e chiudere il file dopo averlo modificato.
    vim s_crsconfig_<hostname>_env.txt
    Esempio:
    [root@rc install]# vim s_crsconfig_rc_env.txt
  8. Verificare se la voce TZ nel file è stata aggiornata.
    cat s_crsconfig_<hostname>_env.txt
    Esempio:
    [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. Impostare il nuovo fuso orario utilizzando il comando seguente.
    timedatectl set-timezone <new_time_zone>
    Esempio:
    [root@rc install]# timedatectl set-timezone America/Los_Angeles

    Nota

    • I passi da 1 a 9 devono essere eseguiti su tutti i nodi di un cluster RAC.
    • I passi da 10 a 15 possono essere eseguiti su qualsiasi nodo di un cluster RAC.
  10. Passare alla seguente directory.
    cd $GRID_HOME/bin
    Esempio:
    [root@rc install]# cd /u01/app/21.0.0.0/grid/bin/
  11. Modificare il valore del fuso orario a livello di database utilizzando il comando seguente.
    srvctl setenv database -d <database_name> -t "TZ=<new_time_zone>"
    Esempio:
    [root@rc bin]# ./srvctl setenv database -d SMDB0316_iad1cx -t "TZ=America/Los_Angeles"
  12. Verificare l'insieme di valori del fuso orario utilizzando il comando seguente.
    srvctl getenv database -d <database_name>
    Esempio:
    [root@rc bin]# ./srvctl getenv database -d SMDB0316_iad1cx 
    SMDB0316_iad1cx: 
    TZ=America/Los_Angeles
  13. Arrestare lo stack CRS su tutti i nodi di calcolo.
    crsctl stop cluster
    Esempio:
    [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. Avviare lo stack CRS su tutti i nodi di calcolo.
    crsctl start cluster
    Esempio:
    [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. Verificare se il fuso orario è stato aggiornato utilizzando il comando seguente.
    timedatectl
    Esempio:
    [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

    Si noti che il sistema si trova ora nel fuso orario America/Los_Angeles (PDT).