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
Pour préparer la mise à jour du fichier sur le fuseau horaire
-
Connectez-vous à votre base de données Oracle à l'aide d'un SQL client.
-
Déterminez la version actuelle du fichier sur le fuseau horaire utilisé.
SELECT * FROM V$TIMEZONE_FILE;
-
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;
-
Déterminez la taille totale des tables qui ont des colonnes de type
TIMESTAMP WITH LOCAL TIME ZONE
ouTIMESTAMP 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');
-
Déterminez les noms et les tailles des segments qui ont des colonnes de type
TIMESTAMP WITH LOCAL TIME ZONE
ouTIMESTAMP 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;
-
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édureDBMS_DST.FIND_AFFECTED_TABLES
. Pour plus d'informations, consultez la section CREATE_ AFFECTED _ TABLE Procéduredans 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éduredans 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 * FROMmy_affected_table
; SELECT * FROMmy_error_table
; -
-
Interrogez les tables affectées et les tables d'erreurs.
SELECT * FROM
my_affected_table
; SELECT * FROMmy_error_table
;