Automatische Aktualisierung der Oracle-Zeitzonendatei - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Automatische Aktualisierung der Oracle-Zeitzonendatei

Mit der TIMEZONE_FILE_AUTOUPGRADE Option können Sie die aktuelle Zeitzonendatei auf die neueste Version Ihrer DB-Instance von RDS für Oracle aktualisieren.

Übersicht über Oracle-Zeitzonendateien

Eine Zeitzonendatei von Oracle Database speichert die folgenden Informationen:

  • Abweichung von der koordinierten Weltzeit (UTC)

  • Übergangszeiten für die Sommerzeit (DST)

  • Abkürzungen für Standardzeit und Sommerzeit

Oracle Database stellt mehrere Versionen von Zeitzonendateien bereit. Wenn Sie eine Oracle-Datenbank in einer lokalen Umgebung erstellen, wählen Sie die Version der Zeitzonendatei aus. Weitere Informationen finden Sie unter Choosing a Time Zone-File im Oracle Database Globalization Support Guide.

Wenn die Regeln für die Sommerzeit geändert werden, veröffentlicht Oracle neue Zeitzonendateien. Oracle veröffentlicht diese neuen Zeitzonendateien unabhängig vom Zeitplan für vierteljährliche Release Updates (RUs ) und Release Update Revisions (RURs ). Die Zeitzonendateien befinden sich auf dem Datenbank-Host im Verzeichnis $ORACLE_HOME/oracore/zoneinfo/. Die Zeitzonendateinamen verwenden das Format DSTvVersion, z. B. DSTv35.

Auswirkungen der Zeitzonendatei auf die Datenübertragung

In Oracle Database speichert der TIMESTAMP WITH TIME ZONE-Datentyp Zeitstempel- und Zeitzonendaten. Daten mit dem Datentyp TIMESTAMP WITH TIME ZONE verwenden die Regeln in der zugeordneten Version der Zeitzonendatei. Daher sind vorhandene TIMESTAMP WITH TIME ZONE Daten betroffen, wenn Sie die Zeitzonendatei aktualisieren.

Probleme können auftreten, wenn Sie Daten zwischen Datenbanken übertragen, die unterschiedliche Versionen der Zeitzonendatei verwenden. Wenn Sie beispielsweise Daten aus einer Quelldatenbank mit einer höheren Zeitzonendateiversion als die Zieldatenbank importieren, gibt die Datenbank den ORA-39405 Fehler aus. Zuvor mussten Sie diesen Fehler mit einer der folgenden Techniken umgehen:

  • Erstellen Sie eine DB-Instance von RDS für Oracle mit der gewünschten Zeitzonendatei, exportieren Sie die Daten aus der Quelldatenbank und importieren Sie sie dann in die neue Datenbank.

  • Verwenden von AWS DMS oder logische Replikation, um Ihre Daten zu migrieren.

Automatische Updates mit der Option TIMEZONE_FILE_AUTOUPGRADE

Wenn die an Ihre DB-Instance von RDS für Oracle angefügte Optionsgruppe die TIMEZONE_FILE_AUTOUPGRADE Option enthält, aktualisiert RDS Ihre Zeitzonendateien automatisch. Indem Sie sicherstellen, dass Ihre Oracle-Datenbanken dieselbe Zeitzonendateiversion verwenden, vermeiden Sie zeitaufwändige manuelle Techniken, wenn Sie Daten zwischen verschiedenen Umgebungen verschieben. Die Option TIMEZONE_FILE_AUTOUPGRADE wird sowohl für Container-Datenbanken (CDBs) als auch Nicht-CDBs unterstützt.

Wenn Sie die Option TIMEZONE_FILE_AUTOUPGRADE Ihrer Optionsgruppe hinzufügen, können Sie auswählen, ob die Option sofort oder während des Wartungsfensters hinzugefügt werden soll. Nachdem Ihre DB-Instance die neue Option angewendet hat, prüft RDS, ob sie eine neuere DSTv-Versionsdatei installieren kann. Die DSTv-Zielversion hängt von den folgenden Faktoren ab:

  • Die Engine-Nebenversion, die Ihre DB-Instance derzeit ausführt

  • Die Engine-Nebenversion, auf die Sie Ihre DB-Instance aktualisieren möchten

Ihre aktuelle Zeitzonendateiversion könnte beispielsweise DSTv33 sein. Wenn RDS das Update auf Ihre Optionsgruppe anwendet, stellt es möglicherweise fest, dass DSTv34 derzeit auf Ihrem DB-Instance-Dateisystem verfügbar ist. RDS aktualisiert dann Ihre Zeitzonendatei automatisch auf DSTv34.

Um die verfügbaren DST-Versionen in den unterstützten RDS-Versionsaktualisierungen zu finden, sehen Sie sich die Patches in den Versionshinweisen für Amazon Relational Database Service (Amazon RDS) für Oracle an. Zum Beispiel listet Version 19.0.0.0.ru-2022-10.rur-2022-10.r1 Patch 34533061: RDBMS - DSTV39 UPDATE - TZDATA2022C auf.

Strategien zum Aktualisieren Ihrer Zeitzonendatei

Das Upgrade Ihrer DB-Engine und das Hinzufügen der TIMEZONE_FILE_AUTOUPGRADE Option zu einer Optionsgruppe sind separate Vorgänge. Durch das Hinzufügen der TIMEZONE_FILE_AUTOUPGRADE Option wird die Aktualisierung Ihrer Zeitzonendatei initiiert, wenn eine aktuellere verfügbar ist. Sie führen die folgenden Befehle aus (nur relevante Optionen werden angezeigt), entweder sofort oder beim nächsten Wartungsfenster:

  • Aktualisieren Sie Ihre DB-Engine nur mit dem folgenden RDS-CLI-Befehl:

    modify-db-instance --engine-version name ...
  • Fügen Sie die TIMEZONE_FILE_AUTOUPGRADE Option nur mit dem folgenden CLI-Befehl hinzu:

    add-option-to-option-group --option-group-name name --options OptionName=TIMEZONE_FILE_AUTOUPGRADE ...
  • Aktualisieren Sie Ihre DB-Engine und fügen Sie Ihrer Instance mit dem folgenden CLI-Befehl eine neue Optionsgruppe hinzu:

    modify-db-instance --engine-version name --option-group-name name ...

Ihre Aktualisierungsstrategie hängt davon ab, ob Sie Ihre Datenbank- und Zeitzonendatei zusammen aktualisieren oder nur einen dieser Vorgänge ausführen möchten. Wenn Sie Ihre Optionsgruppe aktualisieren und dann Ihre DB-Engine in separaten API-Operationen aktualisieren, ist es möglich, dass beim Upgrade Ihrer DB-Engine eine Aktualisierung der Zeitzonendatei ausgeführt wird.

Die Beispiele in diesem Abschnitt setzen Folgendes voraus:

  • Sie haben noch nicht TIMEZONE_FILE_AUTOUPGRADE zur Optionsgruppe hinzugefügt, die derzeit Ihrer DB-Instance zugeordnet ist.

  • Ihre DB-Instance verwendet die Datenbankversion 19.0.0.0.ru-2019-07.rur-2019-07.r1 und die Zeitzonendatei DSTv33.

  • Ihr DB-Instance-Dateisystem enthält die Datei DSTv34.

  • Das Release-Update 19.0.0.0.ru-2022-10.rur-2022-10.r1 umfasst DSTv35.

Sie können für die Aktualisierung Ihrer Zeitzonendatei die folgenden Strategien verfolgen.

Aktualisieren der Zeitzonendatei ohne Engine-Upgrade

In diesem Szenario verwendet Ihre Datenbank DSTv33, obwohl DSTv34 in Ihrem DB-Instance-Dateisystem verfügbar ist. Sie möchten die von Ihrer DB-Instance verwendete Zeitzonendatei von DSTv33 auf DSTv34 aktualisieren, ohne ein Upgrade Ihrer Engine auf eine neue Nebenversion durchzuführen, die DSTv35 enthält.

Fügen Sie in einem -add-option-to-option-groupBefehl TIMEZONE_FILE_AUTOUPGRADE der Optionsgruppe hinzu, die von Ihrer DB-Instance verwendet wird. Geben Sie an, ob die Option sofort hinzugefügt oder in das Wartungsfenster verschoben werden soll. Nach dem Anwenden der TIMEZONE_FILE_AUTOUPGRADE Option führt RDS Folgendes aus:

  1. Prüft auf eine neue DST-Version.

  2. Bestimmt, dass DSTv34 im Dateisystem verfügbar ist.

  3. Aktualisiert die Zeitzonendatei sofort.

Durchführen eines Upgrades der Zeitzonendatei und der DB-Engine-Version

In diesem Szenario verwendet Ihre Datenbank DSTv33, obwohl DSTv34 in Ihrem DB-Instance-Dateisystem verfügbar ist. Sie möchten ein Upgrade Ihre DB-Engine auf die Nebenversion 19.0.0.0.ru-2022-10.rur-2022-10.r1 durchführen, die DSTv35 enthält, und Ihre Zeitzonendatei beim Engine-Upgrade auf DSTv35 aktualisieren. Ihr Ziel ist es, DSTv34 zu überspringen und Ihre Zeitzonendateien direkt auf DSTv35 zu aktualisieren.

Um die Engine- und Zeitzonendatei zusammen zu aktualisieren, führen Sie modify-db-instance mit den --engine-version Optionen --option-group-name und aus. Sie können den Befehl sofort ausführen oder in das Wartungsfenster verschieben. Geben Sie eine Optionsgruppe anIn --option-group-name, die die TIMEZONE_FILE_AUTOUPGRADE Option enthält. Beispielsweise:

aws rds modify-db-instance --db-instance-identifier my-instance \ --engine-version new-version \ ----option-group-name og-with-timezone-file-autoupgrade \ --apply-immediately

RDS beginnt mit dem Upgrade Ihrer Engine auf 19.0.0.0.ru-2022-10.rur-2022-10.r1. Nach Anwendung der TIMEZONE_FILE_AUTOUPGRADE Option sucht RDS nach einer neuen DST-Version, stellt fest, dass DSTv35 in 19.0.0.0.ru-2022-10.rur-2022-10.r1 verfügbar ist, und startet sofort das Update auf DSTv35.

Um Ihre Engine sofort zu aktualisieren und dann Ihre Zeitzonendatei zu aktualisieren, führen Sie die Operationen nacheinander aus:

  1. Aktualisieren Sie Ihre DB-Engine nur mit dem folgenden CLI-Befehl:

    aws rds modify-db-instance \ --db-instance-identifier my-instance \ --engine-version new-version \ --apply-immediately
  2. Fügen Sie die TIMEZONE_FILE_AUTOUPGRADE Option mit dem folgenden CLI-Befehl der Optionsgruppe hinzu, die Ihrer Instance zugeordnet ist:

    aws rds add-option-to-option-group \ --option-group-name og-in-use-by-your-instance \ --options OptionName=TIMEZONE_FILE_AUTOUPGRADE \ --apply-immediately

Durchführen eines Upgrades Ihrer DB-Engine-Version, ohne die Zeitzonendatei zu aktualisieren

In diesem Szenario verwendet Ihre Datenbank DSTv33, obwohl DSTv34 in Ihrem DB-Instance-Dateisystem verfügbar ist. Sie möchten Ihre DB-Engine auf Version 19.0.0.0.ru-2022-10.rur-2022-10.r1 aktualisieren, die DSTv35 umfasst, aber die Zeitzonendatei DSTv33 beibehalten. Sie können sich aus den folgenden Gründen für diese Strategie entscheiden:

  • Ihre Daten verwenden nicht den Datentyp TIMESTAMP WITH TIME ZONE.

  • Ihre Daten verwenden den Datentyp TIMESTAMP WITH TIME ZONE, aber Ihre Daten sind nicht von den Zeitzonenänderungen betroffen.

  • Sie möchten die Aktualisierung der Zeitzonendatei verschieben, da Sie die zusätzliche Ausfallzeit nicht tolerieren können.

Ihre Strategie hängt davon ab, welche der folgenden Möglichkeiten zutrifft:

  • Ihre DB-Instance ist keiner Optionsgruppe zugeordnet, die TIMEZONE_FILE_AUTOUPGRADE umfasst. Geben Sie in Ihrem modify-db-instance Befehl keine neue Optionsgruppe an, damit RDS Ihre Zeitzonendatei nicht aktualisiert.

  • Ihre DB-Instance ist derzeit einer Optionsgruppe zugeordnet, die enthältTIMEZONE_FILE_AUTOUPGRADE. Ordnen Sie Ihre DB-Instance innerhalb eines einzigen modify-db-instance Befehls einer Optionsgruppe zu, die keine enthält, TIMEZONE_FILE_AUTOUPGRADE und aktualisieren Sie Ihre DB-Engine auf 19.0.0.0.ru-2022-10.rur-2022-10.r1.

Ausfallzeiten während der Aktualisierung der Zeitzonendatei

Wenn RDS Ihre Zeitzonendatei aktualisiert, werden vorhandene Daten, die TIMESTAMP WITH TIME ZONE verwenden, ggf. geändert. In diesem Fall geht es in erster Linie um Ausfallzeiten.

Warnung

Wenn Sie die Option TIMEZONE_FILE_AUTOUPGRADE hinzufügen, können längere Ausfallzeiten bei Ihrem Engine-Upgrade auftreten. Das Aktualisieren von Zeitzonendaten für eine große Datenbank kann Stunden oder sogar Tage dauern.

Die Länge des Updates der Zeitzonendatei hängt von Faktoren wie den folgenden ab:

  • Der Menge der Daten TIMESTAMP WITH TIME ZONE in Ihrer Datenbank

  • Die DB-Instance-Konfiguration

  • Der DB-Instance-Klasse

  • Der Speicherkonfiguration

  • Der Datenbankkonfiguration

  • Den Einstellungen für Datenbankparameter

Wenn Sie die folgenden Schritte ausführen, können zusätzliche Ausfallzeiten die Folge sein:

  • Hinzufügen der Option zur Optionsgruppe, wenn die DB-Instance eine veraltete Zeitzonendatei verwendet

  • Aktualisieren des Oracle-Datenbankmoduls, wenn die neue Engine-Version eine neue Version der Zeitzonendatei enthält

Anmerkung

Während der Aktualisierung der Zeitzonendatei ruft RDS for Oracle PURGE DBA_RECYCLEBIN auf.

Vorbereiten der Aktualisierung der Zeitzonendatei

Ein Upgrade der Zeitzonendatei besteht aus zwei separaten Phasen: Vorbereiten und Aktualisieren. Er ist zwar nicht zwingend erforderlich, wir empfehlen Ihnen jedoch nachdrücklich, den Vorbereitungsschritt auszuführen. In diesem Schritt erfahren Sie, welche Daten von der Ausführung der PL/SQL-Prozedur DBMS_DST.FIND_AFFECTED_TABLES betroffen sind. Weitere Informationen zum Vorbereitungsfenster finden Sie unter Aktualisieren der Zeitzonendatei und des Zeitstempels mit Zeitzonendaten in der Oracle Database-Dokumentation.

So bereiten Sie die Aktualisierung der Zeitzonendatei vor
  1. Verbinden Sie Ihren SQL-Client mit der Oracle-Datenbank.

  2. Bestimmen Sie die aktuelle Version der verwendeten Zeitzonendatei.

    SELECT * FROM V$TIMEZONE_FILE;
  3. Bestimmen Sie die neueste Version der Zeitzonendatei, die auf Ihrer DB-Instance verfügbar ist. Dieser Schritt trifft nur zu, wenn Sie Oracle Database 12c Release 2 (12.2) oder höher verwenden.

    SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
  4. Bestimmen Sie die Gesamtgröße von Tabellen, die Spalten vom Typ TIMESTAMP WITH LOCAL TIME ZONE oder TIMESTAMP WITH TIME ZONE enthalten.

    SELECT SUM(BYTES)/1024/1024/1024 "Total_size_w_TSTZ_columns_GB" FROM DBA_SEGMENTS WHERE SEGMENT_TYPE LIKE 'TABLE%' AND (OWNER, SEGMENT_NAME) IN (SELECT OWNER, TABLE_NAME FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE');
  5. Bestimmen Sie die Namen und Größen von Segmenten, die Spalten vom Typ TIMESTAMP WITH LOCAL TIME ZONE oder TIMESTAMP WITH TIME ZONE enthalten.

    SELECT OWNER, SEGMENT_NAME, SUM(BYTES)/1024/1024/1024 "SEGMENT_SIZE_W_TSTZ_COLUMNS_GB" FROM DBA_SEGMENTS WHERE SEGMENT_TYPE LIKE 'TABLE%' AND (OWNER, SEGMENT_NAME) IN (SELECT OWNER, TABLE_NAME FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE') GROUP BY OWNER, SEGMENT_NAME;
  6. Starten Sie den Vorbereitungsschritt.

    • Die Prozedur DBMS_DST.CREATE_AFFECTED_TABLE erstellt eine Tabelle zum Speichern aller betroffenen Daten. Sie übergeben den Namen dieser Tabelle an das Verfahren DBMS_DST.FIND_AFFECTED_TABLES. Weitere Informationen finden Sie unter Prozedur CREATE_AFFECTED_TABLE in der Oracle Database-Dokumentation.

    • Mit dem Verfahren CREATE_ERROR_TABLE wird eine Tabelle zum Protokollieren von Fehlern erstellt. Weitere Informationen finden Sie unter Prozedur CREATE_ERROR_TABLE in der Oracle Database-Dokumentation.

    Im folgenden Beispiel werden die betroffenen Daten und Fehlertabellen erstellt und alle betroffenen Tabellen gefunden.

    EXEC DBMS_DST.CREATE_ERROR_TABLE('my_error_table') EXEC DBMS_DST.CREATE_AFFECTED_TABLE('my_affected_table') EXEC DBMS_DST.BEGIN_PREPARE(new_version); EXEC DBMS_DST.FIND_AFFECTED_TABLES('my_affected_table', TRUE, 'my_error_table'); EXEC DBMS_DST.END_PREPARE; SELECT * FROM my_affected_table; SELECT * FROM my_error_table;
  7. Fragen Sie die betroffenen und Fehlertabellen ab.

    SELECT * FROM my_affected_table; SELECT * FROM my_error_table;

Hinzufügen der Option zur automatischen Aktualisierung der Zeitzonendatei

Wenn Sie die Option einer Optionsgruppe hinzufügen, befindet sich die Optionsgruppe in einem der folgenden Zustände:

  • Eine vorhandene Optionsgruppe ist derzeit mindestens an eine DB-Instance angefügt. Wenn Sie die Option hinzufügen, werden alle DB-Instances, die diese Optionsgruppe verwenden, automatisch neu gestartet. Dies führt zu einem kurzen Ausfall.

  • Eine vorhandene Optionsgruppe ist an keine DB-Instance angefügt. Sie planen, die Option hinzuzufügen und die vorhandene Optionsgruppe dann vorhandenen DB-Instances oder einer neuen DB-Instance zuzuordnen.

  • Sie erstellen eine neue Optionsgruppe und fügen die Option hinzu. Sie planen, die neue Optionsgruppe vorhandenen DB-Instances oder einer neuen DB-Instance zuzuordnen.

Konsole

So fügen Sie einer DB-Instance die Option zur automatischen Aktualisierung hinzu
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich Option groups (Optionsgruppen) aus.

  3. Bestimmen Sie die zu verwendende Optionsgruppe. Sie können eine Optionsgruppe erstellen oder eine bestehende Optionsgruppe verwenden. Wenn Sie eine bestehende Optionsgruppe verwenden möchten, fahren Sie mit dem nächsten Schritt fort. Erstellen Sie andernfalls eine benutzerdefinierte DB-Optionsgruppe mit folgenden Einstellungen:

    1. Wählen Sie für Engine die Oracle Database Edition für Ihre DB-Instance aus.

    2. Wählen Sie für Major Engine Version (Engine-Hauptversion) die Version Ihrer DB-Instance aus.

    Weitere Informationen finden Sie unter Erstellen einer Optionsgruppe.

  4. Wählen Sie die Optionsgruppe aus, die Sie ändern möchten, und wählen Sie dann Add option (Option hinzufügen).

  5. Führen Sie im Fenster Add option (Option hinzufügen) die folgenden Schritte aus:

    1. Wählen Sie TIMEZONE_FILE_AUTOUPGRADE aus.

    2. Um die Option in allen zugeordneten DB-Instanzen zu aktivieren, sobald Sie sie hinzufügen, wählen Sie für Apply Immediately (Direkt anwenden) Yes (Ja). Wenn Sie No (Nein) (Standard) wählen, wird die Option während des nächsten Wartungsfensters in jeder zugeordneten DB-Instanz aktiviert.

  6. Wenn die Einstellungen Ihren Wünschen entsprechen, wählen Sie Add option (Option hinzufügen) aus.

AWS CLI

Im folgenden Beispiel wird der Befehl AWS CLI add-option-to-option-group verwendet, um die TIMEZONE_FILE_AUTOUPGRADE Option zu einer Optionsgruppe namens hinzuzufügenmyoptiongroup.

Für Linux, macOSoder Unix:

aws rds add-option-to-option-group \ --option-group-name "myoptiongroup" \ --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" \ --apply-immediately

Windows:

aws rds add-option-to-option-group ^ --option-group-name "myoptiongroup" ^ --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" ^ --apply-immediately

Überprüfen Ihrer Daten nach der Aktualisierung der Zeitzonendatei

Wir empfehlen, dass Sie Ihre Daten überprüfen, nachdem Sie die Zeitzonendatei aktualisiert haben. Während des Vorbereitungsschritts erstellt RDS for Oracle automatisch die folgenden Tabellen:

  • rdsadmin.rds_dst_affected_tables – Listet die Tabellen auf, die von der Aktualisierung betroffene Daten enthalten

  • rdsadmin.rds_dst_error_table – Listet die Fehler auf, die während der Aktualisierung generiert wurden

Diese Tabellen hängen nicht von den Tabellen ab, die Sie im Vorbereitungsfenster erstellen. Zum Aufrufen der Ergebnisse der Aktualisierung fragen Sie die Tabellen wie folgt ab.

SELECT * FROM rdsadmin.rds_dst_affected_tables; SELECT * FROM rdsadmin.rds_dst_error_table;

Weitere Informationen zum Schema für die betroffenen Daten und Fehlertabellen finden Sie unter der Prozedur FIND_AFFECTED_TABLES in der Oracle-Dokumentation.