컴퓨터를 새로 재 설치를 해야 하는 사정이 발생하여 윈도우 운영체제부터 새로 재 설치를 하게되었습니다.
새로 설치한 다른 응용 프로그램은 사용에 문제가 없는데 유독 Oracle DB에 연결하는 응용 프로그램을 실행하면 아래와 같은 오류가 발생하였습니다.
Error : ORA-12705: Cannot access NLS data files or invalid environment specified
이번 글에서는 오라클 ORA-12705 Cannot access NLS data files or invalid environment specified 오류 해결 방법에 대해 알아보겠습니다.
NLS_LANG란?
오류 해결 방법을 설명하기에 앞서 오라클 환경 변수의 NLS_LANG에 대해 간략하게 설명하겠습니다.
NLS_LANG은 [LANGUAGE]_[TERRITORY].[CHARACTERSET] 3가지 요소로 구성되는 환경 변수입니다.
- LANGUAGE는 메시지에 사용되는 언어를 지정합니다. 그리고 요일이나 월 이름과 같은 규칙을 지정하기도 합니다.
지정하지 않으면 기본 값은 AMERICAN이 됩니다. - TERRITORY는 기본 날짜 형식이나 통화 및 숫자 형식에 대한 규칙을 지정합니다.
지정하지 않으면 LANGUAGE의 지정 값에 따라 기본 값이 지정됩니다. - CHARCTERSET은 클라이언트 응용 프로그램에서 사용하는 Character Set을 지정합니다.
KO16MSWIN949, US7ASCII, WE8MSWIN1252 등이 있습니다.
Oracle ORA-12705 오류 해결 방법
ORA-12705 오류는 특정 하나의 원인에서만 발생하는 오류는 아닙니다.
동일 오류 코드이지만 오류 내용이 조금씩 다른 경우가 있습니다. 이번 글에서 설명하는 내용은 NLS_LANG 설정에 대한 오류 해결 방법입니다.
1. 먼저 사용 중이 Oracle 시스템의 NLS Parameter Value를 먼저 알아야 합니다.
2. 오라클 시스템에서 SELECT * FROM V$NLS_PARAMETERS; 쿼리를 실행하면 아래 화면과 같은 NLS 파라미터 값을 확인할 수 있습니다.
3. 만약 오라클 DB에 연결해서 쿼리 문을 실행할 수 없는 상황이라면 오라클 서버 담당자에게 문의해서 확인을 해야 합니다.
4. 위의 쿼리 문 실행 결과 LANGUAGE의 값은 AMERICAN, TERRITORY의 값은 AMERICA, CHARCTERSET의 값은 KO16MSWIN949로 설정되어져 있는 것을 확인할 수 있습니다.
이 값들은 사용하는 오라클 시스템마다 다를 수 있습니다. 꼭 확인해 보세요.

5. NLS 파라미터 값을 확인했다면 윈도우 시스템의 환경 변수에 NLS_LANG 환경 변수를 추가 또는 변경해 보겠습니다.
6. 단축키 윈도우키 + R을 실행하여 실행 창을 열고, sysdm.cpl을 입력하고 엔터 또는 확인을 클릭하면 시스템 속성 창이 열리게 됩니다.

7. 시스템 속성 창에서 [고급] 탭을 선택합니다. 그리고 [환경 변수(N)]을 클릭합니다.

8. 시스템 변수에 NLS_LANG 추가해 줍니다. [새로 만들기]를 클릭합니다. 만약 NLS_LANG이 이미 있다면 [편집]을 클릭해 줍니다.

9. 아래 시스템 변수 입력 화면에서 변수 이름(N)에 NLS_LANG 이라고 입력합니다.
변수 값(V)에 앞에서 확인한 NLS 파라미터 변수 값을 [LANGUAGE]_[TERRITORY].[CHARACTERSET] 형식으로 입력합니다.
해당 컴퓨터에서는 AMERICAN_AMERICA.KO16MSWIN949로 입력해 주었습니다.

10. 확인을 클릭해서 시스템 변수, 환경 변수, 시스템 속성 창을 차례대로 닫습니다. 그리고 컴퓨터를 한번 재 시작해 주면 끝입니다.
마무리
여기에서는 윈도우 시스템 속성의 환경 변수에서 NLS_LANG 환경 변수를 추가하는 방법에 대해 설명하였습니다.
윈도우 레지스트리 편집기에서 동일한 NLS_LANG 환경 변수를 추가해서 사용할 수도 있습니다.
위치는 [컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_****] 입니다.
Oracle Instant Clinet 설치 버전이나 설치 과정에 지정한 이름에 따라 KEY_**** 부분은 이름은 모두 다를 수 있습니다.
만약 앞에서 설명한 윈도우 시스템 속성의 환경 변수를 추가했음에도 동일 오류가 발생하는 경우 해당 레지스트리 위치에서 NLS_LANG 레지스트리 값을 확인할 필요가 있습니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
- 오라클 Oracle 근사치(근삿값)를 찾는 방법 2가지
- ASP.NET Oracle 19c Connection 에러 – NullReferenceException
- 오라클(Oracle) SELECT 문에서 날짜 함수 활용 및 날짜 연산 방법
- 오라클 ORA-00904: invalid identifier 오류 발생 원인 및 오류 해결 방법
- 오라클 ORA-01789:query block has incorrect number of result columns 오류해결
- 오라클 ORA-01438: value larger than specified precision allowed for this column 오류 발생 원인과 해결 방법
♥ 이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.