MariaDB에서 Oracle로 DBLINK 적용 및 기타(unixODBC, jdbc)_2

2024. 2. 13. 11:26개발

반응형

 

다양한 방법으로 시도를 해봤지만 한글깨짐이 정상적으로 해결되지 못해서... 방향을 바꿔보기로 했다.

현재 odbc 방식으로 연결해서 테스트 하고 있는데 이걸 jdbc방식으로 해보는건 어떨까??

다른 블로그나 기타 예시를 보니 JVM쪽과 jdbc경로를 지정해주는 것으로 대부분의 설정이 끝나는 듯 보였고 내 경우에는어차피 자바는 깔려있고 jdbc 라이브러리만 환경변수에 지정해주면 될 것도 같은데...?

물론 동일하게 connect 엔진을 사용하기 때문에 connect엔진의 설치는 동일하게 진행되어야 한다.

 

참고주소

MariaDB Connect engine JDBC 연결 사용하기

 

MariaDB Connect engine JDBC 연결 사용하기

MariaDB에서 이기종 데이터베이스를 사용하기 위해서 Connect 엔진을 사용합니다. connect 엔진에 대한 MariaDB의 웹페이지는 아래를 참고하시면 됩니다.   connect 엔진을 이용해서 이기종 데이터 베이스

osskorea.wordpress.com

 

다른건 설치하기 힘드니 기존에 다운받았던 oracle instantclient에서 제공하는 ojdbc를 사용해서 접근해봤다.

설치

yum install oracle-instantclient12.2-odbc-12.2.0.1.0-2.x86_64.rpm

 

크게 다른건 없다. 기본적으로 서버에 설치된 자바 jdk의 jvm 위치와 오라클의 를 oracle-instantclient12.2-odbc-12.2.0.1.0-2.x86_64.rpm 설치하면서 생성된 경로에 있는 ojdbc8의 위치를 잡아준다.

# jvm 위치잡기 임시
set global connect_jvm_path="/usr/local/java/jre/lib/amd64/server"
set global connect_class_path="/usr/lib/oracle/12.2/client64/lib/ojdbc8.jar"

내 경우에는 jdk경로를 /usr/local/java에 잡아두었고 odbc의 경우 /usr/lib/oracle의 경로에 설치된다.

set global로 mysql 콘솔로 잡는 경우 재시작하면 reset되지만 그게 싫은경우에는 my.cnf에 해당 변수값을 지정해주면 된다.

임시 서버 생성

create server 'oracle' foreign data wrapper 'oracle' options (
HOST 'jdbc:oracle:thin:@ip:1521:orcl',
DATABASE 'orcl',
USER 'id',
PASSWORD 'password',
PORT 0,
SOCKET '',
OWNER 'id');

 

DBLINK 대상 테이블 생성

위에서 명시한 임시서버를 사용해서 DBLINK 테이블을 생성한다.

#############################
## 테이블 생성
create table oracle_test
(`BORD_NO` VARCHAR(20) NOT NULL,`PUBL_LV` CHAR(4),`IMPT_LV` DECIMAL(65),`REGS_ER` VARCHAR(20) NOT NULL,`BORD_NM` VARCHAR(200) NOT NULL,`DISP_FR` DATETIME,`DISP_TO` DATETIME,`BORD_CONT` VARCHAR(4000),`USED_YN` CHAR(1),`CRET_ID` VARCHAR(20),`CRET_IP` VARCHAR(20),`CRET_DT` DATETIME,`UPDT_ID` VARCHAR(20),`UPDT_IP` VARCHAR(20),`UPDT_DT` DATETIME)
engine=connect table_type=JDBC 
connection='oracle/DTKB_BORD';
#####################################

 

생성시 주의사항!!!!(수정됨)

위와 같이 컬럼을 제대로 명시하지 않고 그냥 테이블을 생성하게 되면 문제가 발생한다.
에러가 발생 할 경우 저렇게 명시해서 생성하면 되고 에러가 없는 경우에는 그냥 잘 생성이 된다.
오라클의 NUMBER 타입으로 지정된 값의 경우 DECIMAL로 명시되지만 그 값이 이상하게 지정된다.
EX) DECIMAL(128787218371248621)와 같이 매우 큰 값.

DDL의 컬럼을 명확하게 명시하면 제대로 생성되고 한글도 안깨진다.

한글이 표시되는 모습

 

 

반응형