개발/데이터베이스

oracle_fdw 연결확인 및 문제 발생시 점검/해결 방법

피터JK 2025. 4. 16. 14:31
728x90

✅ 1. Oracle 연결 상태 점검 방법

① Foreign server 등록 확인

SELECT srvname, srvoptions
FROM pg_foreign_server
WHERE srvname = 'oracle_server'; -- 서버 이름 확인

dbserver=//host:port/service 형식인지 확인


② 사용자 매핑 확인

SELECT * FROM pg_user_mappings
WHERE srvid = (SELECT oid FROM pg_foreign_server WHERE srvname = 'oracle_server');

user, password 제대로 설정되어 있는지 확인


③ 실제 연결 테스트 (foreign table SELECT)

SELECT * FROM foreign_table_name LIMIT 1;
  • 정상 동작하면 연결 OK
  • 오류 발생 시 로그 또는 오류 메시지 참고

❗ 오류 발생 시 트러블슈팅 팁


🔸 [1] ERROR: could not connect to Oracle: ORA-xxxxx

이건 거의 대부분 접속 정보 오류이다.

✔️ 점검 리스트

  • dbserver=//호스트:포트/서비스이름 형식이 맞는지?
  • Oracle DB 쪽 tnsnames.ora와 비교
  • Oracle에서 직접 SQL*Plus로 접속 시도해서 되는지 확인:
  • sqlplus oracle_user/oracle_password@//host:port/service

🔸 [2] ERROR: could not load library "oracle_fdw": ...

이건 oracle_fdw가 PostgreSQL에 제대로 설치 안 됐을 때 발생.

✔️ 점검 리스트

  • make + make install 제대로 했는지?
  • oracle_fdw.so 가 PostgreSQL lib 폴더에 존재하는지?
find /usr/lib/postgresql -name oracle_fdw.so
  • Oracle Instant Client 설치되어 있고 환경변수 설정됐는지?
export ORACLE_HOME=/path/to/instantclient
export LD_LIBRARY_PATH=$ORACLE_HOME

PostgreSQL을 해당 환경에서 재시작해줘야 반영됩니다.


🔸 [3] ERROR: could not convert Oracle type ... to PostgreSQL type

이건 Oracle 쪽 컬럼 타입이 PostgreSQL에서 매핑되지 않을 때 발생합니다.

✔️ 해결 방법

  • foreign table 만들 때 컬럼 타입을 PostgreSQL에 맞게 수동 지정
  • 예: NUMBER(38,0) → bigint, VARCHAR2 → text 등

🔸 [4] segmentation fault or server closed the connection unexpectedly

이건 라이브러리 충돌, 환경변수 문제일 수 있습니다.

✔️ 조치

  • oracle_fdw 빌드 시 PostgreSQL과 Oracle Client 버전 호환 확인
  • LD_LIBRARY_PATH가 제대로 설정되지 않았을 가능성 높음
  • PostgreSQL 서버 로그 확인 (/var/log/postgresql/postgresql-XX-main.log 등)

✅ 로그 파일 꼭 확인하세요

PostgreSQL 로그 위치 예시:

# Ubuntu/Debian
/var/log/postgresql/postgresql-14-main.log

# CentOS/RHEL
/var/lib/pgsql/14/data/log

오류 메시지 상세하게 기록돼 있습니다.


💡 추가 팁

  • foreign table 대신 IMPORT FOREIGN SCHEMA로 자동 생성 가능:
IMPORT FOREIGN SCHEMA "HR"
FROM SERVER oracle_server
INTO public;

단, Oracle에서 권한이 있는 테이블만 가져온다.

 

728x90