반응형
특정 캐릭터 셋의 경우 오렌지나 Toad 같은 DB 툴에서 한글이 깨져서 ???라고 나오는 경우가 있습니다. 이런 경우 해결하는 방법에 대해 알아보겠습니다. 예시는 오렌지로 들겠지만, 그 외 툴의 경우도 해결이 가능합니다.
1. DB 캐릭터 셋 확인
SELECT
(SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_LANGUAGE')
|| '_' ||
(SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_TERRITORY')
|| '.' ||
(SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET')
FROM DUAL
조회결과 : AMERICAN_AMERICA.US7ASCII
사용하는 DB서버마다 다른 캐릭터 셋이 조회될 것이다. 위 결과를 복사해놓도록 하자.
2. NLS_LANG 직접 수정 방법 (오렌지의 경우)
Tools > Orange Options > Common > Enviroment으로 접근해서 NLS_LANG에 위에서 조회한 캐릭터 셋을 입력해주면 됩니다.
바로 조회하면 안 되고 오렌지 클라이언트를 껐다가 재실행하면 정상적으로 한글이 조회되는 것을 확인할 수 있습니다.
Option이 아니라도 저 부분에 Connect 전에 캐릭터셋을 입력하고 진행해도 됩니다.
3. 환경변수 NLS_LANG 추가 (다른 툴의 경우)
다른 DB 툴에도 NLS_LANG을 수정할 수 있다면 수정하면 되겠지만 설정하는 부분을 못 찾겠다면 환경변수와 레지스트리에 추가해주면 됩니다.
JAVA_HOME과 마찬가지로 변수 이름을 NLS_LANG으로 값을 위에서 조회한 캐릭터셋으로 저장해줍니다.
그리고 실행창(윈도우+R)에 regedit을 입력하여 레지스트리 편집기를 열고 아래 위치에 NLS_LANG을 추가해줍니다. 클라이언트 버전에 따라 마지막 경로는 조금씩 다릅니다.
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OracleClient_home
NLS_LANG이 있다면 수정하면 되고, 없으면 우클릭 새로 만들기로 문자열 값을 만들어주면 됩니다.
역시 DB 툴을 재기동하면 한글이 정상 조회될 것입니다.
문제가 해결되셨기를
그리드형
'IT > DB' 카테고리의 다른 글
[ORACLE] 널(NULL)에 대한 IN과 NOT IN (0) | 2021.11.27 |
---|---|
[ORACLE] NULL 값 정렬 (ORDER BY NULLS FIRST OR LAST) (0) | 2021.11.24 |
[ORACLE] PL/SQL 에러 PLS-00363 : 프로시저 실행 안 될 때 해결방법 (0) | 2021.10.29 |
[ORACLE] MERGE문 무결성 제약조건 위배의 경우 (ORA-00001) (0) | 2021.10.26 |
[ORACLE] 오라클 데이터타입 CHAR와 VARCHAR2의 차이 (0) | 2021.10.26 |
댓글