** 2024-06-18에 내용을 추가했습니다.
지금 하고 있는 일은 잘 되지 못한 프로젝트를 건네받고 마무리하고 있는데..
기존 시스템을 계속 쓰겠다는 이유로 기존 DB를 계속 조회할 수 있어야 했다.
여러가지 해결방안 조건 중에
가장 손이 적게 가는 방법을 생각하던 중
Federated 엔진에 대한 정보를 읽었던 게 생각이 났고 제안을 하게 되었다.
계속 변하는 자료의 통계를 내기에는 실시간 + 공수절약(관련 개발자가 일을 안 함)을 생각하면 현재 상황에서는 최선이라 생각이 들었다.
참고로 federated는 같은 mariadb끼리 연결하는 엔진이었고
connect엔진이 다른 DB와 연결할 수 있는 기능을 제공한다.
제안은 했지만
다른 시니어 개발자는 mariadb가 못쓰게 될 수 있다는, 결함이 있다는 듯한 이상한 말을 하여 쓰지 않기로 했지만
그렇게 심각한데 connect엔진을 계속 지원하고 있다는 점은 이해되지 않았다.
어쨌든 제안도 했고 궁금한 기술이기도 하니
한 번 써보기로 했다.
고려해야 할 점은
개발서버 oracle에 접속할 client 필요(제 PC에는 서버도 클라이언트도 없음)
Oracle DB관련 리소스는 너무 크게 잡히거나 설치 시 registry에 이거 저거 다 건드리는 점이 싫어서(무거운 거 싫어 ㅠㅠ)
조금 알아본 결과 oracle instant client라는 가벼운 프로그램이 있어서 이걸 써보기로 했습니다.
https://www.oracle.com/kr/database/technologies/instant-client/winx64-64-downloads.html
Instant Client for Microsoft Windows (x64) 64-bit | Oracle 대한민국
Base - one of these packages is required Tools - optional packages Development and Runtime - optional packages
www.oracle.com
위 링크에서 oracle버전에 맞는 버전을 선택하여 다운로드.
Basic Package (혹은 Lite), ODBC Package를 다운로드하여 같은 폴더에 압축을 풀어 줍니다.

** tnsnames.ora 파일을 세팅해서 같은 위치에 배치시켜야합니다.
받은 기념으로 dbeaver에 native 드라이버로 지정해서 연결해 보니 잘 됐습니다.
ODBC 데이터 원본에서 드라이버를 추가하기 위해서는 위 [경로확인] 위치에서 [odbc_install.exe]를 실행하면 다음 진행할 데이터 원본 관리자에 드라이버가 추가합니다.
참고로 테이블 연결에 대해서 알아본 결과 DSN(데이터 원본 이름)을 통해서 연결한다.
이를 관리하는 프로그램이 ODBC 데이터 원본인데
윈도우 키를 누르고 odbcad32라고 치면 ODBC 데이터 원본(64bit)이 나오는데 실행한다.


여기서 [시스템 DSN] 탭에서 [추가(D) ...]를 누르면 아래와 같이 Oracle DB 접속정보를 넣고 [Test Connection]을 눌러 추가합니다.

윈도우 환경과 리눅스를 왔다 갔다 하니 내용이 조금 꼬였네요.
요약해서 큰 틀만 생각하자면
1. mariadb에서 오라클에 접근하기 위해서 instantclient 설치 및 ODBC에 추가
2. mariadb에서 connect so 설치(Windows 버전에는 so파일이 포함되어 있음)
install soname 'ha_connect';
3. cnf 파일에
plugin_load_add = ha_connect
추가하고 재시작
4. create 문 작성
create table {테이블명} (
-- 아래 컬럼은 mariadb 페이지에 있는 예제입니다.
-- 원격 테이블의 DDL과 동일하게(매칭이 되는 데이터 타입으로) 컬럼을 작성
EMP_NO smallint(5) not null,
FULL_NAME varchar(37) not null),
PHONE_EXT varchar(4) not null,
HIRE_DATE date,
DEPT_NO smallint(3) not null,
JOB_COUNTRY varchar(15),
SALARY double(12,2) not null)
engine=CONNECT table_type=ODBC tabname='{원격테이블명}'
connection='DSN={ODBC에서-설정한-DataSourceName}';
https://mariadb.com/kb/en/connect-odbc-table-type-accessing-tables-from-another-dbms/
CONNECT ODBC Table Type: Accessing Tables From Another DBMS
CONNECT Table Types - ODBC Table Type: Accessing Tables from other DBMS
mariadb.com
이런 방식으로 연결하고 쿼리 성공했던 기억이 나네요..
갈레라를 진작에 거둬냈다면 이걸로 개발소요를 줄였을텐데 아쉽다는 생각이 드네요.
추후에 여유가 있다면 더 자세하게 작성할 예정입니다.