Zeitzone verwalten

Mit dem Feld Zeitzone in der Konsole und in der API können Sie DB-Systemressourcen mit einer anderen Zeitzone als UTC (dem Standard) starten.

Die Zeitzone, die Sie bei der Erstellung des Datenbanksystems angeben, gilt für den Host und für Oracle Grid Infrastructure (sofern für das System vorhanden) und steuert die Zeitzone der Datenbanklogdateien. Die Zeitzone der Datenbank selbst ist davon nicht betroffen. Die Zeitzone der Datenbank wirkt sich jedoch nur auf den Datentyp timestamp aus. Sie können die Zeitzone der Datenbank manuell ändern. Oracle empfiehlt jedoch, den Standardwert UTC beizubehalten, um eine Datenkonvertierung zu vermeiden und die Performance zu verbessern, wenn Daten zwischen Datenbanken übertragen werden. Diese Konfiguration ist besonders für verteilte Datenbanken, Replikationen sowie Export- und Importvorgänge wichtig.

Auch wenn UTC die empfohlene Zeitzone ist, kann eine gemeinsame Zeitzone für Ihre Datenbankclients und Anwendungshosts die Verwaltung und Fehlerbehebung für den Datenbankadministrator vereinfachen.

Hinweis:

Zeitzonen werden weitgehend zu Anzeigezwecken oder zur Verarbeitung von Benutzereingaben verwendet. Durch Ändern der Zeitzone wird die Uhrzeit der Systemuhr nicht geändert.

Zeitzonenoptionen

Unabhängig davon, ob Sie die Konsole oder die API verwenden, werden die verfügbaren Zeitzonenoptionen im Format der benannten Region dargestellt. Beispiel: America/Los_Angeles. Mit der Konsole können Sie UTC, die im Browser erkannte Zeitzone (wenn der Browser die Zeitzonenerkennung unterstützt) oder eine alternative Zeitzone auswählen.

Um eine alternative Zeitzone anzugeben (Option Andere Zeitzone auswählen), wählen Sie zunächst im Feld Region oder Land einen Wert aus. Dadurch wird die Liste der Zeitzonen begrenzt, die Sie im Feld Zeitzone auswählen können. Im Beispiel America/Los_Angeles ist America die Zeitregion und Los_Angeles die Zeitzone. Die in diesen beiden Feldern angezeigten Optionen entsprechen annähernd den Zeitzonen, die sowohl in der Klasse Java.util.TimeZone als auch vom Linux-Betriebssystem unterstützt werden. Wenn die gewünschte Zeitzone nicht angezeigt wird, wählen Sie im Feld Region und Land die Option "Sonstiges" aus.

Tipp:

Wenn Sie die API verwenden und eine Liste der unterstützten Zeitzonen anzeigen möchten, können Sie die Zeitzonenoptionen in der Konsole überprüfen. Diese Optionen werden auf der Seite DB-System erstellen angezeigt, wenn Sie nach der Auswahl einer DB-Systemausprägung erweiterte Optionen anzeigen.

Aktuelle Zeitzone anzeigen

Führen Sie die folgenden Schritte aus, um die Zeitzoneninformationen anzuzeigen.

  1. Melden Sie sich als Grid-Benutzer beim Host an.

    Beispiel:
    [opc@rc ~]$ sudo su - grid
  2. Mit dem folgenden Befehl können Sie die Zeitzone anzeigen.
    timedatectl
    Beispiel:
    [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

    Beachten Sie, dass sich das System derzeit in der UTC-Zeitzone befindet.

  3. Melden Sie sich bei der Datenbank an.

    Beispiel:
    [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. Sie können die aktuelle Datenbankzeit mit dem folgenden Befehl anzeigen.
    sysdate
    Beispiel:
    SQL> select to_char(sysdate,'DD-MON-YYYY HH24:MI:SS') from dual; 
    
    TO_CHAR(SYSDATE,'DD-
    --------------------
    16-MAR-2023 08:00:40
  5. Beenden.

Zeitzone des DB-Systems ändern

Führen Sie die folgenden Schritte aus, um die Zeitzone des DB-Systems festzulegen.

  1. Melden Sie sich als Root-Benutzer beim Host an.

    Beispiel:
    [opc@rc ~]$ sudo su -
  2. Identifizieren Sie mit dem folgenden Befehl den richtigen Zeitzonenwert (TZ). Beispiel: Wenn Sie den richtigen TZ-Wert für die Zeitzone US Eastern (EST/EDT) angeben möchten, können Sie den Befehl tzselect verwenden und "Americas/United States/Eastern" wählen.
    tzselect
    Beispiel:
    [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 ~]#

    Mit dem Befehl tzselect haben wir den TZ-Wert für die EDT-Zeitzone als America/New_York identifiziert.

  3. Aktualisieren Sie den folgenden Befehl, um die neue Zeitzone festzulegen.
    timedatectl set-timezone <new_time_zone>
    Beispiel:
    [root@rc ~]# timedatectl set-timezone America/New_York
  4. Prüfen Sie mit dem folgenden Befehl, ob die Zeitzone aktualisiert wurde.
    timedatectl
    Beispiel:
    [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

    Beachten Sie, dass sich das System jetzt in der Zeitzone America/New_York (EDT) befindet.

  5. Beenden.

Zeitzone des Hosts auf DB-Systemen ändern, die Grid Infrastructure verwenden

Die Zeitzone von Oracle Grid Infrastructure bestimmt die Zeitzone der Datenbanklogdateien.

Führen Sie die folgenden Schritte aus, um die Zeitzoneninformationen des Hosts der DB-Systeme zu aktualisieren, die Grid Infrastructure zur Speicherverwaltung verwenden.

Hinweis:

  • Die Schritte 1 bis 10 müssen auf allen Knoten in einem RAC-Cluster ausgeführt werden.
  • Die Schritte 11 bis 15 können auf einem beliebigen Knoten in einem RAC-Cluster ausgeführt werden.
  • Dieses Verfahren gilt nicht für schnell bereitgestellte DB-Systeme, die Logical Volume Manager anstelle von Grid Infrastructure zur Speicherverwaltung verwenden.
  1. Melden Sie sich beim Host als Benutzer grid an.

    Beispiel:
    [opc@rc ~]$ sudo su - grid
  2. Identifizieren Sie mit dem folgenden Befehl den richtigen Zeitzonenwert (TZ). Beispiel: Wenn Sie den richtigen TZ-Wert für die Zeitzone US Pacific (PST/PDT) angeben möchten, können Sie den Befehl tzselect verwenden und "Americas/United States/Pacific" wählen.
    tzselect
    Beispiel:
    [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 ~]$

    Mit dem Befehl tzselect haben wir den TZ-Wert für die PDT-Zeitzone als America/Los_Angeles identifiziert.

  3. Führen Sie den folgenden Befehl aus, um den Hostnamen abzurufen.
    hostname
    Beispiel:
    [grid@rc ~]$ hostname 
    rc
  4. Führen Sie den folgenden Befehl aus, um den Datenbanknamen abzurufen.
    srvctl config database -v
    Beispiel:
    [grid@rc ~]$ srvctl config database -v 
    SMDB0316_iad1cx    /u01/app/oracle/product/21.0.0.0/dbhome_1    21.0.0.0.0
  5. Melden Sie sich als Grid-Benutzer ab und als Root-Benutzer an.

    Beispiel:
    [grid@rc ~]$ exit 
    logout 
    [opc@rc ~]$ sudo su -
  6. Navigieren Sie zum folgenden Verzeichnis.
    cd $GRID_HOME/crs/install
    Beispiel:
    [root@rc ~]# cd /u01/app/21.0.0.0/grid/crs/install/
  7. Bearbeiten Sie den TZ-Inhalt der folgenden Datei. Speichern und schließen Sie die Datei, nachdem Sie sie bearbeitet haben.
    vim s_crsconfig_<hostname>_env.txt
    Beispiel:
    [root@rc install]# vim s_crsconfig_rc_env.txt
  8. Prüfen Sie, ob der TZ-Eintrag in der Datei aktualisiert wurde.
    cat s_crsconfig_<hostname>_env.txt
    Beispiel:
    [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. Legen Sie die neue Zeitzone mit dem folgenden Befehl fest.
    timedatectl set-timezone <new_time_zone>
    Beispiel:
    [root@rc install]# timedatectl set-timezone America/Los_Angeles

    Hinweis:

    • Die Schritte 1 bis 9 müssen auf allen Knoten in einem RAC-Cluster ausgeführt werden.
    • Die Schritte 10 bis 15 können auf einem beliebigen Knoten in einem RAC-Cluster ausgeführt werden.
  10. Navigieren Sie zum folgenden Verzeichnis.
    cd $GRID_HOME/bin
    Beispiel:
    [root@rc install]# cd /u01/app/21.0.0.0/grid/bin/
  11. Ändern Sie den TZ-Wert auf Datenbankebene mit dem folgenden Befehl in die gewünschte Zeitzone.
    srvctl setenv database -d <database_name> -t "TZ=<new_time_zone>"
    Beispiel:
    [root@rc bin]# ./srvctl setenv database -d SMDB0316_iad1cx -t "TZ=America/Los_Angeles"
  12. Prüfen Sie das TZ-Werteset mit dem folgenden Befehl.
    srvctl getenv database -d <database_name>
    Beispiel:
    [root@rc bin]# ./srvctl getenv database -d SMDB0316_iad1cx 
    SMDB0316_iad1cx: 
    TZ=America/Los_Angeles
  13. Stoppen Sie den CRS-Stack auf allen Compute Nodes.
    crsctl stop cluster
    Beispiel:
    [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. Starten Sie den CRS-Stack auf allen Compute Nodes.
    crsctl start cluster
    Beispiel:
    [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. Prüfen Sie mit dem folgenden Befehl, ob die Zeitzone aktualisiert wurde.
    timedatectl
    Beispiel:
    [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

    Beachten Sie, dass sich das System jetzt in der Zeitzone America/Los_Angeles (PDT) befindet.