Outils personnels

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

De wikiGite

(Oracle 10 : NLS_LANG, nls_*_parameters)
Ligne 2 : Ligne 2 :
 
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
* instance (v$nls_parameters -> vue dynamique) : initialisés par spfile, non dynamiques
+
* 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 (nls_session_parameters -> vue statique) : changés par alter session
  

Version du 9 février 2011 à 14:00

Oracle 10 : 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.