java.sql.SQLException: 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949
db select 시 아래와 같은 에러가 발생했다.
java.sql.SQLException: 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949
There was an unexpected error (type=Internal Server Error, status=500).
Error attempting to get column 'DOC_NO' from result set. Cause: java.sql.SQLException: 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949 ;
uncategorized SQLException; SQL state [99999]; error code [17056]; 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949;
nested exception is java.sql.SQLException: 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949
org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column 'DOC_NO' from result set.
Cause: java.sql.SQLException: 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949 ;
uncategorized SQLException; SQL state [99999]; error code [17056]; 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949;
nested exception is java.sql.SQLException: 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
Oracle DB의 문자셋(characterset) 방식은 'KO16MSWIN949'
SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';
1) KO16KSC5601 * 한글자를 표현하기 위해서 2byte를 사용
완성형 한글 방식, 일반적으로 많이 사용되며
2350자의 한글, 4888자의 한자, 히라카나, 카타카나, 영문 및 각종 기호를 포함하고 있음
2) KO16MSWIN949 * 한글자를 표현하기 위해서 2byte를 사용
웹 페이지 인코딩 방식인 MS949에서 따온 코드셋이라고 한다
완성형 한글을 포함하여, 조합형까지 총 11172자의 한글을 표현
3) UTF8 / AL32UTF8 * 한글자를 표현하기 위해서 3byte를 사용
유니코드 표준 UTF-8 인코딩 체계를 따르는 방식, 11172자의 한글을 지원
Oracle 8i 보다 하위 버전인 경우 UTF8을 사용하며, 그 이상의 경우는 AL32UTF8을 사용한다.
사용하는 JDBC인 ojdbc8-21.1.0.0.jar 에서 지원하지 않는 인코딩 방식이라 에러가 발생한 것으로,
아래 방법으로 해결하면 된다.
1. orai18n.jar 다운로드 * orai18n.jar 으로 조회하여 다운로드
https://www.oracle.com/database/technologies/appdev/jdbc-ucp-19-7-c-downloads.html
2. orai18n.jar 라이브러리 등록합니다.
- 프로젝트 우클릭 > 하단의 Properties 선택
- Properties 에서 Java Build Path > Libraries 탭 선택, Add External JARs... 선택, orai18n.jar 등록
3. 서버 재 시작, 확인.