Postgresql 에서 Oracle에 있는 데이터를 가져오기 위해서는 FDW를 이용할 수 있다. FDW는 Foreign Data Wrapper 의 약자로 이기종 데이터베이스의 외래테이블 간에 연결하여 사용할 수 있는 솔루션이다.
FDW를 이용하여 내부 레거시 연계작업을 단순화할 수 있는 장점이 있다. 그 중에서도 Oracle과 PostgreSQL 데이터베이스 간에 외래테이블에 대한 연결작업에 대해서 알아보도록 하겠다.
아래 url 에 접근 하여 oracle_fdw를 다운로드 한다. (현 예제는 linux에 설치할 예정이므로 source code 파일을 다운로드 받는다.)
https://github.com/laurenz/oracle_fdw/releases/tag/ORACLE_FDW_1_3_0
oracle페이지에서 Instant Client Package – Basic/SDK 를 다운로드 받는다.
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
압축풀기 # unzip instantclient-basic-linux.x64-12.1.0.2.0.zip 라이브러리 설정 # ln -s libclntsh.so.12.1 libclntsh.so OS(linux) Postgresql계정의 환경변수 파일에(Ex .bash_profile)에 ‘LD_LIBRARY_PATH’와 ‘oracle_home’을 지정해 준다. # vim .bash_profile export LD_LIBRARY_PATH=/root/Desktop/instantclient_12_1 export oracle_home=/root/Desktop/instantclient_12_1 PATH=$LD_LIBRARY_PATH:$PATH:$HOME/bin
# unzip instantclient-sdk-linux.x64-12.1.0.2.0.zip 위에서 압축을 푼 파일 하단에 sdk라는 디렉토리가 생긴다.
1. Postgresql 의 pg_env.sh 파일을 실행시켜준 후 (# souce ./pg_env.sh) # make # make install 2. oracle_fdw Module을 EXTENSION 시킴 # CREATE EXTENSION oracle_fdw; 3. oracle 데이터 베이스 연결서버 생성 # create server ora foreign data wrapper oracle_fdw options(dbserver '//172.21.22.236:1521/orcl'); [주요사항] Oracle이 설치되어있는 서버의 /etc/host 파일과 postgresql이 설치되어 있는 서버의 /etc/hosts 파일에 각 통신하는 서버의 IP와 hostname 을 설정해 준다. 4. oracle 데이터베이스와 연결 할 유저 생성 # create user test5 password ‘test5’ login; # grant usage on foreign server ora to test5; # create user mapping for test5 server ora options(user 'scott', password 'tiger'); 5. 외래테이블 생성 # create foreign table emp_test( empno numeric, ename text, job text, mgr numeric, hiredate date, sal numeric, comm numeric, deptno numeric )server ora options(schema 'SCOTT', table 'EMP'); 6. 외래테이블 확인 # select * from emp_test; 7. 외래테이블 제거 # drop foreign table emp_test;
- 강좌 URL : http://www.gurubee.net/lecture/2962
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.