목적 : UTF8과 K016MSWIN949에서 각각 한글데이터를 넣었을때 잘 들어가는지, 잘 보이는지에 대한 테스트입니다.
사용 환경:
[oracle@ysbae ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)
SYS@newysbae> select instance_name,version from v$instance;
INSTANCE_NAME VERSION
---------------- -----------------
newysbae 11.2.0.1.0
1 row selected.
요약 : 서버의 캐릭터셋과 클라이언트의 캐릭터셋을 맞춰주는 것이 제일 중요합니다. 다를 시 데이터가 깨질 수 있습니다.
테스트 진행
서버 UTF8
SYS@newysbae> select * from nls_database_parameters where parameter like '%CHARACTERSET%';
PARAMETER VALUE
------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NLS_CHARACTERSET UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
클라이언트 K016MSWIN949
[oracle@ysbae ~]$ echo $NLS_LANG
AMERICAN_AMERICA.KO16MSWIN949
컬럼이 두개인 테이블을 생성하고 하나에는 varchar2, 하나에는 nvarchar2로 생성합니다.
TTS@newysbae> create table chartest
2 (a varchar2(10),
3 b nvarchar2(10));
TTS@newysbae> insert into chartest values('한글','한글2');
1 row created.
Elapsed: 00:00:00.03
TTS@newysbae> commit;
Commit complete.
Elapsed: 00:00:00.01
TTS@newysbae> select * from chartest;
A B
-------------------- --------------------
▒▒▒ꣿ ▒▒▒ꣿ2
둘다 깨집니다. 캐릭터셋이 클라이언트와 서버가 달라서 그렇습니다.
변경작업
서버의 NLS_CHARACTERSET을 클라이언트인 K016MSWIN949로 맞춰주고 다시 데이터를 삽입해봅니다.
SYS@newysbae>update sys.props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET'
SYS@newysbae> commit;
후에 DB 재기동
TTS@newysbae> insert into chartest values('한글','한글2');
1 row created.
TTS@newysbae> commit;
Commit complete.
TTS@newysbae> select * from chartest;
A B
---------- ------------------------------
占쎌뮄 �쒓�2
한글 한글2
2 rows selected.
기존에 깨진 데이터는 복구되지 않으며 클라이언트와 서버가 동일하게 캐릭터셋을 맞춰주니 한글데이터가 삽입되었습니다.
**테스트하다가 나온 사항인데, 캐릭터셋이 꼬인 상황에서 만든 테이블은 클라이언트와 서버가 캐릭터셋이 동일하더라도 데이터가 계속 깨져서 들어갔습니다.
'Oracle > 아키텍쳐' 카테고리의 다른 글
Oracle 21c 아키텍쳐 (0) | 2021.01.22 |
---|---|
오라클 기동,정지 절차 (0) | 2020.06.12 |
Character Set (1) | 2020.04.20 |
오라클 19c 아키텍쳐 소개 (0) | 2020.03.05 |
인덱스 스플릿(INDEX SPLIT) (0) | 2019.12.30 |
댓글