Gestion du fuseau horaire

Le champ Fuseau horaire dans la console et dans l'API vous permet de lancer des ressources de système de base de données avec un fuseau horaire différent du format UTC (par défaut).

Le fuseau horaire que vous indiquez lors de la création du système de base de données s'applique à l'hôte et à Oracle Grid Infrastructure (si le système dispose de Grid Infrastructure). Il détermine également le fuseau horaire des fichiers journaux de la base de données. Le fuseau horaire de la base de données en elle-même n'est pas concerné. Toutefois, celui-ci n'a d'incidence que sur le type de données timestamp. Vous pouvez modifier manuellement le fuseau horaire de la base de données, mais Oracle recommande de le conserver au format UTC (valeur par défaut) pour éviter la conversion des données et améliorer les performances lors du transfert des données entre les bases de données. Cette configuration est particulièrement importante pour les bases de données distribuées, la réplication, et les opérations d'export et d'import.

Bien qu'UTC soit le format de fuseau horaire recommandé, vous pouvez choisir d'utiliser un fuseau horaire unique pour vos clients de base de données et vos hôtes d'application afin de simplifier les activités de gestion et de dépannage de l'administrateur de la base de données.

Remarques :

Les fuseaux horaires sont largement utilisés à des fins d'affichage ou pour gérer les entrées utilisateur. La modification du fuseau horaire ne modifie pas l'heure de l'horloge système.

Options de fuseau horaire

Que vous utilisiez la console ou l'API, les options de fuseau horaire que vous pouvez sélectionner sont représentées dans le format de région nommée, par exemple, America/Los_Angeles. La console vous permet de sélectionner UTC, le fuseau horaire détecté dans votre navigateur (si votre navigateur prend en charge la détection de fuseau horaire) ou un autre fuseau horaire.

Pour choisir un autre fuseau horaire (option Sélectionner un autre fuseau horaire), vous devez d'abord sélectionner une valeur dans le champ Région ou pays afin de réduire la liste des fuseaux horaires proposés dans le champ Fuseau horaire. Dans l'exemple America/Los_Angeles, America est la région horaire et Los_Angeles est le fuseau horaire. Les options affichées dans ces deux champs correspondent à peu près aux fuseaux horaires pris en charge par la classe Java.util.TimeZone et par le système d'exploitation Linux. Si le fuseau horaire que vous recherchez n'apparaît pas, essayez de sélectionner Divers dans le champ Région et pays.

Conseil :

Si vous utilisez l'API et que vous souhaitez voir la liste des fuseaux horaires pris en charge, vous pouvez consulter les options de fuseau horaire dans la console. Ces options apparaissent sur la page Créer un système de base de données lorsque vous affichez les options avancées après avoir sélectionné une forme de système de base de données.

Affichage du fuseau horaire en cours

Procédez comme suit pour afficher les informations sur le fuseau horaire.

  1. Connectez-vous à l'hôte en tant qu'utilisateur grid.

    Par exemple :
    [opc@rc ~]$ sudo su - grid
  2. Utilisez la commande suivante pour afficher le fuseau horaire.
    timedatectl
    Par exemple :
    [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

    Le système est actuellement dans le fuseau horaire UTC.

  3. Connectez-vous à la base de données.

    Par exemple :
    [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. Vous pouvez afficher l'heure actuelle de la base de données à l'aide de la commande suivante.
    sysdate
    Par exemple :
    SQL> select to_char(sysdate,'DD-MON-YYYY HH24:MI:SS') from dual; 
    
    TO_CHAR(SYSDATE,'DD-
    --------------------
    16-MAR-2023 08:00:40
  5. Quittez l'interface.

Modification du fuseau horaire du système de base de données

Pour définir le fuseau horaire du système de base de données, procédez comme suit.

  1. Connectez-vous à l'hôte en tant qu'utilisateur root.

    Par exemple :
    [opc@rc ~]$ sudo su -
  2. Identifiez la valeur de fuseau horaire (TZ) correcte à définir à l'aide de la commande suivante. Par exemple, si vous voulez identifier la valeur TZ correcte pour le fuseau horaire de l'est des Etats-Unis (EST/EDT), vous pouvez utiliser la commande tzselect et choisir Americas/United States/Eastern.
    tzselect
    Par exemple :
    [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 ~]#

    A partir de la commande tzselect, nous avons identifié la valeur TZ comme America/New_York pour le fuseau horaire EDT.

  3. Mettez à jour la commande suivante pour définir le nouveau fuseau horaire.
    timedatectl set-timezone <new_time_zone>
    Par exemple :
    [root@rc ~]# timedatectl set-timezone America/New_York
  4. Vérifiez si le fuseau horaire a été mis à jour à l'aide de la commande suivante.
    timedatectl
    Par exemple :
    [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

    Le système est désormais dans le fuseau horaire America/New_York (EDT).

  5. Quittez l'interface.

Modification du fuseau horaire de l'hôte sur des systèmes de base de données utilisant Grid Infrastructure

Le fuseau horaire d'Oracle Grid Infrastructure détermine le fuseau horaire des fichiers journaux de la base de données.

Effectuez les étapes suivantes pour mettre à jour les informations sur le fuseau horaire de l'hôte des systèmes de base de données qui utilisent Grid Infrastructure pour la gestion du stockage.

Remarques :

  • Les étapes 1 à 10 doivent être effectuées sur tous les noeuds d'un cluster RAC.
  • Les étapes 11 à 15 peuvent être effectuées sur n'importe quel noeud d'un cluster RAC.
  • Cette procédure ne s'applique pas aux systèmes de base de données provisionnés rapidement, qui utilisent le gestionnaire de volumes logiques au lieu de Grid Infrastructure pour la gestion du stockage.
  1. Connectez-vous à l'hôte en tant qu'utilisateur grid.

    Par exemple :
    [opc@rc ~]$ sudo su - grid
  2. Identifiez la valeur de fuseau horaire (TZ) correcte à définir à l'aide de la commande suivante. Par exemple, si vous voulez identifier la valeur TZ correcte pour le fuseau horaire Pacifique des Etats-Unis (PST/PDT), vous pouvez utiliser la commande tzselect et choisir Americas/United States/Pacific.
    tzselect
    Par exemple :
    [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 ~]$

    A partir de la commande tzselect, nous avons identifié la valeur TZ comme America/Los_Angeles pour le fuseau horaire PDT.

  3. Exécutez la commande suivante pour obtenir le nom d'hôte.
    hostname
    Par exemple :
    [grid@rc ~]$ hostname 
    rc
  4. Exécutez la commande suivante pour obtenir le nom de la base de données.
    srvctl config database -v
    Par exemple :
    [grid@rc ~]$ srvctl config database -v 
    SMDB0316_iad1cx    /u01/app/oracle/product/21.0.0.0/dbhome_1    21.0.0.0.0
  5. Déconnectez-vous en tant qu'utilisateur grid et connectez-vous en tant qu'utilisateur root.

    Par exemple :
    [grid@rc ~]$ exit 
    logout 
    [opc@rc ~]$ sudo su -
  6. Accédez au répertoire suivant.
    cd $GRID_HOME/crs/install
    Par exemple :
    [root@rc ~]# cd /u01/app/21.0.0.0/grid/crs/install/
  7. Modifiez le contenu TZ du fichier suivant. Enregistrez et fermez le fichier après l'avoir modifié.
    vim s_crsconfig_<hostname>_env.txt
    Par exemple :
    [root@rc install]# vim s_crsconfig_rc_env.txt
  8. Vérifiez si l'entrée TZ du fichier est mise à jour.
    cat s_crsconfig_<hostname>_env.txt
    Par exemple :
    [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. Définissez le nouveau fuseau horaire à l'aide de la commande suivante.
    timedatectl set-timezone <new_time_zone>
    Par exemple :
    [root@rc install]# timedatectl set-timezone America/Los_Angeles

    Remarques :

    • Les étapes 1 à 9 doivent être effectuées sur tous les noeuds d'un cluster RAC.
    • Les étapes 10 à 15 peuvent être effectuées sur n'importe quel noeud d'un cluster RAC.
  10. Accédez au répertoire suivant.
    cd $GRID_HOME/bin
    Par exemple :
    [root@rc install]# cd /u01/app/21.0.0.0/grid/bin/
  11. Remplacez la valeur TZ au niveau de la base de données par le fuseau horaire souhaité à l'aide de la commande suivante.
    srvctl setenv database -d <database_name> -t "TZ=<new_time_zone>"
    Par exemple :
    [root@rc bin]# ./srvctl setenv database -d SMDB0316_iad1cx -t "TZ=America/Los_Angeles"
  12. Vérifiez la valeur TZ définie à l'aide de la commande suivante.
    srvctl getenv database -d <database_name>
    Par exemple :
    [root@rc bin]# ./srvctl getenv database -d SMDB0316_iad1cx 
    SMDB0316_iad1cx: 
    TZ=America/Los_Angeles
  13. Arrêtez la pile CRS sur tous les noeuds de calcul.
    crsctl stop cluster
    Par exemple :
    [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. Démarrez la pile CRS sur tous les noeuds de calcul.
    crsctl start cluster
    Par exemple :
    [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. Vérifiez si le fuseau horaire a été mis à jour à l'aide de la commande suivante.
    timedatectl
    Par exemple :
    [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

    Le système est désormais dans le fuseau horaire America/Los_Angeles (PDT).