oracle - ojdbc7 - Configuración NLS_LANG para el controlador JDBC delgado?
jdbc oracle java (5)
Estoy usando el controlador delgado de Oracle JDBC ver 10.2.0 (ojdbc14.jar). Me gustaría configurar su configuración NLS_LANG de forma manual. ¿Hay alguna manera?
Actualmente obtiene esta configuración de la variable VM user.language (que se establece automáticamente al establecer la configuración regional actual o al iniciar desde el entorno del sistema).
Este es un problema cuando los usuarios cambian la configuración regional de la aplicación a una que no es compatible con el controlador Oracle JDBC (por ejemplo, mk_MK). En este caso, la próxima vez que obtengo una conexión obtengo la siguiente excepción:
ORA-00604: error occurred at recursive SQL level 1 ORA-12705: Cannot access NLS data files or invalid environment specified
Puedo cambiar la configuración local sobre la marcha justo antes de buscar la conexión y volver a la seleccionada por el usuario de ida y vuelta, pero esto parece poco elegante e ineficiente.
Debe utilizar el antiguo controlador Oracle 9.2 JDBC que es totalmente compatible y certificado con Oracle 10g. El controlador anterior no utiliza los comandos ALTER SESSION SET NLS_LANGUAGE.
Invocar java con los siguientes trabajos para mí:
-Duser.country=us -Duser.language=en
si "en" para el país también causa ORA-12705 .
La configuración NLS_LANG se deriva de java.util.Locale. Por lo tanto, deberá realizar una llamada similar antes de conectarse:
Locale.setDefault(Locale.<your locale here>);
Luchaba contra el mismo problema y descubrí que los controladores de Oracle jdbc delgados no requieren que se especifique NLS_LANG o la configuración regional del sistema. Pero cuando se conecta a bases de datos no inglesas, debe tener orai18n.jar en el classpath.
de Oracle® Database JDBC Guía del desarrollador y referencia
Proporcionar soporte de globalización
Los archivos básicos de Java Archive (JAR), ojdbc5.jar y ojdbc6.jar, contienen todas las clases necesarias para proporcionar soporte completo de globalización para:
- El carácter de Oracle establece los datos CHAR, VARCHAR, LONGVARCHAR o CLOB que no se están recuperando o insertando como un miembro de datos de un objeto o tipo de colección de Oracle.
- Los datos de datos CHAR o VARCHAR del objeto y la colección para el carácter configuran US7ASCII, WE8DEC, WE8ISO8859P1, WE8MSWIN1252 y UTF8.
Para utilizar cualquier otro conjunto de caracteres en los datos CHAR o VARCHAR miembros de objetos o colecciones, debe incluir orai18n.jar en la variable de entorno CLASSPATH de su aplicación.
Ver también: https://serverfault.com/questions/63216/ora-12705-cannot-access-nls-data-files-or-invalid-environment-specified/64536
Para mí, la mejor respuesta fue por FoxyBOA para invocar la aplicación java con:
-Duser.country=en -Duser.language=en