Aller au contenu

    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

    cannot_acces_nls_or_invalid_environment_specified

    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