programing

JDBC 씬 드라이버에 대한 NLS_LANG 설정?

telebox 2023. 6. 11. 10:35
반응형

JDBC 씬 드라이버에 대한 NLS_LANG 설정?

씬 Oracle JDBC 드라이버 버전 10.2.0(ojdbc14.jar)을 사용하고 있습니다.그것의 NLS_LANG 설정을 수동으로 구성하고 싶습니다.방법이 있습니까?

현재 VM 변수 user.language에서 이 설정을 가져옵니다(현재 로케일을 설정하여 자동으로 설정하거나 시스템 환경에서 시작할 때 설정됨).

이 문제는 사용자가 애플리케이션 로케일을 Oracle JDBC 드라이버에서 지원되지 않는 로케일(예: mk_MK)로 전환할 때 발생합니다.이 경우 다음에 연결을 가져올 때 다음과 같은 예외가 발생합니다.

ORA-00604: 재귀 SQL 수준 1에서 오류가 발생했습니다.ORA-12705: NLS 데이터 파일에 액세스할 수 없거나 잘못된 환경이 지정되었습니다.

연결을 가져오기 직전에 즉시 로케일을 변경하고 사용자가 선택한 로케일로 전환할 수 있지만, 이는 우아하지 않고 비효율적으로 보입니다.

참고 항목: https://serverfault.com/questions/63216/ora-12705-cannot-access-nls-data-files-or-invalid-environment-specified/64536

저에게 최고의 응답은 FoxyBOA가 Java 앱을 호출하는 것이었습니다.

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

NLS_LANG 설정은 java.util에서 파생됩니다.로캘.따라서 연결하기 전에 이와 유사한 전화를 걸어야 합니다.

Locale.setDefault(Locale.<your locale here>);

같은 문제를 해결하던 중 씬 jdbc Oracle 드라이버가 NLS_LANG 또는 시스템 로케일을 지정할 필요가 없다는 것을 알게 되었습니다.그러나 영어가 아닌 데이터베이스에 연결할 경우 클래스 경로에 orai18n.jar가 있어야 합니다.

Oracle® Database JDBC 개발자 가이드참조 자료 참조

세계화 지원 제공

기본 Java Archive(JAR) 파일인 ojdbc5.jar 및 ojdbc6.jar에는 다음에 대한 완벽한 글로벌화 지원을 제공하는 데 필요한 모든 클래스가 포함되어 있습니다.

  • Oracle 개체 또는 컬렉션 유형의 데이터 멤버로 검색되거나 삽입되지 않는 CHAR, VARCHAR, LONGVARCHAR 또는 CLOB 데이터에 대한 Oracle 문자 집합입니다.
  • 문자에 대한 개체 및 컬렉션의 CHAR 또는 VARCHAR 데이터 멤버는 US7ASCII, WE8DEC, WE8ISO8859P1, WE8MSWIN1252 및 UTF8을 설정합니다.

개체 또는 컬렉션의 CHAR 또는 VARCHAR 데이터 멤버에서 다른 문자 집합을 사용하려면 응용 프로그램의 CLASSPATH 환경 변수에 orai18n.jar를 포함해야 합니다.

를 호출하는 에게 효과가 : 음을사를용여호있다습니효과가나다에게은.

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

국가의 "en"도 ORA-12705를 유발하는 경우.

Oracle 10g과 완벽하게 호환되고 인증된 이전 Oracle 9.2 JDBC 드라이버를 사용해야 합니다.이전 드라이버는 ALTER SESSION SET NLS_Language 명령을 사용하지 않습니다.

언급URL : https://stackoverflow.com/questions/1079985/nls-lang-setting-for-jdbc-thin-driver

반응형