Erreur Oracle-01882 lors de la connexion avec SQL Developer

Dans cet article nous alors parler d’une erreur qui revient souvent à l’installation de SQL Developer lorsque l’on travaille dans un environnement international. La connexion à la nouvelle base ajoutée ne fonctionne pas à cause de 2 erreurs :  00604 et 01882.

Symptôme de l’erreur : Timezone region not found

L’erreur se produit lorsqu’on ajoute une nouvelle connexion. Au moment du test de la connexion, la connexion à la base est impossible. Une fenêtre indique :

  • ERROR ORA-00604 : error occurred at recursive SQL level 1
  • ERROR ORA-01882 : timezone region not found

Erreur SQL Developer 0182

Cette erreur est fréquente lorsque l’on travaille sur des serveurs qui ne sont pas situés dans le même fuseau horaire que celui définit sur poste sur lequel est installé SQL Developer. Les paramètres du serveur ne sont pas modifiables, on va donc plutôt s’orienter vers l’indication à SQL Developer qu’il doit tenir compte d’un autre fuseau horaire. Cette opération qui devrait assez simple à réaliser n’est pas du tout évidente à trouver.

Pour visualiser les propriétés de SQL Developer, ce n’est pas vraiment intuitif. On accède à ces informations par le menu « Aide » puis l’entrée « A propos de ».

Propriétés SQL Developer

On constate que par défaut notre poste n’est pas localisé dans un fuseau horaire particulier. Le paramètre n’est pas modifiable à partir de cet écran.

Ajout d’un fuseau horaire dans SQL Developer

Il faut le forcer au niveau du fichier de configuration le fuseau horaire à utiliser. Le paramètre n’est pas modifiable depuis les préférences de l’outil. Les modifications sont à apporter dans le fichier de configuration du programme sqldeveloper.conf dans le répertoire sqldeveloper\bin (Ici C:\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf).

A la fin du fichier il suffit d’ajouter une ligne avec le décalage horaire de la zone dans laquelle est placée le serveur :

  • AddVMOption -Duser.timezone=GMT+11

Ou encore mieux, ajouter directement la zone horaire et laisser Oracle gérer lui-même le décalage horaire :

  • AddVMOption -Duser.timezone=Pacific/Noumea

La liste des zones horaires est enregistrée dans la table V$TIMEZONE-NAMES. Si on affiche le contenu de cette table on peut facilement trouver la zone qui correspond à notre serveur.

SELECT * FROM   V$TIMEZONE_NAMES;

On obtient ainsi tous les fuseaux horaires disponibles dans Oracle :

TZNAMETZABBREV
Pacific/MidwaySST
Pacific/NiueLMT
Pacific/NiueNUT
Pacific/NorfolkLMT
Pacific/NorfolkNMT
Pacific/NorfolkNFT
Pacific/NoumeaLMT
Pacific/NoumeaNCT
Pacific/NoumeaNCST
Pacific/Pago_PagoLMT
Pacific/Pago_PagoSAMT
Pacific/Pago_PagoNST
Extrait de la table V$TIMEZONE_NAMES

Pour que la modification il faut redémarrer SQL Developer, la connexion fonctionne maintenant sans erreur. Ça y est nous voilà connectés à la base de données. En vérifiant à nouveau dans les propriétés de l’application on constate que le nouveau fuseau horaire a bien été pris en compte par SQL Developer.

Propriété SQL Developer avec Timezone

Un point n’a pas été vérifié mais aurait mérité qu’on s’y attarde : comment faire pour se connecter à deux serveurs Oracle dans 2 fuseaux horaires différents ?

Laisser un commentaire