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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top