Database/Oracle2013. 7. 25. 10:12
시스템내에서 암호화 하는 과정에서 제목과 같은 오류가 발생했다.

client 에서 해석하지 못하는 문자라는 의미다..
Server : 오라클이 설치된 컴퓨터
Client : 토드나 오렌지 등의 툴

즉.. server 에서는 해석을 했는데. client 에서는 해석을 못했다??
-> Server 와 Client  의 케릭터 set이 틀리다는 의미다.

 SELECT * FROM SYS.PROPS$ WHERE name='NLS_CHARACTERSET';
 위의 query 로 서버측의 character set 을 조회 해보자.
 
NAME                         VALUE$    COMMENT$
NLS_CHARACTERSET AL32UTF8     Character set 

 내가 사용 하는 DB 서버는 AL32UTF8을 쓴다. 

그럼 Client 의 character set 을 보자

실행 창에서 regedit(레지스트리 편집기) 을 치고 NLS_LANG 로 검색(Ctrl + f) 해보자.
보통의 경우  KOREAN_KOREA.KO16MSWIN949 로 되어 있을 것이다.
 

결국 server 랑 client 랑 nls_lang 이 틀리므로 발생한 문제다.

인제 선택이다..
서버의 lang을 바꿀것인가? client 의 lang을 바꿀것인가?

이미 운영 중인 DB 라면 무조껀 client 의 lang을 바꾸어야 한다.
위에 Server에 보면 AL32UTF8 이 되어 있다..
따라서 client 의 reg 값을 AMERICAN_AMERICA.AL32UTF8 로 바꾸어 주면 정상적으로 작동한다.


만약 Server를 바꾸고자 한다면(운영 중이지않거나 위험성이 적은 경우) 
UPDATE PROPS$ SET VALUE$='KO16KSC5601' WHERE NAME='NLS_CHARACTERSET'
이렇게 Query 를 실행하면 된다. 만, 별로 추천 하지는 않음...

 

출처 : http://interwater.tistory.com/89

 

Posted by 아로나