본문 바로가기
DB/ORACLE

Oracle 오라클 인코딩 설정, 캐릭터셋 변경, 한글깨짐

by 애플통 2022. 3. 16.
반응형

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 가능

 

 

 

 

 

oracle 21c XE 다운로드 및 설치

oracle 11g 삭제 방법 기존에 11g xe 가 설치 되어있었다. 삭제하고 21c xe를 설치 할 예정이다. 1) 시작 > 실행 > cmd sc delete "OracleJobSchedulerXE" sc delete "OracleMTSRecoveryService" sc delete "OracleServiceXE" sc delete "Orac

www.appletong.com

 

 

ORACLE 12C 다운로드 및 구버전 (2022년 update)

ORACLE 12C 다운로드 및 구버전 (2022년 update) oracle 12c 환경이 필요해서 다운로드 설치하려고, 오라클 공식 홈페이지에 들어갔더니, 왠일인가 다운로드 다 막혀있고, oracle 19c, 21c만 확인 되니 아무리

www.appletong.com

 

 

오라클 테이블스페이스 사용량 조회

오라클 테이블스페이스 사용량 조회 SELECT A.TABLESPACE_NAME AS "테이블스페이스명" , A.BYTES / 1024 AS "전체(MB)" , (A.BYTES - NVL(B.FREEBYTES,0)) / 1024 AS "사용량(MB)" , NVL(B.FREEBYTES,0) / 1024 AS "잔여량(MB)" , ROUND(NVL(B

www.appletong.com

 

반응형

댓글