일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 멀티프로세싱
- 객체지향
- 붕대 감기
- 오버라이딩
- 프로그래머스
- break 사용법
- java
- over()
- 자바의정석
- 쿠키
- 자바의 정석
- 중첩 break
- 프로그래머스 붕대 감기
- 붕대 감기 자바
- 멀티태스킹
- contiune
- spring security 설정
- 오버로딩
- 오블완
- spring security
- 캡슐화
- 티스토리챌린지
- 혼공얄코
- SQL Mapper
- CPU
- continue 사용법
- 입출력
- 리눅스
- 다형성
- hackerrank
- Today
- Total
쉽게 쉽게
[MariaDB]MariaDB에서 오라클 DB 연동 본문
▤ 목차
1. 이슈
MariaDB에서 오라클 DB를 연동하여 데이터를 실시간으로 가져와야 할 필요성이 생겼다.
때문에 이기종간의 DB를 연동하기 위해서 MariaDB(MySQL)에서 제공하는 CONNECT Storage Engine을 사용하고자 했다.
CONNECT Storage Engine은 XML이나 엑셀 파일, 오라클이나 MSSQL과 같은 DBMS들의 테이블을 MariaDB에서 직접 쿼리 할 수 있도록 연결 기능을 제공해주는 스토리지 엔진이다.
https://mariadb.com/kb/en/connect/
다만 이 글은 CONNECT Storage Engine 연동 후 사용법과 주의점을 기록하기 위해 글을 작성했다.
구현방법은 아래 링크를 참고하시길 바란다.
https://cirius.tistory.com/1609
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
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
'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 |