ORA-12705: Cannot access NLS data files or invalid environment specified
Description
C’est l’une des principales erreurs que l’on rencontre dans les logs des Intranet Server. L’erreur indique que P5 n’arrive pas à se connecter à la base de données. Cette erreur survient en général juste après le chargement des patchs (« Loading update scXXXX»). Lorsque cette erreur survient P5 tente de démarrer à nouveau en boucle.
Cause
L’accès à la base de données ORACLE est impossible. Ce problème peut avoir plusieurs causes :
→ Erreur de paramétrage des fichiers ini de Planisware (database.ini, local_env)
→ Mauvaise définition de l’alias de BDD dans le tnsnames.ora
→ Problème d’accès réseau si la BDD est sur un serveur différent de P5
Résolution
Les différentes étapes suivantes permettent de valider successivement différents éléments sensibles de la connexion à une base de données ORACLE par P5. Chacun de ces éléments est nécessaire au fonctionnement de l’application.
1) Vérifier la connexion au serveur de base de données (s’il est différent du serveur hébergeant les services P5) par ping de son IP.
_ping < IP Serveur >
_
avec :
< IP Serveur > : le nom ou l’IP du serveur tel que renseigné dans le fichier database.ini sous le paramètre « :data-source-host »
Réponse attendue :
ping xxx.xxx.xxx.xxx
Envoi d’une requête ‘Ping’ xxx.xxx.xxx.xxx avec 32 octets de données :
Réponse de xxx.xxx.xxx.xxx : octets=32 temps<1ms TTL=128
Réponse de xxx.xxx.xxx.xxx : octets=32 temps<1ms TTL=128
Réponse de xxx.xxx.xxx.xxx : octets=32 temps<1ms TTL=128
Réponse de xxx.xxx.xxx.xxx : octets=32 temps<1ms TTL=128
Statistiques Ping pour xxx.xxx.xxx.xxx:
Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
En cas d’erreur résoudre le problème de connexion réseau entre les 2 machines.
ping xxx.xxx.xxx.xxx
Envoi d’une requête ‘Ping’ xxx.xxx.xxx.xxx avec 32 octets de données :
Délai d’attente de la demande dépassé.
Délai d’attente de la demande dépassé.
Statistiques Ping pour xxx.xxx.xxx.xxx:
Paquets : envoyés = 2, reçus = 0, perdus = 2 (perte 100%),
2) Vérifier la configuration de l’alias tns par un tnsping.
Avec le user unix qui lance les services P5 :
tnsping
avec < BASE > le nom de la base de données défini dans le fichier database.ini sous le paramètre « : machine »
Réponse attendue : description de l’alias terminé par « OK »
En cas d’erreur vérifier que l’alias est bien correctement défini dans le fichier tnsnames.ora.
3) Vérifier la connexion à la base de données
Avec le user unix qui lance les services P5 :
sqlplus
avec :
< BASE > le nom de la base de données défini dans le fichier database.ini sous le paramètre « : machine »
USER : le nom du user ORACLE du schéma. Il est défini dans le fichier database.ini sous le paramètre « :user-name »
PWD : le mot de passe ORACLE du schéma. Il est défini dans le fichier database.ini sous le paramètre « : password » en clair ou sous « :crypted-password » s’il est crypté.
Réponse attendue : connexion à la base de données via SQLPLUS
En cas d’erreur, vérifier que la base de données est bien démarrée ainsi que son listener. Si SQLPLUS ne se lance pas cela signifie que les paramètres ORACLE n’ont pas été positionnés sur le profil de l’utilisateur unix qui lance les services P5. Cela peut aussi signifier que le client oracle n’est pas installé.
4) Vérifier que le module Connect est bien lancé
Sous unix avec le user unix qui lance les services P5 :
ps –ef |grep connect
5) Vérifier que le module Connect est accessible et fonctionne
Sous unix avec le user unix qui lance les services P5 :
_telnet
_
avec :
< IP Serveur > : le nom ou l’IP du serveur tel que renseigné dans le fichier database.ini sous le paramètre « :data-source-host »
< Port Connect > : le port du service Connect tel que renseigné dans le fichier database.ini sous le paramètre « :data-source-service »
Résultat attendu : pas d’erreur de connexion. Si ce n’est pas le cas, vérifier sur quel port a été lancé le service Connect.
A titre d’exemple, voici un extrait de log traçant une erreur d’accès à la BDD :
…..
…..
Loading update sc6866 version 3.6
Loading update sc6867 version 3.1
(:SAVE T)
(08/09/2011 12:38:16) – Main process Déclenchement d’une réinitialisation du cache des unités d’oeuvre
(08/09/2011 12:38:16) – Main process Planisware 5 – build 0517 – SP1 starting
(08/09/2011 12:38:16) – Main process Connecting to DATABASE_PLW () with account « INTRANET »
Connexion (ORACLE-V10 DATABASE_PLW)
Connexion (ORACLE-V10 DATABASE_PLW)
(08/09/2011 12:38:16) – Main process Il n’y a aucun driver disponible pour la base ORACLE-V10.
(08/09/2011 12:38:16) – Main process Le gestionnaire de base de données a fait état de l’erreur suivant:
Identifiant : 12705
Libellé : OCILogon: OCI_ERROR
Informations: ORA-12705: Cannot access NLS data files or invalid environment specified
Calcul des dates
Connexion (ORACLE-V10 DATABASE_PLW)
(08/09/2011 12:38:16) – Main process Il n’y a aucun driver disponible pour la base ORACLE-V10.
Calcul des dates(08/09/2011 12:38:16) – Main process Recalcul de toutes les activités chargées
Connexion (ORACLE-V10 DATABASE_PLW)
(08/09/2011 12:38:16) – Main process Il n’y a aucun driver disponible pour la base ORACLE-V10.
(08/09/2011 12:38:16) – Main process Réinitialisation du cache des unités d’oeuvre
Connexion (ORACLE-V10 DATABASE_PLW)
(08/09/2011 12:38:16) – Main process Il n’y a aucun driver disponible pour la base ORACLE-V10.
(08/09/2011 12:38:16) – Main process Calcul des coûts sur toutes les données chargées
Connexion (ORACLE-V10 DATABASE_PLW)
(08/09/2011 12:38:16) – Main process Il n’y a aucun driver disponible pour la base ORACLE-V10.
(08/09/2011 12:38:16) – Main process Fin du calcul des coûts
Déconnexion
(08/09/2011 12:38:16) – Main process Rapport d’erreur :
Date : 08/09/2011 12:38:16
Software version : Planisware 5 – build 0517 – SP1
Server : 64-bit x86-64 #xffffffffcb0a6324 64-bit Linux (x86-64), glibc 2.4 Linux pcya00mp 2.6.18-164.9.1.el5 #1 SMP Wed Dec 9 03:27:37 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
Client : Unknown
User : Unknown user
Process : Initial Lisp Listener
Error : « Abnormal exit »
Evaluation stack:
->(SYS::..RUNTIME-OPERATION . :UNKNOWN-ARGS)
(TPL:DO-COMMAND « zoom » :FROM-READ-EVAL-PRINT-LOOP NIL :COUNT 500
:ALL NIL :MODERATE T :SPECIALS NIL)
(ERROR:BACKTRACE-STACK T 10 10 #1= »Abnormal exit »)
(ERROR::BACKTRACE-BATCH-ERROR #1# :STREAM T :HOST « Unknown » :USER
« Unknown user »)
(HTTP-UTILS::BACKTRACE-TO-LOG #1#)
(FEATURES::OTTP-QUIT)
(PRINT-WRAPPER-QUIT)
[… FEATURES:QUIT ]
(HTTP-UTILS::%FIN)
(HTTP-UTILS::HTTP-EXIT)
(INTRANET::MAIN :PORT « 8400 »)
(:START)
(TPL:START-INTERACTIVE-TOP-LEVEL)
Fin du rapport d’erreur
Thu Sep 8 12:38:18 CEST 2011
Starting /appli/PLW/OPX2Modules/bin/Lx86_64/opx2-intranet.exe -I /appli/PLW/OPX2Modules/bin/Lx86_64/opx2-intranet.dxl -H /appli/PLW/OPX2Modules/bin/Lx86_64 — opx2-intranet -port 8400 -logdir /appli/PLW/OPX2HttpRoot/admin/log/
; Foreign loading /appli/PLW/OPX2Modules/lib/libopx2.Lx86_64.so.
Loading update sc5464 version 3.2