2021. 6. 29. 09:57ㆍDB
* 현재 사용중인 오라클 시스템 확인 하기
- 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
'DB' 카테고리의 다른 글
(to 김책임) 오라클 insert 속도 향상 팁 (0) | 2021.11.05 |
---|---|
Oracle Database Linux 계열 백업 쉘스크립트 & 크론탭 (0) | 2021.07.06 |
Linux 서버에서 Oracle dump exp/imp 사용 (0) | 2021.07.06 |
복합키를 주키(Primary Key)로 사용한 테이블에 외래키(Foreign Key) 참조하는 방법 (재귀 참조) (0) | 2021.05.12 |
(DB공부) OLTP 와 OLAP 차이점, 다차원모델링 (0) | 2021.05.10 |