Préparation de la mise à jour du fichier sur le fuseau horaire - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Préparation de la mise à jour du fichier sur le fuseau horaire

Une mise à niveau de fichier sur le fuseau horaire comporte deux phases distinctes : la préparation et la mise à niveau. Même si ce n'est pas nécessaire, nous vous recommandons vivement de procéder à l'étape de préparation. Au cours de cette étape, vous découvrirez quelles données seront affectées par l'exécution de la SQL procédure DBMS_DST.FIND_AFFECTED_TABLES PL/. Pour plus d'informations sur la fenêtre de préparation, consultez Mise à niveau du fichier sur le fuseau horaire et de l'horodatage avec les données de fuseau horaire dans la documentation Oracle Database.

Pour préparer la mise à jour du fichier sur le fuseau horaire
  1. Connectez-vous à votre base de données Oracle à l'aide d'un SQL client.

  2. Déterminez la version actuelle du fichier sur le fuseau horaire utilisé.

    SELECT * FROM V$TIMEZONE_FILE;
  3. Déterminez la dernière version de fichier sur le fuseau horaire disponible sur votre instance de base de données.

    SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
  4. Déterminez la taille totale des tables qui ont des colonnes de type TIMESTAMP WITH LOCAL TIME ZONE ou TIMESTAMP WITH TIME ZONE.

    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. Déterminez les noms et les tailles des segments qui ont des colonnes de type TIMESTAMP WITH LOCAL TIME ZONE ou TIMESTAMP WITH TIME ZONE.

    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. Exécutez l'étape de préparation.

    • La procédure DBMS_DST.CREATE_AFFECTED_TABLE crée une table pour stocker toutes les données affectées. Vous passez le nom de cette table à la procédure DBMS_DST.FIND_AFFECTED_TABLES. Pour plus d'informations, consultez la section CREATE_ AFFECTED _ TABLE Procédure dans la documentation de la base de données Oracle.

    • Cette procédure CREATE_ERROR_TABLE crée une table pour journaliser les erreurs. Pour plus d'informations, consultez la section CREATE_ ERROR _ TABLE Procédure dans la documentation de la base de données Oracle.

    L'exemple suivant crée les tables de données et d'erreurs affectées, et recherche toutes les tables affectées.

    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. Interrogez les tables affectées et les tables d'erreurs.

    SELECT * FROM my_affected_table; SELECT * FROM my_error_table;