쉽게 쉽게

[MariaDB]MariaDB에서 오라클 DB 연동 본문

DB/MYSQL와 MariaDB

[MariaDB]MariaDB에서 오라클 DB 연동

곱마2 2024. 8. 12. 13:44
반응형

▤ 목차

    1. 이슈

    MariaDB에서 오라클 DB를 연동하여 데이터를 실시간으로 가져와야 할 필요성이 생겼다.

    때문에 이기종간의 DB를 연동하기 위해서 MariaDB(MySQL)에서 제공하는 CONNECT Storage Engine을 사용하고자 했다.

    CONNECT Storage Engine은 XML이나 엑셀 파일, 오라클이나 MSSQL과 같은 DBMS들의 테이블을 MariaDB에서 직접 쿼리 할 수 있도록 연결 기능을 제공해주는 스토리지 엔진이다.

    https://mariadb.com/kb/en/connect/

     

    CONNECT

     

    mariadb.com

    다만 이 글은 CONNECT Storage Engine 연동 후 사용법과 주의점을 기록하기 위해 글을 작성했다.

    구현방법은 아래 링크를 참고하시길 바란다.

    https://cirius.tistory.com/1609

     

    [MySQL] CONNECT Storage Engine Oracle연동

    CONNECT Storage Engine Oracle연동 실무중 많이 발생하는 이기종 DB간의 연결이다. 이 글에서는 MariaDB-Oracle DB 를 예로 설명한다. Oracle DB가 아닌 MSSQL , Postgre 등의 연결도 해당 DB에서 제공하는 Driver 들을

    cirius.tistory.com

    2. CONNECT Storage Engine 사용법

    CONNECT Storage Engine 설치가 잘 되었다면 MariaDB에서 오라클DB를 연동하여 사용할 수 있을 것이다.

    데이터를 사용하는 방법은 오라클 DB 테이블을 MariaDB에 생성하는 방식으로 사용한다.

    생성방법은 아래와 같다.

    CREATE table TEST_ORACLE (
    /* 컬럼지정 (모든 컬럼을 가져오려면 굳이 지정안해줘도 된다) */
     `ID` double NOT NULL, 
     `DATA`varchar(20)  DEFAULT NULL,
     PRIMARY KEY (`ID`),
     CONSTRAINT `SYS_C0063511` CHECK (`DATA` is not null) 
     )ENGINE=CONNECT 
     CONNECTION='DSN=Oracle;UID=[아이디];PWD=[비밀번호];' 
     TABLE_TYPE=ODBC tabname='[오라클DB 스키마].[연동하려는 오라클DB 테이블명]';

    ID(PK), DATA(NOT NULL) 컬럼을 가진 TEST_ORACLE 테이블이 생성되었고 데이터들은 오라클 DB에서 가져온 데이터들로 채워져 있다.

    이때, 모든 데이터를 가져오고 싶다면 컬럼을 지정하지 않아도 된다.

    생성된 테이블을 살펴보면 Engine이 CONNECT로 되어있는 걸 확인할 수 있다.

    다만 생성된 테이블을 사용할 때 주의할 점이 몇 가지 있다.

    1. 데이터 타입

    오라클 DB의 데이터타입과 MariaDB의 데이터타입이 달라서 변환이 필요한 컬럼들이 있을 때는 가져올 컬럼들의 데이터 타입을 지정해서 가져와야 한다.

    특히 Connect는 BLOC or TEXT 컬럼은 지원하지 않는다. 

    ERROR 1163 (42000): Storage engine CONNECT doesn't support BLOB/TEXT columns

    때문에 이 타입을 쓰는 데이터는 필히 변경을 해서 가져와야 한다.

     

    2. 인덱스

    CONNECT Storage Engine로 생성한 테이블은 인덱스까지 가져오지는 않는다.

    때문에 새로 생성한 테이블에 추가적으로 인덱스 생성 작업을 해줘야 한다.

     

    3. 수정, 삭제

    생성한 테이블은 오직 정보 조회용으로 사용해야 한다.

    수정 및 삭제를 하게 되면 에러가 나타나거나 원본 테이블에 영향을 미치게 된다.

    만약 생성한 테이블 데이터를 비우고 싶어 delete를 사용하게 되면 원본 테이블 데이터도 사라지게 되니 조심해야 한다. 

    테이블들이 실시간으로 연동되고 있다고 생각하면 편하다.

     

    4. 연결제거

    연결을 제거하려면 DROP문을 사용하여 테이블을 제거하면 된다. (DROP TABLE TEST_ORACLE;)

    DROP문을 사용하든 그냥 우클릭해서 삭제하든 편한 대로 하면 된다. (DELETE 절대 X)

     

    https://pajama.tistory.com/320

     

    MariaDB에서 CONNECT Engine으로 오라클 데이터베이스 참조하기

    안녕하세요. ProDBA에서 MariaDB에서 ODBC를 사용해서 다른 데이터베이스를 참조할 수 있는 기능이 있다고해서 테스트해봤습니다. 제가 테스트한 환경은 CentOS 6.10와 MariaDB 10.2.32 입니다. 우선 MariaDB는

    pajama.tistory.com

    잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다.
    반응형

    'DB > MYSQL와 MariaDB' 카테고리의 다른 글

    [MariaDB] 이클립스 MariaDB와 연동하기  (0) 2024.08.06
    [MYSQL] 윈도우 함수 정리  (0) 2024.07.08
    [MYSQL] select문에 count 여러개  (0) 2024.07.04
    MariaDB 대소구분 해결  (0) 2024.03.21
    [MYSQL] 쿼리 속도개선  (1) 2023.12.10