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.
Themen
- Übersicht über Oracle-Zeitzonendateien
- Strategien zum Aktualisieren Ihrer Zeitzonendatei
- Ausfallzeiten während der Aktualisierung der Zeitzonendatei
- Vorbereiten der Aktualisierung der Zeitzonendatei
- Hinzufügen der Option zur automatischen Aktualisierung der Zeitzonendatei
- Überprüfen Ihrer Daten nach der Aktualisierung der Zeitzonendatei
Ü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
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-namename
...
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.
Themen
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-group
Befehl 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:
-
Prüft auf eine neue DST-Version.
-
Bestimmt, dass DSTv34 im Dateisystem verfügbar ist.
-
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-versionnew-version
\ ----option-group-nameog-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:
-
Aktualisieren Sie Ihre DB-Engine nur mit dem folgenden CLI-Befehl:
aws rds modify-db-instance \ --db-instance-identifier
my-instance
\ --engine-versionnew-version
\ --apply-immediately -
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 Ihremmodify-db-instance
Befehl keine neue Optionsgruppe an, damit RDS Ihre Zeitzonendatei nicht aktualisiert. -
Ihre DB-Instance ist derzeit einer Optionsgruppe zugeordnet, die enthält
TIMEZONE_FILE_AUTOUPGRADE
. Ordnen Sie Ihre DB-Instance innerhalb eines einzigenmodify-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
So bereiten Sie die Aktualisierung der Zeitzonendatei vor
-
Verbinden Sie Ihren SQL-Client mit der Oracle-Datenbank.
-
Bestimmen Sie die aktuelle Version der verwendeten Zeitzonendatei.
SELECT * FROM V$TIMEZONE_FILE;
-
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;
-
Bestimmen Sie die Gesamtgröße von Tabellen, die Spalten vom Typ
TIMESTAMP WITH LOCAL TIME ZONE
oderTIMESTAMP 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');
-
Bestimmen Sie die Namen und Größen von Segmenten, die Spalten vom Typ
TIMESTAMP WITH LOCAL TIME ZONE
oderTIMESTAMP 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;
-
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 VerfahrenDBMS_DST.FIND_AFFECTED_TABLES
. Weitere Informationen finden Sie unter Prozedur CREATE_AFFECTED_TABLEin 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_TABLEin 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 * FROMmy_affected_table
; SELECT * FROMmy_error_table
; -
-
Fragen Sie die betroffenen und Fehlertabellen ab.
SELECT * FROM
my_affected_table
; SELECT * FROMmy_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
Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich Option groups (Optionsgruppen) aus.
-
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:
-
Wählen Sie für Engine die Oracle Database Edition für Ihre DB-Instance aus.
-
Wählen Sie für Major Engine Version (Engine-Hauptversion) die Version Ihrer DB-Instance aus.
Weitere Informationen finden Sie unter Erstellen einer Optionsgruppe.
-
-
Wählen Sie die Optionsgruppe aus, die Sie ändern möchten, und wählen Sie dann Add option (Option hinzufügen).
-
Führen Sie im Fenster Add option (Option hinzufügen) die folgenden Schritte aus:
-
Wählen Sie TIMEZONE_FILE_AUTOUPGRADE aus.
-
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.
-
-
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