

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.

# Vorbereiten der Aktualisierung der Zeitzonendatei
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.preparing"></a>

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 des PL/SQL Verfahrens betroffen sind`DBMS_DST.FIND_AFFECTED_TABLES`. Weitere Informationen zum Vorbereitungsfenster finden Sie unter [Aktualisieren der Zeitzonendatei und des Zeitstempels mit Zeitzonendaten](https://docs.oracle.com/en/database/oracle/oracle-database/19/nlspg/datetime-data-types-and-time-zone-support.html#GUID-B0ACDB2E-4B49-4EB4-B4CC-9260DAE1567A) in der Oracle Database-Dokumentation.

**So bereiten Sie die Aktualisierung der Zeitzonendatei vor**

1. Verbinden Sie Ihren SQL-Client mit der Oracle-Datenbank.

1. Bestimmen Sie die aktuelle Version der verwendeten Zeitzonendatei.

   ```
   SELECT * FROM V$TIMEZONE_FILE;
   ```

1. Bestimmen Sie die neueste Version der Zeitzonendatei, die auf Ihrer DB-Instance verfügbar ist.

   ```
   SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
   ```

1. 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');
   ```

1. 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;
   ```

1. 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\$1AFFECTED\$1TABLE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DST.html#GUID-C53BAABA-914A-404C-9CD5-823257BE0B00) 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\$1ERROR\$1TABLE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DST.html#GUID-6A7EA024-B02D-4486-B1D6-EF6ABF5DE507) 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;
   ```

1. Fragen Sie die betroffenen und Fehlertabellen ab.

   ```
   SELECT * FROM my_affected_table;
   SELECT * FROM my_error_table;
   ```