NLS LANG pour JDBC thin driver?

j'utilise le driver thin Oracle JDBC ver 10.2.0 (ojdbc14.pot.) Je voudrais configurer son paramètre NLS_LANG manuellement. Est-il possible?

récupère actuellement ce paramètre depuis la variable VM user.langage (qui est défini automatiquement en définissant la locale actuelle, ou au démarrage à partir de l'environnement du système).

il s'agit d'un problème lorsque les utilisateurs commutent la locale de l'application à une autre qui n'est pas prise en charge par le pilote Oracle JDBC (par exemple mk_MK). Dans ce cas, la prochaine fois que je récupère une connexion, j'obtiens l'exception suivante:

ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified

je peux changer la localisation à la volée juste avant de récupérer la connexion et de revenir à celle sélectionnée par l'utilisateur, mais cela semble peu élégant et inefficace.

23
demandé sur skaffman 2009-07-03 20:06:54

5 réponses

les paramètres NLS_LANG sont dérivés du java.util.Paramètres régionaux . Par conséquent, vous devrez faire un appel similaire à celui-ci avant de vous connecter:

Locale.setDefault(Locale.<your locale here>);
13
répondu Adam Hawkes 2009-08-20 12:59:52

voir aussi: https://serverfault.com/questions/63216/ora-12705-cannot-access-nls-data-files-or-invalid-environment-specified/64536

pour moi, la meilleure réponse a été de foxyboa pour invoquer java app avec:

-Duser.country=en -Duser.language=en
17
répondu Michał Niklas 2017-04-13 12:13:44

je luttais contre le même problème et j'ai découvert que les pilotes thin JDBC Oracle n'exigent pas que NLS_LANG ou system locale soit spécifié. Mais quand vous vous connectez à des bases de données non-anglaises vous devez avoir orai18n.jar sur le chemin de la classe.

à partir de Base de données Oracle® JDBC du Guide de développement et Référence

La Fourniture De La Mondialisation De Soutien

La base Java Archive (JAR) des fichiers, ojdbc5.jar et ojdbc6.jar, contiennent tous les les classes nécessaires pour fournir soutien complet à la mondialisation pour:

  • jeux de caractères Oracle pour CHAR, Données de VARCHAR, LONGVARCHAR ou CLOB ce n'est pas récupérées ou inséré en tant que membre de données Oracle type d'objet ou de collection.
  • CHAR ou VARCHAR données membres de l'objet et collection pour les jeux de caractères US7ASCII, WE8DEC, WE8ISO8859P1, WE8MSWIN1252, et UTF8.

pour utiliser tout autre jeu de caractères CHAR ou VARCHAR data membres de objets ou collections, vous devez inclure orai18n.jar dans le chemin de la classe la variable d'environnement de votre application.

9
répondu Stanislav 2010-04-06 14:06:36

invoquer java avec les travaux suivants pour moi:

-Duser.country=us -Duser.language=en

si "fr" pour le pays provoque également ORA-12705 .

6
répondu svante 2012-10-03 08:12:30

vous devez utiliser L'ancien pilote Oracle 9.2 JDBC qui est entièrement compatible et certifié avec Oracle 10g. L'ancien pilote n'utilise pas les commandes ALTER SESSION SET NLS_LANGUAGE.

1
répondu user416472 2010-11-23 15:22:40