본문 바로가기

PostgreSQL

oracle_fdw 내용정리

 

stackoverflow에서 postgresql 관련 내용을 검색해봤다면 한번쯤 보았을 Laurenz Albe가 관리하는

postgresql 확장 프로그램으로 하단의 git에서 대부분의 이슈,소스 등의 내용을 찾을 수 있다.

laurenz/oracle_fdw: PostgreSQL Foreign Data Wrapper for Oracle (github.com)

 

GitHub - laurenz/oracle_fdw: PostgreSQL Foreign Data Wrapper for Oracle

PostgreSQL Foreign Data Wrapper for Oracle. Contribute to laurenz/oracle_fdw development by creating an account on GitHub.

github.com

 

PostgreSQL 커뮤니티에서는 여러가지 종류의 fdw(foreign data wrapper)를 제공하는데

한국에서는 제일 많이 사용되는 빈도를 자랑하는 fdw가 oracle_fdw일 것이다.(한국 시장 특성상)

 

Oracle_fdw는 PostgreSQL DBMS 서버에서 Oracle DBMS 서버 접근에 필요한

client 프로그램들을 가지고 Oracle에 존재하는 데이터에 접근을 하게 해주는 것이다.

 

이 부분에서 염두에 두어야 할 부분은 아무래도 서로 다른 DBMS간에 동작하는 것이다 보니

모든 작업이 PostgreSQL 오브젝트처럼 이루어질 것이라 생각하면 안된다는 점이다.

 

실시간으로 작업이 이루어지는 어플리케이션 코드를 oracle_fdw로 생성한 오브젝트를 사용하는 경우라면

최대한 데이터를 주기적으로 가져와서 PostgreSQL 서버에 담아서 그 데이터를 가져온다던지 하는 방식으로의 사용이

성능 관련한 이슈를 최소화하는 방법이며 그 과정에서도 오라클 원본 오브젝트에 변경이 이루어지거나 하는 경우를

관리가 가능하도록 절차를 마련해두는 것이 일반적인 업무 방식으로 하는 것이 권장된다.

 

oracle_fdw를 처음 설정, 사용하는 경우 쉽게 간과할 수 있는 부분은 통계정보 수집에 대한 부분으로

oracle_fdw를 통해 오라클의 데이터를 가져오는 경우에 where 조건의 push down이 정상적으로 이루어지기를 원한다면

PostgreSQL에 생성된 오라클의 데이터를 가져오는 foreign table을 analze 명령어를 통해 통계정보를 수집하여

PostgreSQL가 해당 테이블의 cost를 가지고 효율적인 플랜을 선택하게 하는 작업이 필요하다.

해당 통계정보 수집 기능의 경우 자동으로 수행되지 않아 주기적으로 수행이 필요하다는 것 또한 염두에 두자.

 

위의 git에 그런 부분들 외에도 사용상의 주의사항이나 알려진 버그 등에 대해 언급하고 있으니, 실제 업무에서 사용을 고려하는 경우 꼭 해당 내용들을 숙지하고 설정하기 바란다.