(Oracle) Oracle 10g Express Edition 기본설치 후 한글 깨짐 문제 해결하기(sys.props$ 설정 변경) MSSQL_MDB_Oracle

현재 오라클 최신 버전은 ‘11g’ 이지만, 작업환경을 ‘10g’에 맞춰야 되는 상황이라서 어렵사리 ‘10g’를 구해서 설치했다.
‘11g’ 와 큰 차이는 없으리라 생각하고, 오라클 설치 후 처음 겪게 되는 ‘한글 깨짐’ 문제에 대해 몇 가지 분석을 해보았다.
일단, 기본 설정으로 설치를 하면 한글이 제대로 입력이 안 되고, 툴 자체에서도 한글이 안 된다.

위 그림에서처럼, 한글이 깨져서 입력이 된다.
나중에 알게 되기는 했지만, 오라클 자체 문제도 있고, JSP 에서 한글변환을 안 해서 입력한 문제 등 동시다발적인 문제가 있었다.
아무튼, 오라클 자체도 한글이 제대로 처리가 안 되는 문제가 있는데, 이는 환경설정이 미국방식에 맞춰져 있기 때문이다.
한글화는 했으면서, 왜 설정은 한국식에 맞추지 않았을까 하는 의문이 들기는 한다.

‘오라클(Oracle)’은 환경설정도 데이터로 저장이 되어 있다.
‘sys.props$’ 라는 테이블에 설정 값이 저장되어 있는데, 오라클을 처음 설치할 때 만든 ‘sys’ (혹은 ‘system’) 계정으로 로그인해서 들어가면 이 값을 수정할 수 있다.

우측의 질의 작성페이지에서 아래와 같이 쿼리를 보내보면 해당 테이블의 정보를 볼 수 있다.


select * from sys.props$;

이중에서 한글과 관련하여 중요한 부분이 ‘NLS_CHARACTERSET’ 이다.
위 그림에서는 기본설정으로 설치가 되어 모두 ‘AMERICAN’ 으로 설정되어 있는 것을 볼 수 있다.
그 외에도 날짜를 표현하는 방식이나, 지역, 돈 관련 출력 부분이 모두 미국식으로 설정되어 있다.
일단, 중요한 ‘한글 깨짐’ 문제는 위에서 언급한 ‘NLS_CHARACTERSET’의 값을 바꿔주면 되고, 이와 함께 날짜를 표현하는 방식등도 한국식 표기방식으로 수정하려고 한다.

사실, 오라클 ‘한글 깨짐’ 문제 때문에 이것저것 시도를 많이 하고 테스트를 많이 하다 보니 작업 순서가 좀 뒤죽박죽이 되었고, 어떤 작업이 정말 필요하고 어떤 작업은 할 필요가 없었는데 한 것인지 지금으로써는 명확히 구분이 안 된다.
하지만, ‘sys.props$’ 테이블에 설정된 환경설정 정보를 바꿔줘야 하는 것만은 확실하다.

별도로, 오라클을 설치한 이후 이와 관련하여 윈도우의 레지스트리에도 값이 설정된다.


윈도우 레지스트리를 열어 ‘NLS_LANG’ 라는 값을 찾아보면, ‘AMERICAN_AMERICA.WE8MSWIN1252’ 라고 값이 기록되어 있을 것이다.
어떤 사람들인 이 값을 ‘sys.props$’에서 바꾸게 될 값과 똑같이 지정해줘야 한다고 하는데,



위처럼, 한글을 제대로 지원하는 ‘KOREAN_KOREA.KO16MSWIN949’로 바꿔줘야 한다는 것이다.
하지만, 정확한 답을 시원스럽게 제시해 주는 사람들은 없는 것 같다.
한글 설정과 관련해서 진짜 중요한 것은 ‘LANG’이 아니라 ‘CHARACTERSET’ 이기 때문이다.

확실하지는 않지만, 작업을 해 본 결과 내 생각은 좀 다르다.
굳이 레지스트리를 직접 수정할 필요는 없을 것 같고, 오라클에서 설정 값만 바꿔주면 될 것 같은데, 위에서도 말했듯이 작업 순서가 뒤죽박죽이었기 때문에 나 역시 정확한 답은 모르겠다.

아무튼, 윈도우의 레지스트리는 일단 건드리지 말고, 오라클 자체 내의 환경설정 값만 바꾸어 보자.

환경설정 값을 바꾸는 것 역시 쿼리를 직접 입력하는 ‘질의 작성기’ 창에서 처리한다.
영어로 된 값을 어떤 값으로 바꾸느냐 하는 것이 문제다.
사람들 얘기에 따르면,
‘NLS_LANGUAGE’ 의 ‘VALUE$’ 값을 ‘AMERICAN_AMERICA.KO16KSC5601’로 바꿨다는 사람도 있고, ‘KOREAN_KOREA.KO16MSWIN949’로 바꿨다는 사람도 있고 제각각이다.
또한, 그에 따라 실제적으로 중요한 ‘NLS_CHARACTERSET’의 ‘VALUE$’ 값에서도 차이가 나는데, ‘KO16KSC5601’로 바꾸느냐 ‘KO16MSWIN949’로 바꾸느냐 하는 문제가 발생한다.

정확하지는 않지만, 두 캐릭터 셋(CHARACTERSET) 모두 ‘JDBC’의 엔진이 한글지원을 안하는 세팅이라는 얘기도 있다.
그렇다면, 정말 한국어를 제대로 지원하기 위해서는 어떤 캐릭터 셋을 써야 하는 걸까?
실제로, 웹상에서 구동하는 오라클 데이터베이스에 접속해서 작업을 해보기 전에는 지금으로써는 정확히 알 수 없다.
다만, 로컬에서 개인적으로 테스트를 해본 결과, 위에서 언급한 두 종류의 캐릭터 셋 모두 한글이 잘 처리 되었다.
다만, 개인적인 생각으로 ‘KO16MSWIN949’가 더 나을 것 같아서 그 값으로 설정을 해보았다.
이런저런 글들을 읽어봤는데, 보편적으로는 캐릭터 셋의 값을 ‘UTF-8’로 하는 것을 선호하는 것 같다.
하지만, 작업 일정이 급해서 ‘UTF-8’로 설정해 보는 것은 시도하지 않았다.
여기서는 어떤 캐릭터 셋으로 한다는 것 보다는, ‘sys.props$’ 수정을 통해 쉽게 환경설정을 변경할 수 있다는 것을 기술하고자 한다.

혹시 나중에 원상복구 해야 할 필요가 있을 수 있기 때문에, 작업 전에 원래의 값을 캡처로 남겨 놓든지 아니면 텍스트 파일에 옮겨 적어 놓는다.
처음 오라클 설치 후, 사용자 계정을 하나 만들었고,
중간에 CHARACTERSET 를 'KO16KSC5601' 로 변경한 이후, 해당 유저 계정이 계속 에러가 발생했다.
때문에, 다시 'KO16MSWIN949' 로 변경했지만 여전히 계속 에러 발생.
(한글 때문에 엉켜서 그렇다는 얘기가 있다.)
그래서, 만들었던 사용자 계정을 삭제하고 다시 만들어서 테이블을 생성하니, 에러없이 사용할 수 있었고, 한글도 잘 적용되었다.
이는, 어떤 캐릭터셋이 문제를 일으킨다기 보다는, 중간에 언어 변경을 하는 바람에 오라클의 각종 정보들이 엉키거나 읽을 수 없는 상태가 되어버렸기 때문인것 같다.

따라서, sys.props$ 의 값을 변경하는 것은, 사용자 계정을 만들기 전에 작업을 해야 한다고 볼 수 있다.
기존에 작업한 테이블이나 그 외의 정보들에 아예 접속을 못하게 될지도 모른다.


Oracle SQL Developer 에 sys (또는 system) 계정으로 접속한후, '질의 작성기' 에 아래의 쿼리를 입력하고 실행한다.

----------------------------------------------------
update sys.props$ set value$='KOREA' where name='NLS_TERRITORY';
update sys.props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET'; 
update sys.props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET'; 
update sys.props$ set value$='KOREAN_KOREA.KO16MSWIN949' where name='NLS_LANGUAGE'; 
update sys.props$ set value$='KOREAN' where name='NLS_DATE_LANGUAGE';

update sys.props$ set value$='RR/MM/DD' where name='NLS_DATE_FORMAT';
update sys.props$ set value$='HH24:MI:SSXFF HH24:MI:SSXFF' where name='NLS_TIME_FORMAT';
update sys.props$ set value$='RR/MM/DD HH24:MI:SSXFF' where name='NLS_TIMESTAMP_FORMAT';
update sys.props$ set value$='HH24:MI:SSXFF TZR' where name='NLS_TIME_TZ_FORMAT';
update sys.props$ set value$='RR/MM/DD HH24:MI:SSXFF TZR' where name='NLS_TIMESTAMP_TZ_FORMAT';
----------------------------------------------------

위 그림에서처럼 ‘질의 작성기’에 쿼리를 입력한 후, 실행버튼 처럼 생긴 아이콘 옆의 아이콘(노트 그림 배경이 있는 실행 아이콘)을 눌러 실행한다.
이 버튼은 여러 줄의 쿼리를 한 번에 처리하는 명령을 실행하는 버튼 아이콘이다.

그러면, 위 그림에서 처럼, 여러 쿼리가 모두 한 번에 처리된다.

에러 없이 처리가 되었다면, 변경된 정보를 확인한다.
질의 작성기에
select * from sys.props$
입력 후 실행(실행하는 방법은 아이콘을 누르던지 아니면 단축 키 ‘Ctrl+Enter’를 누른다.)


환경설정이 끝났다면, 사용자 계정을 생성하고 테이블을 만든다.
한글처리가 되었기 때문에, 테이블(Table) 이름과 컬럼(Column) 이름을 한글로 작성할 수도 있다.
다만, 위에서 잠깐 언급했듯이, 실제 웹사이트에서 운영 중인 오라클 서버에 접속했을 때, 그 서버가 한글을 어떻게 지원하는지를 알 수 없고, 상황에 따라서 오류가 발생할 수도 있기 때문에, 되도록이면 테이블 이름과 컬럼 이름은 한글이 아니라 영어를 사용하도록 한다.

지금까지 설명한 것은, 현재 자신의 로컬 컴퓨터에 설치된 오라클의 ‘한글 깨짐’ 문제를 해결하기 위한 설정변경 방법이다.
실제로 웹사이트에서 운영 중인 오라클 서버는 별개의 문제이기 때문에, 실제로 운영 중인 사이트를 웹에 올린 오라클 서버와 연동해서 운영해야 한다면, 실제 웹사이트와 웹에 올린 오라클 서버를 구동하여 테스트를 충분히 거치며 오류가 없는지 확인하는 과정이 필요하다.

이 외에도, 오라클 접속 프로그램인 ‘sqldeveloper’ 자체의 환경설정에서도 한글과 관련된 부분이 있다.
어떤 사람들은 ‘sqldeveloper’ 툴 자체의 환경설정을 바꿔주면 한글이 깨지지 않는다고 하는 사람들이 있다.

‘도구 → 환경설정’
메뉴를 클릭하여 ‘sqldeveloper’ 자체의 환경설정을 해보자.


코드 편집기의 ‘글꼴’을 한글 글꼴인 ‘굴림’으로 선택.

기본 환경설정 값에서 ‘인코딩’ 항목을 ‘EUC-KR’ 같이 한글을 지원하는 문자 셋으로 지정.

글쎄, 이 또한 명확하지는 않다.
중간에 이런저런 작업을 많이 시도했기 때문이다.

결과적으로 풀이해보면,
오라클을 설치하고, ‘Oracle SQL Developer’에 처음 접속하면, 한글 입력이 제대로 안 된다.
따라서 툴 자체의 환경설정 값인 ‘인코딩’ 이라든지, 코드편집기의 글꼴을 ‘굴림’ 등으로 바꿔준다.
그런 다음, JSP 페이지에서 데이터를 입력할 때, 한글 변환이 잘 된 상태(한글 변환 코드를 적용하는 명령어)로 데이터를 입력하는지 확인한다.
특히, ‘getParameter’를 처리할 때, 웹상에서 한글이 제대로 보여 지는지 확인 후 오라클에 데이터를 입력한다.
그래도 한글이 깨진다면,
위에서 장황하게 설명한 것처럼, 오라클의 ‘sys.props$’ 테이블에 설정되어 있는 한글 설정을 바꿔보자.
여기까지 설명한 것들은 개인 컴퓨터(로컬)에서 세팅을 한 것이기 때문에, 실제 웹에 올려  놓은 오라클 데이터베이스 서버에 접속해서 작업을 할 때에는 환경이 다를 수 있으므로 주의해야 한다.
만약, 웹에 올리는 오라클 데이터베이스가 본인이 직접 관리하는 서버라면 직접 환경 설정을 바꿔가며 테스트를 할 수 있겠지만, 임대를 해서 사용하여 관리자로 접속할 수 없는 상황이라면 오직 접속자 환경에서 처리를 해야 하기 때문에 제약이 있을 수 있다.


덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


통계 위젯 (화이트)

1201531
9847
10318450

google_myblogSearch_side

▷검색어

Flag Counter style2