본문 바로가기
프로그래밍/SQL

오라클 한글 몇바이트로 인식되고 있는지 확인하는 방법

by 착살의 숲 2015. 4. 23.
반응형
* 현재 사용중인 오라클 시스템 확인 하기 

 - ria에서 250개 문자를 보냈는데 계속 142개만 db에 들어가길래 뭐야 이랬다가..

    lengthb로 해보고 아~~ 했다능..

     

    lengthb는 오라클의 캐릭터셋에 따라 한글을 2byte or 3byte로 해석해버림, 그러므로 

    ria에서도 한글 2바이트로 잡아버리고 db 보냈기에 > 현재 한글을 2byte로 잡고 있는 데이터베이스와 

    싱크가 맞았던 거임 



1)  




2)  




캐릭터셋 확인

SELECT *

  FROM nls_database_parameters

WHERE parameter = 'NLS_CHARACTERSET'

       or parameter = 'NLS_NCHAR_CHARACTERSET'


AL32UTF8 

-  한글 한자당 3바이트

- AL32UTF8: 한글 11,172자이며 UTF8과 다른점은 내셔널 캐릭터셋으로 설정이 불가능


AL16UTF8 

- KO16KSC5601 :한글 완성형 2,350자지원 글자당 2바이트

- KO16MSWIN949: KO16KSC5601+확장 8822자 지원, 글자당 2바이트

- UTF8: 한글 11,172자 글자당 3바이트


* 3바이트 => 2바이트 한글로 변경하는 방법 

 select * from nls_database_parameters;

 update sys.props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET'; 

 update sys.props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET';

 update sys.props$ set value$='AMERICAN_AMERICA.KO16MSWIN949' where name='NLS_LANGUAGE';


* 변경후 : 오라클 재부팅

 #> /etc/init.d/oracle-xe restart

 # DATA Base CharSet 변경 (이걸안하면 sqlgate 같은 gui 클라이언트 에서 스키마 보기가 안됨)

 #> sqlplus 'sys / as sysdba'

 SQL>SHUTDOWN IMMEDIATE;

 SQL>STARTUP MOUNT;

 SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

 SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

 SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

 SQL>ALTER DATABASE OPEN;

 SQL>ALTER DATABASE CHARACTER SET KO16MSWIN949;

 SQL>SHUTDOWN IMMEDIATE;

 SQL>STARTUP;

[출처] - http://m.cafe.naver.com/oraclebank/322?searchref=QNL5kHcu7UqolFUre53VbVpgS7D%252FaN1wIkvHfhqINd4%253D
반응형

댓글