IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

Le Bon NLS_LANG


Sujet :

Administration Oracle

  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut Le Bon NLS_LANG
    Bonjour,
    Informations diverses :
    Version : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    Os Poste client: Winxp
    Os Poste serveur: Win2003 server
    Schema : scott/tiger

    Je me suis basé sur le lien suivant pour trouver la bonne config du NLS_LANG : http://fadace.developpez.com/oracle/nls/

    Actions :
    1-Je n'est pas modifié la base de registre car j'avait déja "FRENCH_FRANCE.WE8MSWIN1252" dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1\NLS_LANG=FRENCH_FRANCE.WE8MSWIN1252
    2- seule action effectuée (sous SqlplusDOS) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set NLS_LANG=FRENCH_FRANCE.WE8PC850 (seule action faite sur le poste client sous SqlplusDOS)
    Résultat : cela n'a pas résolu le problème des accents, quesce que j'ai mal appliqué?

    avant l'action :
    SqlplusW-TESTCONVERSION : affichage windows ok, Dos ko
    SqlplusDOS-TESTCONVERSION : affichage windows ko, Dos ok
    NLS_SESSION_PARAMETERS - SqlplusDOS pour NLS_CURRENCY et NLS_DUAL_CURRENCY j'avait "C"

    aprés l'action :
    SqlplusW-TESTCONVERSION : affichage windows ok, Dos ko
    SqlplusDOS-TESTCONVERSION : affichage windows ok, Dos ko
    NLS_SESSION_PARAMETERS - SqlplusDOS pour NLS_CURRENCY et NLS_DUAL_CURRENCY j'ai"¦"

    SqlplusW
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SQL> SELECT * FROM TESTCONVERSION ;
     
    cf : SqlplusW_TESTCONVERIONS.JPG
    SqlplusDOS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SQL> SELECT * FROM TESTCONVERSION ;
     
    cf : SqlplusDOS_TESTCONVERIONS.JPG
    NLS_DATABASE_PARAMETERS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    SQL> select * from NLS_DATABASE_PARAMETERS ;
    
    PARAMETER                      VALUE
    ------------------------------ -------------------------------------
    NLS_LANGUAGE                   AMERICAN
    NLS_TERRITORY                  AMERICA
    NLS_CURRENCY                   $
    NLS_ISO_CURRENCY               AMERICA
    NLS_NUMERIC_CHARACTERS         .,
    NLS_CHARACTERSET               WE8MSWIN1252
    NLS_CALENDAR                   GREGORIAN
    NLS_DATE_FORMAT                DD-MON-RR
    NLS_DATE_LANGUAGE              AMERICAN
    NLS_SORT                       BINARY
    NLS_TIME_FORMAT                HH.MI.SSXFF AM
    
    PARAMETER                      VALUE
    ------------------------------ -------------------------------------
    NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
    NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
    NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
    NLS_DUAL_CURRENCY              $
    NLS_COMP                       BINARY
    NLS_LENGTH_SEMANTICS           BYTE
    NLS_NCHAR_CONV_EXCP            FALSE
    NLS_NCHAR_CHARACTERSET         AL16UTF16
    NLS_RDBMS_VERSION              10.2.0.1.0
    
    20 ligne(s) sélectionnée(s).
    NLS_SESSION_PARAMETERS - SqlplusW
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    SQL> SELECT * FROM NLS_SESSION_PARAMETERS ;
     
    PARAMETER                      VALUE
    ------------------------------ ------------------------------------
    NLS_LANGUAGE                   FRENCH
    NLS_TERRITORY                  FRANCE
    NLS_CURRENCY                   €
    NLS_ISO_CURRENCY               FRANCE
    NLS_NUMERIC_CHARACTERS         ,
    NLS_CALENDAR                   GREGORIAN
    NLS_DATE_FORMAT                DD/MM/RR
    NLS_DATE_LANGUAGE              FRENCH
    NLS_SORT                       FRENCH
    NLS_TIME_FORMAT                HH24:MI:SSXFF
    NLS_TIMESTAMP_FORMAT           DD/MM/RR HH24:MI:SSXFF
     
    PARAMETER                      VALUE
    ------------------------------ ------------------------------------
    NLS_TIME_TZ_FORMAT             HH24:MI:SSXFF TZR
    NLS_TIMESTAMP_TZ_FORMAT        DD/MM/RR HH24:MI:SSXFF TZR
    NLS_DUAL_CURRENCY              €
    NLS_COMP                       BINARY
    NLS_LENGTH_SEMANTICS           CHAR
    NLS_NCHAR_CONV_EXCP            FALSE
     
    17 ligne(s) sélectionnée(s).
    NB : aprés copier coller ici j'ai le symbole euro, mais sous sqlplus j'ai un carré noir

    NLS_SESSION_PARAMETERS - SqlplusDOS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    SQL>  SELECT * FROM NLS_SESSION_PARAMETERS ;
    
    PARAMETER                      VALUE
    ------------------------------ ---------------------------------
    NLS_LANGUAGE                   FRENCH
    NLS_TERRITORY                  FRANCE
    NLS_CURRENCY                   ¦
    NLS_ISO_CURRENCY               FRANCE
    NLS_NUMERIC_CHARACTERS         ,
    NLS_CALENDAR                   GREGORIAN
    NLS_DATE_FORMAT                DD/MM/RR
    NLS_DATE_LANGUAGE              FRENCH
    NLS_SORT                       FRENCH
    NLS_TIME_FORMAT                HH24:MI:SSXFF
    NLS_TIMESTAMP_FORMAT           DD/MM/RR HH24:MI:SSXFF
    NLS_TIME_TZ_FORMAT             HH24:MI:SSXFF TZR
    NLS_TIMESTAMP_TZ_FORMAT        DD/MM/RR HH24:MI:SSXFF TZR
    NLS_DUAL_CURRENCY              ¦
    NLS_COMP                       BINARY
    NLS_LENGTH_SEMANTICS           CHAR
    NLS_NCHAR_CONV_EXCP            FALSE
    
    17 ligne(s) sélectionnée(s).
    Images attachées Images attachées   

  2. #2
    Membre expérimenté
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Par défaut
    Et quelle est la question ? Qu'essaies-tu de faire ?

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut
    Je voudrais trouver la bonne configuration du NLS_LANG pour avoir un affichage normal/correct des accents sous windows, dos et unix (sachant qu'ici je n'est pas unix, donc pas le moyen de tester ce troisième cas).

    Remarque : j'avait fait l'insert de la première ligne sous SqlplusW et celui de la deuxième ligne sous SqlplusDOS.

    losque je fait mon sélect sur la table :

    Avant action :
    SqlplusW : ok pour ligne insérée sous windows et ko pour la ligne insérée sous dos

    SqlplusDOS: ko pour ligne insérée sous windows et ok pour la ligne insérée sous dos

    Aprés action :
    SqlplusW : ok pour ligne insérée sous windows et ko pour la ligne insérée sous dos

    SqlplusDOS: ok pour ligne insérée sous windows et ko pour la ligne insérée sous dos

    Ce que je voudrai avoir c'est :

    SqlplusW : ok pour ligne insérée sous windows et ok pour la ligne insérée sous dos

    SqlplusDOS: ok pour ligne insérée sous windows et ok pour la ligne insérée sous dos

  4. #4
    Membre expérimenté
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Par défaut
    Où as-tu mis le SET NLS_LANG=FRENCH_FRANCE.WE8PC850 ?

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut
    Oui, c'est la seule action qui à été faite

  6. #6
    Membre expérimenté
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Par défaut
    OUi, mais OU ?

  7. #7
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut
    Je l'ai cité au début de la discussion : ca à été effectué sur le post client sous SqlplusDOS

  8. #8
    Membre expérimenté
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Par défaut
    Quelle est la manip exacte que tu as faite ?

  9. #9
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut
    set NLS_LANG=FRENCH_FRANCE.WE8PC850 (seule action faite sur le poste client sous SqlplusDOS)

  10. #10
    Membre expérimenté
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Par défaut
    Tu l'as mis dans un fichier ? Lequel ?

  11. #11
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut
    Je ne l'ai mis dans aucun fichier.

    j'ai fait l'action suivante :

    Démarrer-> Exécuter -> CMD -> SQLPLUS SCOTT/TIGER@LABASE

    set NLS_LANG=FRENCH_FRANCE.WE8PC850 (seule action faite sur le poste client sous SqlplusDOS)

  12. #12
    Membre expérimenté
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Par défaut
    Déjà, ce n'est pas sous sqlplus qu'il faut le faire mais sous dos.
    Ensuite, si tu fais cmd -> 'Set ....' ça ne fonctionnera que pour la session en cours.

    Mieux vaut passer par Démarrer -> Paramètres ->Panneau de config -> Système,

    puis l'onglet Avancé, il y a un bouton Variables d'environnement, tu cliques et tu fais Nouveau pour paramètrer le NLS_LANG (moi, je le mets en variable système, mais ça n'est pas vraiment important s'il n'y a qu'un utilisateur défini sur le poste client).

    Et voilà !

  13. #13
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut
    NB : je l'avait fait sous la console Ms-dos (et non sous sqlplus)
    Démarrer-> Exécuter -> CMD
    set NLS_LANG=FRENCH_FRANCE.WE8PC850

    Merci sgora, pour ta réponse cela résoud mon problème.

    Une dernière question escequ'il n'y a pas un moyen d'automatiser (script/trigger...). lors de l'ouverture de la session par exemple

    pour éviter de le faire manuellement sur chaque poste utilisateur

    Merci

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Par défaut
    Bonsoir Sahbichriki,
    Vous pouvez tout simplement passer par un script, fichier sql.bat (ou sql.cmd) du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus scott/tiger@alias

  15. #15
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut
    Bonjour sgora et tibal
    1-Je reviens sur mon problème initial au fait le problème n'est pas resolu, je viens de constater que pour les deux lignes insérées respectivement sous SqplusW et SqlplusDOS j'ai :

    SqlplusW : Ko windows, Ko DOS
    SqlplusDOS : Ok windows, Ok Dos

    Pour chaque caractère accentué, sous SqlplusW j'ai un carré noir

    Je récapitule :
    a-Dans la base de registre j'ai "FRENCH_FRANCE.WE8MSWIN1252"
    b-Variable d'environnement (paneau de config -> systeme -> ...) j'ai "FRENCH_FRANCE.WE8PC850"

    2- Pour la partie automatisation, je ne voudrai pas faire une manipulation pour chaque poste de travail, je voudrai que ca se gere au niveau du démarrage de la base ou de l'ouverture d'une session.
    Donc pas de manipulation pour chaque poste de travaille et pas de script ou commande lancée manuellement.

  16. #16
    Membre expérimenté
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Par défaut
    Bon, ça veut sans doute dire que rajouter la variable d'environnement au niveau windows supplante la valeur au niveau de la base de registre.
    Il n'y a dans ce cas pas d'autre choix que de mettre la variable dans un .bat qui s'exécutera avant chaque appel de sqlplus dos.
    Mais il y a vraiment des gens qui vont utiliser les deux versions de sqlplus ?

  17. #17
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut
    Effectivement, rajouter une variable d'environnement supplante la valeur au niveau de la base de registre.

    et apparement,Il n'y a dans ce cas pas d'autre choix que de mettre la variable dans un .bat qui s'exécutera avant chaque appel de sqlplus dos, donc pas d'automatisation possible.

    Pour répondre à ta question sgora, je suis le seul utilisateur actuellement j'anticipe sur des problèmariques que je pourrai rencontrer dans le future proche, et je voulais allez au bout du truc.

    Je considère le problème résolu, et je te remercie sgora ainsi que tibal

  18. #18
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 462
    Par défaut
    Bonjour

    Fadace l'a précisé en toutes lettres dans son article : "La tentation est grande, mais veillez surtout à ne JAMAIS mettre cette variable d'environnement dans la base de registre : elle prendrait le pas sur la valeur du registre ORACLE WE8MSWIN1252 ! "

    On a en effet besoin d'un paramétrage différencié.
    WE8PC850 lorsqu'on est en "fenêtre DOS", et WE8MSWIN1252 pour les applications graphiques (non web et non java) telles que SqlplusW ou TOAD.

  19. #19
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Apres avoir lu le tutoriel de Fadace, j'ai aussi quelques questions:

    1- Comment savoir et changer le NLS_LANG de la session en cours, plus precisement le charset?
    par exemple sous sqlplus dos,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM NLS_SESSION_PARAMETERS
    j'ai la langue et le territoire mais je n'ai pas le character_set pour savoir si oui ou non il y'a une conversion qui se fait entre le client et la BD.

    2- Comment savoir le charset du systeme d'exploitation?

    Bref moi j'ai xp, et oracle11g. comment savoir donc le charset de sqlplus et de sqldeveloper installer sur le pc?

    Merci

  20. #20
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Pour 1, d'après
    http://download.oracle.com/docs/cd/B...htm#SQLRF06117

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> select sys_context('USERENV','LANGUAGE') from dual;
     
    SYS_CONTEXT('USERENV','LANGUAGE')
    --------------------------------------------------------------------------------
     
    FRENCH_FRANCE.WE8MSWIN1252

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bon je vais essayer d'être simple :
    Par fpouget dans le forum Langage SQL
    Réponses: 8
    Dernier message: 09/04/2003, 18h46
  2. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 14h16
  3. Existe t 'il un bon générateur d'état WEB ?
    Par plichtal dans le forum Autres outils décisionnels
    Réponses: 2
    Dernier message: 10/01/2003, 15h31
  4. [SWT] Un bon coin ou trouver des infos pratik
    Par yolepro dans le forum SWT/JFace
    Réponses: 8
    Dernier message: 04/12/2002, 15h08
  5. character set // Nls_lang
    Par fopicht dans le forum Oracle
    Réponses: 2
    Dernier message: 23/05/2002, 13h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo