Oracle Language 설정 & Tomcat에서의 개발

2009. 4. 6. 15:31plming/DB

Oracle ERP는...기본 Language Set을...US로 가져간다.
이를 사용하기 위해서는...반드시, 개발환경이든, 실행환경이든 모두 Language Set을 맞춰주어야한다.

Multi-Language 환경에서 운영하기 위해
ERP System의 DB Column들에 LANGUAGE을 두고,
해당 DB의 Language Set에 따라서 Data들을 보여주게된다.

View로 정의된 경우,
where절에 T.LANGUAGE = userenv('LANG'); 식으로 조건이 붙어있어서
제아무리 정상적인 연결을 한 DB-Tool들(Toad,Orange,SQL-Plus등등)에서도,
정상적으로 처리를 한 SQL에서도...결과값은 나오지 않는다.

1. 설치한 Oracle의 Registry 설정을 변경한다.
   HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraDb10g_home2 일 경우,
   NLS_LANG 값을 아마도 default는...KOREAN_KOREA.KO16MSWIN949 일 것이다.
   US로 처리하기 위해서는 AMERICAN_AMERICA.KO16KSC5601 로 바꿔주어야한다.

안나오던 View가 제대로 나온다.


하지만, Tomcat을 사용한 Local에서 개발/Test에서는...정상적으로 실행되지 않는다.
역시나...결과값이 제대로 나오지 않는다.

연결된 DB의 Session에서 Language Set 정보를 확인해보기 위해
아래 Query를 실행해봤다.
SELECT USERENV('LANG') FROM DUAL;
위의 1번 절차로 인해, DB-Tool에서는 정상적으로 "US" 라고 나오지만,
Tomcat 상에서는...ㅡㅡ;;;  "KO" 로 나온다.


열심히 Web을 뒤져...찾은 첫번째 해결책...
톰켓 구동 기본 파일 설정에 Language 설정을 추가한다.
set JAVA_OPTS=-server -Xms64M -Xmx128M -Duser.language=US

사용중인 Windows XP에 설치된 Tomcat 4.1 에 동일하게 적용해보았다.
C:\Program Files\Apache Software Foundation\Tomcat 4.1\bin 의 catalina.bat 파일에...
또다른 Error를 만났다...ㅡㅡ;;;
java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified

새로 생긴 이 문제에 대해 정확한 해결책을 찾지 못했다...;;;


두번째 해결책...
(해결책이라기 보다는...꼼수...ㅡㅡ;;;
개발시에만 사용하고, 적용시엔 삭제...
적용할 서버에는 잘(?) 될 것으로 생각하고...쿨럭;;;)

문제가 되는 View를 사용하는 Query 앞에서
아래 Query를 먼저 실행해서, 강제로(!) Language Set을 바꿔준다...ㅡㅡ;;;
String sql2 = "ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN' ";
java.sql.PreparedStatement pstmt2 = conn.prepareStatement( sql2 );
pstmt2.executeUpdate();

이 문장을 지난 후에 실행한 Language Set 확인 SQL에서는
"US"로 정확히 값이 나온다...ㅡㅡ;;;


문제를 해결하기 보다...일단 개발이 조금 더 우선이라면...
일단은 위의 꼼수를 사용하는 것도 괜찮을 듯 싶다...ㅡㅡ;;;

위의 꼼수가 아닌, 해결책을 아시는 분은...
아래 Comment에 제보해주세요...*^^*


'plming > DB' 카테고리의 다른 글

Firebird DB등록 시 Error  (0) 2010.01.08
Firebird Backup/Restore  (0) 2010.01.08
TRUNC(), ROUND() Format  (0) 2009.05.15
Oracle Segment Shrlink  (3) 2009.04.13
java.sql.SQLException: Invalid column index  (0) 2009.03.13