본문 바로가기
DB/Oracle

Oracle ORA-12705 에러 발생시 DATABASE

by Lohen 2016. 2. 4.

DBI connect('xxx','yyy',...) failed: ORA-12705: invalid or unknown NLS parameter value specified (DBD ERROR: OCISessionBegin) at C:\temp\zzz.pl line 11

 

액셀 데이타와 오라클 데이타랑 섞어서 뭔 짓을 좀 해볼라고, 간단한 테스트를 위해

Perl 의 Win32::OLE 모듈과 DBI 오라클 드라이버를 이용해봤다. 근데 초기부터 저따위

에러를 턱 뱉어내는게 아닌가? 신발...

 

문제의 해결책은 오라클 메타링크 Note 158654.1문서에 보면 나오는데

문서의 차례를 보면...

 

1. ORA-12705 with incorrectly specified NLS_LANG
2. ORA-12705 with incorrectly specified ORA_NLSx
3. ORA-12705 due to Installation Issues
4. ORA-12705 when using Special Charactersets
5. ORA-12705 when connecting via SQL*Net
6. ORA-12705 during Migration
7. ORA-12705 when connecting with SVRMGRL and SQLPLUS
8. ORA-12705 when connecting with Precompiler Aplications
9. ORA-12705 during Export/Import

 

쩝, 차례부터 너무 평범하지 않냐? 내용은 오라클 조금 하신 분은 다 알만한 내용...

어차피 대부분의 문제는 1번에서 결판난다. 그런데 오라클 윈도즈 버전은 유닉스에서

환경변수로 처리하는 부분을 레지스트리에 넣어둔다. 꼬이는 부분은 오라클 관련

레지스트리에 접근해 보면 NLS_LANG 이라는 부분이 한두개가 아니고 3개나 된다는 거거든. ^^;

 

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES\ID0

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0

이렇게 3개!

 

그러나, 처음 인스톨시에는 마지막 ...\ORACLE\HOME0 만 NLS_LANG 값이 설정되어

있고 (KOREAN_KOREA.KO16KSC5601) 나머지 것들에는 NA 로 되어 있다는 거거든...

 

그렇다면 잘 돌아가는 다른 어플리케이션들은 ...\ORACLE\HOME0 만 참고하여 언어셋을

설정하는데 Perl 은 (아님 DBI 가) 다른 부분의 NLS_LANG 값을 참고한다는 거거든...

(프라하의 연인 김주혁의 스타일로 읽어주기 바라는 거거든... ^^; )

 

그렇다면 어디일까요? (연애술사의 박진희처럼...)

다행이도 처음에 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 의 NLS_LANG 에

KOREAN_KOREA.KO16KSC5601 를 넣어주니... 짜잔~ 에러없이 돌아가요. 유후~

 

왜 그런건 안써놓냐고 메타링크 바보~

 

별것도 아닌걸로 장황하게 타이핑하는 슬라임...-.-;

 

"검색으로 찾아와서 제 글 읽고, 문제 해결하신 분은 리플하기!"  

반응형