Outils personnels

NLS LANG et nls * parameters : Différence entre versions

De wikiGite

(Windows)
 
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 1 : Ligne 1 :
== Oracle 10 : NLS_LANG, nls_*_parameters ==
+
= Oracle 10 server : NLS_LANG, nls_*_parameters =
 
Il y a 3 niveaux de NLS :
 
Il y a 3 niveaux de NLS :
 
* database (nls_database_parameters -> vue statique) : initialisés à la création de la base, immuable
 
* database (nls_database_parameters -> vue statique) : initialisés à la création de la base, immuable
Ligne 24 : Ligne 24 :
 
sur une machine linux, on peut soit initialiser l'environnement, soit lancer sqlplus avec un environnement personnalisé :
 
sur une machine linux, on peut soit initialiser l'environnement, soit lancer sqlplus avec un environnement personnalisé :
 
  # export NLS_LANG=FRENCH_FRANCE.UTF8
 
  # export NLS_LANG=FRENCH_FRANCE.UTF8
 +
# export ORACLE_SID=orcl
 
  # sqlplus
 
  # sqlplus
 
ou
 
ou
 +
# export ORACLE_SID=orcl
 
  # NLS_LANG=FRENCH_FRANCE.UTF8 sqlplus
 
  # NLS_LANG=FRENCH_FRANCE.UTF8 sqlplus
 +
 
== Putty ==
 
== Putty ==
 
'''Note''' pour putty : si on se connecte à la machine linux par putty, '''il faut d'abord modifier la configuration de votre session putty''' (Dans Window → Translation) pour choisir le jeu de caractères UTF-8.
 
'''Note''' pour putty : si on se connecte à la machine linux par putty, '''il faut d'abord modifier la configuration de votre session putty''' (Dans Window → Translation) pour choisir le jeu de caractères UTF-8.

Version actuelle datée du 3 janvier 2012 à 08:22

Oracle 10 server : NLS_LANG, nls_*_parameters

Il y a 3 niveaux de NLS :

  • database (nls_database_parameters -> vue statique) : initialisés à la création de la base, immuable
  • instance (v$nls_parameters -> vue dynamique ou nls_instance_parameters -> vue statique) : initialisés par spfile, paramètres non dynamiques
  • session (nls_session_parameters -> vue statique) : changés par alter session

Session si non paramétré prend la valeur d'Instance qui si non paramétré prend la valeur de Database.

MAIS il y a un autre paramètre qui peut tout changer : NLS_LANG, paramètre d'environnement OS. Or sur Windows il est paramétré dans les registres.

Exemples :

  • NLS_LANG=AMERICAN_AMERICA.WE8ISO8859.

Une base crée en AMERICAN_AMERICA prendra cette valeur par défaut. Si on change le spfile, l'instance sera bien en FRENCH_FRANCE, MAIS les sessions utilisateurs resteront en AMERICAN_AMERICA à cause du NLS_LANG.

Par contre une base créée en FRENCH_FRANCE reportera bien ces paramètres sur instance et sessions.

  • NLS_LANG=FRENCH_FRANCE.WE8ISO8859.

La base créée en AMERICAN_AMERICA prend FRENCH_FRANCE au redémarrage. Si on a modifié le spfile, les sessions sont aussi en FRENCH_FRANCE.

SQLPLUS en UTF8

Pour insérer des données UTF8 dans une base, il ne suffit pas que celle-ci ait été créée en UTF8 : il faut que sqlplus sur le client qui fait les insertions soit paramétré en UTF8, ce qui n'est pas la valeur par défaut.

Linux

sur une machine linux, on peut soit initialiser l'environnement, soit lancer sqlplus avec un environnement personnalisé :

# export NLS_LANG=FRENCH_FRANCE.UTF8
# export ORACLE_SID=orcl
# sqlplus

ou

# export ORACLE_SID=orcl
# NLS_LANG=FRENCH_FRANCE.UTF8 sqlplus

Putty

Note pour putty : si on se connecte à la machine linux par putty, il faut d'abord modifier la configuration de votre session putty (Dans Window → Translation) pour choisir le jeu de caractères UTF-8.

Windows

Sur windows, ouvrir une fenêtre DOS, et intialiser l'environnement avant de lancer sqlplus :

C:\> set NLS_LANG=FRENCH_FRANCE.UTF8
C:\> set ORACLE_SID=orcl
C:\> sqlplus