오라클에서 MariaDB - olakeul-eseo MariaDB

개인서버를 운영하는데, 오라클은 유로라서 혹시 모를 상황에 대비해 MariaDB로 변경했다. 그 과정을 여기에 나열하겠다. MariaDB에 오라클과 동일하게 테이블을 생성할 수 있는 방법이며 not null, pk 지정은 따로 해주셔야합니다.

오라클에서 MariaDB - olakeul-eseo MariaDB

오라클에서 MariaDB - olakeul-eseo MariaDB
오라클에서 MariaDB - olakeul-eseo MariaDB

http://www.sqlines.com/oracle-to-mysql (좌) /  http://www.sqlines.com/online (우)

왼쪽의 사이트를 들어가면, sqlLines의 메인페이지를 볼 수 있다. 데스크탑 버전과 온라인 버전이 있다고 하는데, 간편하게 온라인 버전을 사용하겠습니다. 오른쪽의 링크를 클릭하면 바로 들어갈 수 있습니다.

오라클에서 MariaDB - olakeul-eseo MariaDB
오라클에서 MariaDB - olakeul-eseo MariaDB

온라인 버전을 들어오면 왼쪽이 변환전 오른쪽이 변환후 언어입니다. 왼쪽은 Sources를 Oracle로 지정, 오른쪽 Target을 MariaDB로 설정합니다.

오라클 테이블 및 데이터 익스포트 하는 방법

더보기

오라클에서 MariaDB - olakeul-eseo MariaDB

[SQL Developer] > [도구] > [데이터베이스 익스포트]

오라클에서 MariaDB - olakeul-eseo MariaDB

MariaDB와는 다른점이 많아서 테이블의 컬럼명, 데이터형태만 가져오기 위해서 DDL익스포트 내부의 체크박스를 보두 해제합니다. 테이블 내의 데이터를 가져오려면 데이터 익스포크는 체크박스를 선택으로 유지 합니다. 인코딩 방식은 utf8로 설정합니다.

오라클에서 MariaDB - olakeul-eseo MariaDB

모든 표줄 토글을 클릭하여 모든 체크박스들을 해제 한 다음 테이블만 선택 한 뒤 다음버튼을 누릅니다.

오라클에서 MariaDB - olakeul-eseo MariaDB

조회 버튼을 눌러 왼쪽의 리스트에 테이블을 표출시킨 뒤, 모든 테이블을 오른쪽 리스트로 이동 시킵니다.

오라클에서 MariaDB - olakeul-eseo MariaDB

이와 같은 화면이 나오면 다음버튼을 누릅니다.

오라클에서 MariaDB - olakeul-eseo MariaDB

익스포트 설정을 최종적으로 확인 할 수 있는 페이지 입니다. 맞다면 완료버튼을 누릅니다.

오라클에서 MariaDB - olakeul-eseo MariaDB

익스포트가 완료되면 위와 같이 SQL문이 자동적으로 작성됩니다.

오라클에서 MariaDB - olakeul-eseo MariaDB

왼쪽에 sql파일 내용을 넣고, convert버튼을 눌러 변환합니다. 이를 이용하여 Maria DB에 옮길 수 있습니다. 변환 시에 누락사항이 있어 직접 수정한 부분이 있었는데 그 점에 대해 안내드립니다.


SQL문 수정사항

날짜 Default값 수정

날짜의 Default값을 지정할 때, 오라클은 systimestamp를 사용합니다. MariaDB에서는 CURRENT_TIMESTAMP를 사용하므로 테이블 생성 SQL문에서 모두 바꿔주어야 합니다.

<ORACLE>
CREATE TABLE "LOGGER" ("LOG" VARCHAR2(1000), "TIME" VARCHAR2(30) DEFAULT SYSDATE)
<MariaDB>
CREATE TABLE "LOGGER" ("LOG" VARCHAR2(1000), "TIME" VARCHAR2(30) DEFAULT CURRENT_TIMESTAMP)

날짜 입력 형식 수정

오라클에 systimestamp로 저장하게 되면 '19/11/20 13:56:04'와 같은 형태로 저장됩니다. 오라클에서는 이러한 날짜 형식을 'RR/MM/DD HH24:MI:SS'로 표현하지만, MariaDB에서는 '%y/%m/%d %H:%i:%s'와 같이 표현됩니다. 따라서 이러한 형태로 들어가는 데이터들을 모두 바꿔주어야 합니다.

<ORACLE>
Insert into MEMBER (ID,PW,DATE_REGISTER,NICKNAME)
	values ('asdf','1234',to_date('19/11/20 13:56:04','RR/MM/DD HH24:MI:SS'),'asdf');
<MariaDB>
Insert into MEMBER (ID,PW,DATE_REGISTER,NICKNAME)
	values ('asdf','1234',str_to_date('19/11/20 13:56:04','%y/%m/%d %H:%i:%s'),'asdf');

오라클에서 MariaDB - olakeul-eseo MariaDB

SQL 변경 후 새로운 쿼리 파일을 생성해줍니다.

오라클에서 MariaDB - olakeul-eseo MariaDB

생성된 파일에 변환된 SQL문을 옮겨주고, 원하는 부분을 선택 한 뒤 SQL문을 실행해 줍니다. 잘 적용이 되는지 확인하면서 SQL문을 실행해주면 됩니다.

SQL문이 모두 정상적으로 실행되었다면, 기존 DB에서 NM조건과 PK를 참고하시어 테이블 설정을 해주시면 됩니다.