데이터베이스 이관시 문제점
aispark 수험생

답변 채택시 : 0코아

답변 1 추천 0 조회 3938 2013.07.19

기존 데이터베이스는 문자셋은 EUC-KR을 쓰고 있고


새로 이관 될 데이터베이스 문자셋은 UTF-8 입니다.


데이터를 import 할 때 ORA-01460: unimplemented or unreasonable conversion requested 와 같은 에러가 발생합니다.


원인을 찾아보니 EUC-KR은 한글을 2byte로 처리하고 UTF-8은 3byte 처리하면서 컬럼의 허용 byte를 초과하면서 발생하는거 같습니다.


이럴 경우 어떤식으로 이관해야 할까요?

댓글 (0)
목록 답변등록
데이터베이스 이관시 문제점
kingdom99 2013.07.19

경험에 근거하여 말씀드리겠습니다.


유사한 사례로 데이터베이스를 이관 작업을 했었을 때 아래와 같은 방법으로 컬럼사이즈를 늘렸습니다.
오라클에서 권고하는 사항은 KO15KSC5601에서 UTF8로 바뀌었을 때 캐릭터 타입에 대해서 15~20%정도 증가시키면 된다고 하지만 실제로 수행해보면 부족한 상황이 발생하여 25~30%정도를 증가시켜서 테이블을 생성했었습니다.
이와 같이 증가시켰을때는 테스트시에 문제가 발생시 적절하게 증가시켜주어야 합니다. 모든 타입을 일관성 있게 증가시키기에는 부담이 있기 때문에 상황에 맞게 판단하시기 바랍니다.

 

두번째 방법은 데이터를 전수 조사하여 하는 방법입니다.
CONVERT함수를 이용하는 것인데 UTF8일 경우에 어느 정도의 공간을 차지할까 측정하는 것입니다.

 

SELECT
 LENGTHB(CONVERT('데이터 전수 조사 방법', 'UTF8')) UTF8_LENGTH,
 LENGTHB(CONVERT('데이터 전수 조사 방법', 'KO16MSWIN949')) MSWIN949_LENGTH
 FROM DUAL

 

이와 같은 방법으로 수행하면 UTF8일때의 길이와 KO16MSWIN949 일때의 길이가 나옵니다. 위의 함수 이용해서 현재의 최대 길이가 어느 정도인지 파악하시면 되겠네요.

댓글 (1)