페이지

2015년 1월 5일 월요일

ora-29275 : partial multibyte character (부분 다중 바이트 문자)

ora-29275  partial multibyte character
Server에서 전달한 문자를 Client에서 제대로 해석하지 못할때 발생하는 오류이다.
이럴 경우 먼저 Server 와 Client 의 CHARACTERSET값을 확인해 보고 그 값을 동일하게 설정해줘 봐야 한다.

1. Server의 CHARACTERSET 확인

SELECT parameter, value FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%'
PARAMETER                                        VALUE
------------------------------------------------------------
NLS_NCHAR_CHARACTERSET             AL16UTF16
NLS_CHARACTERSET                         AL32UTF8





 Orange 의 Database Information Tool 을 사용하면 편리하게 조회가 가능하다.

 위 값을 바꿀려면 UPDATE를 하면 되지만, 가급적 추전하지 않는다. 위험부담이 적은 Client를 변경하는게 훨씬 효과적이다.

 UPDATE PROPS$ SET VALUE$='KO16KSC5601' WHERE NAME = 'NLS_CHARACTERSET'














2. Client의 CHARACTERSET 확인

 regedit.exe 를 실행하여 HKEY_LOCAL_MACHINE/SOFTWARE/Oracle (64bit OS의 경우 WOW6432Node/Oracle) 안에 설치된 Client 들을 찾아서 NLS_LANG 값을 확인 하시면 된다. 설치된 client가 하나 이상일 경우 접속할 때 사용한 client를 찾아서 해당 정보를 봐야한다.

(Orange의 경우 Options -> Environment 에서 해당 값들의 조회가 가능하다.)

이 값을 서버와 같은 값으로 변경해주면 된다.

 





3. Table 값 변경

  to_single_byte() 함수를 이용해서 해당 column 값을 수정하는 방법도 있다. 해당 함수를 이용하여 SELECT 했을 때 오류가 발생하지 않고 원하는 값으로 조회가 된다면, UPDATE로 수정해주면 된다. 특히 사용자가 생성한 암호화 관련 함수에서는 to_single_byte() 를 사용하는게 유일한 해결책일 수 있다.

SELECT to_single_byte(field_name) FROM table_name;
UPDATE table_name SET field_name =  to_single_byte(field_name) WHERE ..; 




댓글 없음:

댓글 쓰기