한글이 ??? 로 DISPLAY 되는 경우


ORACLE TOOLS(SQLPLUS,등)을 이용하여 한글DATA를 조회할 때 ???로 출력는데 해결 방법

======================================================================================

DATABASE는 SQL COMMAND ‘CREATE DATABASE’를 포함하는 STATEMENT를 수행할 때 만들어지는데 우리가 그STATEMENT를 수행하기 앞서 고려해야 사항중의 하나가 DB CHARACTERSET 이다.

DB를 CREATE할때 DATABSE CHARACTERSET을 명시해야만 하는데 한번 선택되고 난후에는 CHARACTERSET 을 변경하는 것은 쉽지가 않다.

DATA DICTIONARY에 있는 DATA를 포함해서 모든 DATA는 선택된 CHARACTERSET 에 의해 입출력 되기 때문에 USER가 다른 CHARATERSET으로 ACCESS한다면 한글 데이타가 ???로 출력된다.

또한 분산 DB 환경에서나 UPGRADE할 경우에는 DATABASE CHARACTERSET이 같아야 함으로 사용자들은 DATABASE의 CHARACTERSET을 알아아 두어야 한다.

 

< 현재 DATABASE 의 CHARACTERSET 확인 및 변경 >

 

1. 데이타베이스 CHARACTERSET 확인

$ sqldba lmode=y

SQL> connect internal

SQL> select * from v$nls_parameters;

PARAMETER VALUE

—————————— ————–

….

NLS_CHARACTERSET KO16KSC5601 (or US7ASCII)

(A)

 

2. 환경 변수의 NLS_LANG 확인

$ env

NLS_LANG=American_America.US7ASCII

(B)

 

위의 (A)와 (B) 가 동일 해야만 한글 데이타 처리가 잘되고 서로 다른 상태에서 한글 데이타를 조회 할경우 ??? 로 출력 된다.

 

3. CHARACTERSET 을 일치 시키는 방법

* NLS_LANG 환경 변수를 변경하여 일치시키는 방법

Bourne shell, k-shell 을 사용 하는경우 . profile 을 수정

NLS_LANG = American_Amerca.KO16KSC5601; export NLS_LANG

c-chell 을 사용하는 경우 .cshrc 혹은 .login 수정

setenv NLS_LANG American_America.KO16KSC5601

수정후 다시 $ env 를 실행하여 변경 되었는지 확인한다.

C:\WINDOWS\ORACLE.INI 수정

NLS_LANG=American_America.KO16KSC5601

WINDOW 재기동

* 그리고 예를 들어서 SERVER의 character set이 US7ASCII 이고 PC의 NLS_LANG이

American_America.KO16KSC5601 과 같이 서로 다르게 설정되어 있는 경우 다음을 하나 더

oracle.ini에 추가하면 한글문제가 해결됩니다.

ORA_NLS_CHARACTERSET_CONVERSION=NO_CHARACTER_SET_CONVERSION

WINDOWS 95에서는 NLS_LANG이 ORACLE.INI에 들어 있지 않고 REGISTRY에 기록되므로 REGISTRY

EDITOR를 이용하여 수정해야 한다.

MSDOS 창으로 나가서 REGEDIT.EXE 샐행

HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE 선택

오른쪽 마우스 버튼을 이용하여 NLS_LANG을 수정

REGISTRY 변경 후에 PC를 REBOOTING 할 필요는 없습니다.

WINDOWS NT 에서도 WINDOWS 95의 경우와 마찬가지로 REGISTRY 에 기록된 정보를 변경해 주면

됩니다. 다음과 같이 합니다.

DOS 창에서 REGEDT32.EXE 실행

HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE 선택

메뉴를 선택하여 NLS_LANG을 수정


Comments

comments

haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

한글이 ??? 로 DISPLAY 되는 경우”의 1개의 댓글

  • 2019-07-11 6:42 오후
    Permalink

    Appreciating the persistence you put into your blog and detailed information you
    present. It’s awesome to come across a blog every once in a while that isn’t the same unwanted rehashed material.
    Great read! I’ve bookmarked your site and I’m including your
    RSS feeds to my Google account.

    댓글달기

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다