본문 바로가기
데이터베이스

Oracle을 MySQL로 변환할 때 고려해야 할 3가지 오류

by 데이널 2024. 7. 11.

Legacy 테이블을 인터페이스 하다 보면, 다양한 데이터베이스의 데이터를 가져오게 됩니다. 일반적으로 소스 시스템의 구조와 동일하게 타깃 시스템에 만듭니다. 이는 인터페이스가 정확히 되었는지를 확인하기에도 용이합니다. 

 

그래서 오라클 database의 테이블을 MySQL에 생성하다보면 이기종 database이기 때문에 부분적으로 오류가 발생합니다. 오늘은 Oracle MySQL로 테이블을 생성할 때 발생하는 3가지 오류에 대해 살펴보겠습니다. 

 

Oracle - MySQL 발생하는 3가지 오류
Oracle  →  MySQL 발생하는 3가지 오류

 

1. 인덱스 생성 길이 오류

오류 내용 : Error Code : Specified key was too long; max key length is 3072 bytes

 

원인

  • PK생성시 인덱스 키 길이가 3,072 byte 초과하면 발생
  • Database 생성시 Character set을 'UTF8MB4'로 생성해서 한글 한글자당 4byte를 차지함
  • 인덱스 키의 총 길이의 합이 초과됨

방안

  • PK를 삭제하는 방식으로 처리
  • 가능한 작은 PK로 재구성

 

2. 테이블 생성할 때 문자타입(varchar 등) 길이 제한

오류내용 : Error Code [1118][42000] : Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535, 

 

원인

  • MySQL 테이블 최대 문자타입 사용 총 컬럼 사이즈는 65,535 byte로 제한되어 있음

방안

  • varchar(2000) 이상인 컬럼은 'text' type으로 변경.

   
3. Character Set 인지에 따른 한글컬럼 사이즈 증가

오류내용 : 마이그레이션 시 한글 데이터 포함 컬럼 사이즈 오버(size over) 오류 발생

 

원인

  • Character set을 'UTF8MB4'로 함으로써 한글자당 4byte씩 차지(오라클은 2byte 차지)

해결

  • 한글 데이터 포함 예상 컬럼은 Type의 길이를 2배 증가하여 생성함
  • 예를 들어,  ~명, ~설명, ~내용의 도메인은 타입 길이 2배 증가
  • 한글의 경우 utf8로 지정했을 경우 3 bytes를 차지함