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를 변경하는게 훨씬 효과적이다.
|
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 ..; |
댓글 없음:
댓글 쓰기