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. Dans cette étape, vous découvrez quelles données seront affectées par l'exécution de la procédure PL/SQL DBMS_DST.FIND_AFFECTED_TABLES. 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 client SQL.

  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 Procédure CREATE_AFFECTED_TABLE dans la documentation Oracle Database.

    • Cette procédure CREATE_ERROR_TABLE crée une table pour journaliser les erreurs. Pour plus d'informations, consultez Procédure CREATE_ERROR_TABLE dans la documentation Oracle Database.

    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;