DBA

개인 학습, 작업 기록용입니다. 올바르지 않은 정보가 있다면 댓글주시면 감사하겠습니다!

DATABASE/Mysql MariaDB

[MariaDB] CONNECT Engine 설치 및 ORACLE , MSSQL 연결하기

DBnA 2024. 1. 26. 16:02

Connect Engine이란 ? 

 

MariaDB 스토리지 엔진을 통해 외부 원격 데이터에 접근 가능합니다.

connect engine 외부 데이터 소스와 MariaDB 간의 연결을 위한 엔진으로

XML, CSV 나 MySQL, ORACLE, SQL Server 등 타 DBMS의 테이블을 MariaDB에서 직접 쿼리할 수 있도록 연결기능을 제공합니다. 

 

Connect Engine 설치 및 ORACLE , MSSQL 연결 

1. Connect Engine 설치 
[root@dbteam01 /]# yum install MariaDB-connect-engine
.
.
.
.
Installed:
  MariaDB-connect-engine.x86_64 0:10.11.6-1.el7.centos

Complete!
[root@dbteam01 /]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.11.6-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show engines;
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                                         | Transactions | XA   | Savepoints |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | Stores tables as CSV files                                                                      | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                                           | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                                       | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO           | NO   | NO         |
| MyISAM             | YES     | Non-transactional engine with good performance and small data footprint                         | NO           | NO   | NO         |
| CONNECT            | YES     | Management of External Data (SQL/NOSQL/MED), including Rest query results                       | NO           | NO   | NO         |
| SEQUENCE           | YES     | Generated tables filled with sequential values                                                  | YES          | NO   | YES        |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables                | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                                              | NO           | NO   | NO         |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.000 sec)

 

 

2. unixODBC 설치

 

타 DBMS 접근하기 위해서 스토리지 엔진에는 ODBC라이브러리가 필요하다.

유닉스 계열에선 일반적으로 unixODBC 의미한다.

[root@dbteam01 /]# yum install unixODBC

 

 

3. ORACLE, MS ODBC 드라이버 설치

 

ORACLE, MS ODBC 드라이버 사용을 위해 RPM으로 설치함

* RPM(Red Hat Package Manager) : 드라이버 설치 및 관리 도구

 

ORACLE MS 공식 웹사이트에서 ODBC 드라이버 rpm 다운로드 해당파일 설치

rpm -i [rpm패키지명].rpm  명령어로 패키지 설치

 

* 제 경우에는 /usr/lib 경로에 아래 rpm 파일을 다운로드했습니다.

oralce : oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm / oracle-instantclient-odbc-21.1.0.0.0-1.x86_64.rpm

ms : msodbcsql17-17.6.1.1-1.x86_64.rpm 

#oracle rpm설치
[root@dbteam01 /]# rpm -i /usr/lib/oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm
[root@dbteam01 /]# rpm -i /usr/lib/oracle-instantclient-odbc-21.1.0.0.0-1.x86_64.rpm

#ms rpm설치
[root@dbteam01 /]# rpm -i /usr/lib/msodbcsql17-17.6.1.1-1.x86_64.rpm

#설치 확인 
[root@dbteam01 /]# rpm -qa | grep oracle
oracle-instantclient-basic-21.1.0.0.0-1.x86_64
oracle-instantclient-odbc-21.1.0.0.0-1.x86_64

[root@dbteam01 /]# rpm -qa | grep ms
msodbcsql17-17.6.1.1-1.x86_64

 

 

4. 환경변수 설정
[root@dbteam01 /]# vi .bash_profile

#.bash_profile 하단에 환경변수 추가
export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949

 

 

#파일 수정
[root@dbteam01 /]# vi /usr/lib/systemd/system/mariadb.service

#파일 서비스부분에 해당 변수 추가 
[Service]
Environment=NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949
	
#systemd 변경 사항 적용
[root@dbteam01 /]# systemctl daemon-reload
	
# mariadb.service 재시작
[root@dbteam01 /]# systemctl restart mariadb.service

 

5. odbcinst.ini 수정

 

ODBC 드라이버 설치 정보를 설정파는 파일로 드라이버 추가나 구성할때 사용

( MS 경우  ODBC 드라이버 설치시 자동 설정되어 별도 수정하지 않음 )

[root@dbteam01 /]# vi /etc/odbcinst.ini

#하단에 아래 정보 추가
[OracleODBC 21.1]
Description=Oracle ODBC driver for Oracle
Driver=/usr/lib/oracle/21/client64/lib/libsqora.so.21.1
FileUsage=1

 

 

6. odbc.ini 수정

 

ODBC 드라이버와 데이터 소스에 대한 연결정보 설정

[root@dbteam01 /]# vi /etc/odbc.ini

#DB 연결정보 추가- [DSN:DataSourceName 지정]

[ORA_DEV]
Description = ORADEV(설명내용)
Driver = OracleODBC 21.1
Trace = yes
ServerName =//[오라클서버IP]:1521/[오라클servicename]
Port =  [포트]
Database = [연결DB]
ServerName =//192.168.213.212:1521/ORCLDEV2

[MS_DEV]
Driver = ODBC Driver 17 for SQL Server
Description = MSDEV
Trace = Yes
Server = [MS서버IP]
Port = [포트]
Database = [연결DB]

 

7. 접속확인

isql 활용하여 접속 확인

* isql : 데이터 소스에 연결하고 쿼리 실행에 사용되는 ODBC 제공 도구 

 

isql -v DSN [username] ["password"]

-v는 상세 출력 옵션임.

[root@dbteam01 /]# isql -v ORA_DEV dba_wrk "#roqkf0909"

 

 

8. MariaDB 접속하여 확인

DBeaver 로 MariaDB에 접속하여 connect engine을 통한 테이블을 생성함.

CREATE TABLE xtmp_ora_cate2
ENGINE=connect
CONNECTION='DSN=ORA_DEV;UID=dba_wrk;PWD=#roqkf0909'
`TABLE_TYPE`=ODBC `tabname`='VW_XTMP_TEST_CATE' ;

 

테이블 생성 및 데이터 조회 확인. 

 

단순 접속 테스트용으로 생성한 테이블임. 실제 사용테이블은 데이터타입과 언어셋 고려하여 작성하여야 함

 

connect 엔진은 연결기능을 제공하는 것이므로 connect 엔진사용하여 테이블 생성시에는 .frm(테이블 정의 파일) 만 생성되는 걸 볼 수 있다.

 

 

참고)

Installing the CONNECT Storage Engine - MariaDB Knowledge Base