[Oracle - AL32UTF8 한글 깨짐 현상]

NLS 파라미터를 한글로 변경하였습니다. 파라미터 적용을 시키기 위해 DB를 재부팅 하니 한글이 깨지는 현상이 발생했습니다...

오렌지나 토드 같은 클라이언트 툴을 이용해 DB에 접속하면 문제 없으나, shell에서 sqlplus를 이용해서 접속하면 문제가 발생하더라고요...

 

발생 이슈
-  쉘에서  sqlplus 를 이용해 접속 시 한글 깨짐현상
 
변경 파라미터
NLS Environment
NLS_LANGUAGE='KOREAN'
NLS_TERRITORY='KOREA'
NLS_CURRENCY='₩'
NLS_ISO_CURRENCY='KOREA'
NLS_NUMERIC_CHARACTERS='.,'
NLS_DATE_FORMAT='RR/MM/DD'
NLS_DATE_LANGUAGE='KOREAN'
NLS_SORT='BINARY'

 

발생 원인
-  Shell과 oracle의 설정이 안맞아서 발생한 문제 발생합니다. Shell을 통해 직접 oracle에 붙는 경우에만 한글이 깨져 보이게됩니다. 따라서 toad와 같은 클라이언트 툴을 이용해 접속시에는 문제가 없습니다.
발생 현상

아래와 같이 한글은 물음표로 보임.

SQL> set linesize 150
col name for A30
col value for A30
select name, value from v$parameter where name like 'nls%';

NAME                                       VALUE
--------------------------------------------------------
nls_language                          KOREAN
nls_territory                             KOREA
nls_sort                                   BINARY
nls_date_language                 KOREAN
nls_date_format                     RR/MM/DD
nls_currency                             ???
nls_numeric_characters             .,
nls_iso_currency                      KOREA
nls_calendar
nls_time_format
nls_timestamp_format
nls_time_tz_format
nls_timestamp_tz_format
nls_dual_currency
nls_comp                                BINARY
nls_length_semantics             BYTE
nls_nchar_conv_excp             FALSE

17 ?? ???????.
 
해결 방법

먼저 oracle의 character set을 확인합니다. 한글을 지원하는지 먼저 확인한 뒤 지원하는데도 불구하고 한글이 깨지면 shell과 설정에 문제가 있을 수 있습니다. 

SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';
PARAMETER                                                                          VALUE
----------------------------------------------------------------------------------------------------------------------NLS_CHARACTERSET                                                         AL32UTF8


[oracle@jhtest ~]$ export NLS_LANG=KOREAN_KOREA.AL32UTF8

 

 

발생 이유나 다른 해결방법이 또 있다면 댓글로 좀 알려주세요..고수님들의 조언을 기다립니다..!