개발/데이터베이스

PostgreSQL(FDW) -> Oracle DB를 foreign table로 연결 사용

피터JK 2025. 4. 16. 13:51
728x90

✅ 1. oracle_fdw 설치 방법 (Linux 기준)

# 필요한 라이브러리 설치
sudo apt install postgresql-server-dev-14   # PostgreSQL 버전에 맞춰 설치
sudo apt install libclntsh-dev libaio-dev   # Oracle Client SDK 필요

# oracle_fdw 다운로드 및 빌드
git clone https://github.com/laurenz/oracle_fdw.git
cd oracle_fdw
make
sudo make install

⚠️ Oracle Instant Client 및 ORACLE_HOME, LD_LIBRARY_PATH 환경 변수 설정도 필요하다.


✅ 2. PostgreSQL 내부에서 oracle_fdw 확장 등록

CREATE EXTENSION oracle_fdw;

✅ 3. Oracle 서버 등록

CREATE SERVER oracle_server
FOREIGN DATA WRAPPER oracle_fdw
OPTIONS (dbserver '//192.168.0.100:1521/XE');  -- orcl 대신 서비스명/SID

✅ 4. 사용자 매핑

CREATE USER MAPPING FOR CURRENT_USER
SERVER oracle_server
OPTIONS (user 'oracle_user', password 'oracle_password');

✅ 5. 외부 테이블 만들기 (Foreign Table)

CREATE FOREIGN TABLE oracle_emp (
    empno integer,
    ename text,
    job text,
    sal numeric
)
SERVER oracle_server
OPTIONS (schema 'HR', table 'EMP');

이제 PostgreSQL에서 마치 로컬 테이블처럼 SELECT * FROM oracle_emp; 가능!


✅ 6. 활용 예

-- PostgreSQL 테이블과 조인도 가능
SELECT a.empno, a.ename, b.dept_name
FROM oracle_emp a
JOIN local_dept b ON a.empno = b.empno;

⚠️ 참고사항

  • oracle_fdw는 일부 경우에만 INSERT/UPDATE/DELETE 가능 (Oracle 테이블에 따라 다름)
  • Oracle Instant Client 19c 이상 버전 추천
  • 권한 문제로 Oracle 쪽에서 SELECT 권한 꼭 필요

 

728x90