PostgreSQL 기본강좌
Postgresql에서 Oracle FDW 사용하기 0 2 4,621

by PostgreSQL Oracle FDW [2016.01.28]


Postgresql 에서 Oracle에 있는 데이터를 가져오기 위해서는 FDW를 이용할 수 있다. FDW는 Foreign Data Wrapper 의 약자로 이기종 데이터베이스의 외래테이블 간에 연결하여 사용할 수 있는 솔루션이다.

FDW를 이용하여 내부 레거시 연계작업을 단순화할 수 있는 장점이 있다. 그 중에서도 Oracle과 PostgreSQL 데이터베이스 간에 외래테이블에 대한 연결작업에 대해서 알아보도록 하겠다.

1. Oracle_FDW 모듈 컴파일

아래 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

1) instantclient-basic-linux.x64-12.1.0.2.0.zip

압축풀기
# 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

2) instantclient-sdk-linux.x64-12.1.0.2.0.zip
# unzip instantclient-sdk-linux.x64-12.1.0.2.0.zip
위에서 압축을 푼 파일 하단에 sdk라는 디렉토리가 생긴다.

3) Oracle FDW 컴파일

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

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 도와주십시요 ㅠ,ㅜ [2017.04.12 18:23:15]

oracle에서 PostgreSQL로 테이블 및 데이터를 이관을 어떻해 할가라고 고민중에

이글에 보게 되었네요

위 글을 보면

Postgresql 에서 Oracle에 있는 데이터를 가져오기 위해서는 FDW를 이용할 수 있다. FDW는 Foreign Data Wrapper 의 약자로 이기종 데이터베이스의 외래테이블 간에 연결하여 사용할 수 있는 솔루션이다.

이 처럼 조회가 되면 저장도 할수 있다는 뜻으로 파악되는데 맞나요?

그리고 솔루션이라 하면 유료 솔루션????? 위 웹페이지에서 다운받아서 돈내고 써야하는건가요?

 


by 주킹 [2017.05.31 15:42:08]

사용하셔도 무관하고요

DBLINK와 유사하다고 보시면 됩니다.

모 궂이 데이터를 가져오려면 CTAS로 생성을 해보면 될거같습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입