NLS_LANG per JDBC sottile driver?
Domanda
Io sto usando la sottile Oracle JDBC driver ver 10.2.0 (ojdbc14.jar).Vorrei configurare il suo NLS_LANG manualmente.C'è un modo?
Attualmente si recupera questa impostazione dalla VM variabile utente.lingua (che è impostato automaticamente impostando il locale corrente, o all'avvio dall'ambiente di sistema).
Questo è un problema quando l'utente di passare da un applicazione locale per uno che non è supportato dai driver JDBC Oracle (ad es.mk_MK).In questo caso, la prossima volta che è possibile recuperare una connessione ottengo la seguente eccezione:
ORA-00604: error occurred at recursive SQL level 1 ORA-12705: Cannot access NLS data files or invalid environment specified
Posso cambiare le impostazioni internazionali del volo prima di recuperare la connessione e tornare per l'utente selezionato uno avanti e indietro, ma questo sembra unelegant e unefficient.
Soluzione
Il NLS_LANG impostazioni deriva da java.util.Locale .Pertanto, è necessario effettuare una chiamata simile a questo prima di collegare:
Locale.setDefault(Locale.<your locale here>);
Altri suggerimenti
Si veda anche: https: //serverfault.com/questions/63216/ora-12705-cannot-access-nls-data-files-or-invalid-environment-specified/64536
Per me la risposta migliore era di FoxyBOA invocare applicazione Java con:
-Duser.country=en -Duser.language=en
Sono stato a combattere lo stesso problema e ho scoperto che sottile JDBC driver Oracle non richiedono NLS_LANG o locale del sistema da specificare. Ma quando ci si connette a database non inglesi si sono di avere orai18n.jar nel classpath.
dal di Oracle® Database sviluppatori JDBC Guida di riferimento
Fornire Globalizzazione Supporto
I file di base Java Archive (JAR), ojdbc5.jar e ojdbc6.jar, contenere tutte le classi necessarie per fornire supporto completo globalizzazione per:
- set di caratteri Oracle per CHAR, VARCHAR, LONGVARCHAR, o dati CLOB che non viene recuperata o inserito come un membro di dati di Oracle oggetto o tipo di raccolta.
- CHAR o membri di dati VARCHAR di oggetto e la raccolta per i set di caratteri US7ASCII, WE8DEC, WE8ISO8859P1, WE8MSWIN1252 e UTF8.
Per usare qualsiasi altro set di caratteri in CHAR o VARCHAR membri di dati di oggetti o collezioni, è necessario includere orai18n.jar nel CLASSPATH variabile d'ambiente della vostra applicazione.
Invocare Java con le seguenti opere per me:
-Duser.country=us -Duser.language=en
se "en" per paese provoca anche ORA-12705 .
Si dovrebbe utilizzare il vecchio Oracle 9.2 driver JDBC che è interamente compatibile e certificata con Oracle 10g. Il vecchio driver non usa i comandi NLS_LANGUAGE ALTER SESSION SET.