[DB] MySQL에서 Oracle로 데이터 이관할 때 주의할 점
최종 프로젝트를 위해, MySQL에서 Oracle로 데이터 이관시 주의할 점 (예습)
1️⃣ 데이터 타입 차이 명확히 정리
MySQL의 INT, TEXT, DATETIME 등은 Oracle에서는 각각 NUMBER, CLOB, DATE 또는 TIMESTAMP로 매핑해야 함
특히 AUTO_INCREMENT는 Oracle에선 SEQUENCE + TRIGGER 방식으로 대체해야 함, 이관 시 자동으로 변환되지 않음
2️⃣ SQL 문법 차이로 인한 에러 주의
LIMIT → ROWNUM 또는 FETCH FIRST N ROWS ONLY
NOW() → SYSDATE
IFNULL() → NVL()
함수 및 키워드 차이가 많으니 기존 쿼리를 전부 점검
3️⃣ 테이블/컬럼명 대소문자 처리
MySQL은 대소문자 구분이 느슨하지만 Oracle은 대소문자 구분이 엄격
특히 쌍따옴표("columnName")로 정의한 컬럼은 반드시 그 이름 그대로 사용해야함, 가급적 전부 대문자/소문자로 일관되게 정리하는 것이 안전
4️⃣ 트랜잭션 처리 방식 차이
Oracle은 DDL문도 트랜잭션에 포함되지 않음, CREATE, ALTER, DROP 등은 롤백이 불가능
MySQL에서는 무심코 썼던 트랜잭션 처리도 Oracle에선 좀 더 명확한 커밋/롤백 제어가 필요
5️⃣ 문자셋과 인코딩 이슈 확인
MySQL의 utf8은 3바이트지만 Oracle의 AL32UTF8은 4바이트 기준
CLOB, NCLOB 등으로 넘어가는 경우 문자열 길이 제한이나 바이트 수 차이로 데이터 누락 가능성 있음
6️⃣ Index 및 Constraint 명시적으로 점검
기본키, 외래키, 유니크 키 설정이 일부 빠지거나 다른 방식으로 이관될 수 있으므로 수동 확인 필수.
특히 제약 조건의 이름이 충돌할 수 있으니, prefix 등을 활용해 구분해두는 게 좋음