반응형
Oracle 오라클 인코딩 설정, 캐릭터셋 변경, 한글깨짐
1. 오라클 CHARACTERSET 확인 방법
system 계정 접속
SELECT * FROM sys.props$ where name like '%CHARACTERSET%'; |
CHAR : KO16MSWIN949
NCHAR : AL16UTF16
한글깨짐 ) characterset 을 KO16KSC5601 사용하는 경우 똠, 펲, 샾, 잌, 볖, '볌', '뮌', '믜', '됌' 글자들은 깨진다. KSC5601(국가표준, Oracle에서 정의한 표준이 아님) Character Set 에 정의되어 있지 않기 때문에 발생하는 문제이다.
해결방안은 아래에서 자세히 알아보시기 바랍니다.
해결 방안 )
DB의 character set을 KO16MSWIN949로 변경.
KO16MSWIN949은 KO16KSC5601의 superset으로써 KO16KSC5601의 모든 한글 외에 추가로
'똠','샾'과 같은 모든 조합가능한 현대 한글을 지원합니다.
> connect "/ as sysdba"
> startup mount exclusive
> alter system enable restricted session;
> alter database character set KO16MSWIN949;
> shutdown immediate;
> startup
2. 한글지원 케릭터셋 비교 테이블
한글을 지원하는 캐릭터셋
1. KO16KSC5601
2. KO16MSWIN949
3. UTF8
4. AL32UTF8
아래에서 더 자세히 알아보시기 바랍니다.
한글을 지원하는 캐릭터셋 비교 테이블 | ||||
KO16KSC5601 | KO16MSWIN949 | UTF8 | AL32UTF8 | |
한글 지원상태 | 한글 2350자 | KO16KSC5601 + 확장 8822자(총 11172자) | 한글 11172자 | 한글 11172자 |
캐릭터셋/인코딩 버전 | 한글완성형 | 완성형코드포함 확장된 8822자는 MS Windows Codepage 949에 따라 배열 |
8.1.6 이전 : Unicode 2.1 8.1.7 이후: Unicode 3.0 |
9i Rel1: Unicode 3.0 9i Rel2 : Unicode 3.1 10g Rel1 : Unicode 3.2 1/0g Rel2 : Unicode 4.0 |
한글바이트 | 2바이트 | 2바이트 | 3바이트 | 3바이트 |
지원버전 | 7.x | 8.0.6 이상 | 8.0 이후 | 9i Release 1 이상 |
Database Characterset으로 설정 가능 여부 | 가능 | 가능 | 가능 | 가능 |
National Characterset으로 설정 가능 여부 | 불가능 | 불가능 | 가능 | 불가능 |
한글정렬 | 단순 바이너리 정렬로 구현 가능 | KOREAN_M 또는 UNICODE_BINARY 등 특수한 옵션 필요 (한글 정렬에 관한 설명 참조) |
한글 정렬은 단순 바이너리 정렬로 가능. 한자 정렬은 KOREAN_M 옵션 필요 | |
장점 | - 특별한 장점이 없음. 완성형 코드만을 입출력하는 것이 확실할 경우에는 높은 성능 | - 2바이트로 모든 한글 저장/입출력 가능. 공간의 소모가 적으면서도 모든 한글을 입출력할 수 있다 |
- 현대 한글 11172자가 정확한 순서로 배열되어 정렬이 효과적 - 다른 언어들(중국어 태국어 등) 또한 같은 데이타베이스 인스턴스에 저장되어야 할 경우 UTF8 등의 유니코드 캐릭터셋 이외에 다른 대안이 있을 수 없음 |
- 한글 지원은 UTF8과 동일 |
단점 | - 한글을 2350자밖에 지원하지 못한다는 치명적인 단점이 있어 미래에는 사용이 자제되어야 할 캐릭터셋 | - 완성형과 호환을 하려다보니, 글자배열순서와 정렬 순서가 다르게 됨. 단순한 "ORDER BY" 절로는 제대로 한글 정렬을 할 수 없음 | 한글 한 캐릭터가 3바이트를 소모하게 되어 공간의 소모가 크고, 유니코드 인코딩/디코딩에 성능을 소모해야 한다 |
기존 캐릭터셋 | 새로운 캐릭터셋 | 변경 가능 여부 |
US7ASCII | KO16KSC5601/KO16MSWIN949/UTF8/AL32UTF8 | 가능 |
KO16KSC5601 | KO16MSWIN949 | 가능 |
KO16MSWIN949 | UTF8 | 불가능 |
UTF8 | AL32UTF8 | 가능 |
'DB > ORACLE' 카테고리의 다른 글
Oracle 1000만건 테이블 INSERT LOOP 쿼리 (0) | 2022.07.12 |
---|---|
Oracle - 테이블 잠김 풀기, 테이블 락 해제, table lock (0) | 2022.03.16 |
Oracle 테이블스페이스 생성, 연결, 조회, 용량 조회 (0) | 2022.03.16 |
Oracle - system 계정 비밀번호 분실, 찾기 (0) | 2022.03.16 |
Oracle table space 공간부족 ( ORA-01653 ) (0) | 2022.03.16 |
댓글