Résumé : Procédure de mise à jour du fichier DST (Daylight Saving Time) d'Oracle Database, nécessaire lors d'une évolution des règles de changement d'heure dans les pays couverts par la base.
Environnement : Oracle Database 19c
Contexte
Oracle distribue ses règles de fuseau horaire (DST) dans des fichiers timezlrg_XX.dat embarqués dans $ORACLE_HOME/oracore/zoneinfo. Lorsqu'une nouvelle version du fichier est disponible (ex. : DSTv43), les colonnes de type TIMESTAMP WITH TIME ZONE stockées avec l'ancienne version peuvent devenir incohérentes.
Oracle fournit deux scripts pour gérer la mise à jour sans réinstallation du binaire :
| Script | Rôle |
|---|---|
utltz_upg_check.sql |
Analyse et prépare la mise à jour (lecture seule) |
utltz_upg_apply.sql |
Applique la mise à jour (redémarre la base 2 fois) |
Attention :
utltz_upg_apply.sqlredémarre la base deux fois sans confirmation. Planifier une fenêtre de maintenance.
Prérequis
- Être connecté en tant que
SYS AS SYSDBA - Aucune application ne doit être connectée pendant l'opération
Procédure
1. Vérifier la version DST actuelle et détecter la version disponible
@?/rdbms/admin/utltz_upg_check.sql
Exemple de sortie :
INFO: Database version is 19.0.0.0 .
INFO: Database RDBMS DST version is DSTv40 .
INFO: No known issues detected.
INFO: Newest RDBMS DST version detected is DSTv43 .
INFO: Now run utltz_upg_apply.sql to do the actual RDBMS DST update.
Le script confirme que la base est en DSTv40 et qu'une mise à jour vers DSTv43 est disponible. Aucune modification n'est effectuée à cette étape.
2. Appliquer la mise à jour DST
Attention : la base va redémarrer deux fois automatiquement.
@?/rdbms/admin/utltz_upg_apply.sql
Le script effectue les opérations suivantes :
- Redémarre la base en mode UPGRADE pour migrer les données SYS TSTZ
- Redémarre la base en mode NORMAL pour migrer les données non-SYS TSTZ
- Met à jour le fichier de timezone actif
Exemple de sortie (fin de script) :
INFO: Your new Server RDBMS DST version is DSTv43 .
INFO: The RDBMS DST update is successfully finished.
INFO: Make sure to exit this SQL*Plus session.
INFO: Do not use it for timezone related selects.
3. Vérifier la mise à jour
Ouvrir une nouvelle session SQL*Plus et exécuter :
select * from v$timezone_file;
Résultat attendu :
FILENAME VERSION CON_ID
-------------------- ---------- ----------
timezlrg_43.dat 43 0
Notes
- Ne pas utiliser la session SQL*Plus ayant exécuté
utltz_upg_apply.sqlpour des requêtes TSTZ après la migration. - Si des tables applicatives contiennent des colonnes
TIMESTAMP WITH TIME ZONE, valider les données après la mise à jour.