PostgreSQL

오라클에서 PostgreSQL로 데이터베이스 연결하기: 상세 가이드 (DB 링크 활용)

_Blue_Sky_ 2025. 2. 13. 10:23
728x90
728x90

 

네, 오라클 데이터베이스(DB)에서 포스트그레SQL(PostgreSQL)을 링크로 연결하는 것은 가능합니다. 오라클의 DB 링크(Database Link)는 기본적으로 오라클과 오라클 간의 데이터베이스 연결을 지원하지만, Oracle Database Gateway 또는 Oracle Heterogeneous Services를 이용하면 이종 데이터베이스와도 연결할 수 있습니다.

아래에 PostgreSQL과 Oracle을 DB 링크로 연결하는 방법을 설명드리겠습니다.


1. 오라클과 PostgreSQL을 연결하는 기본 개념

오라클에서 PostgreSQL 데이터를 읽으려면 아래의 매개체를 사용해야 연결됩니다:

  • Oracle Database Gateway for ODBC (Heterogeneous Services를 사용)
    • 오라클에서 ODBC 드라이버를 통해 PostgreSQL과 연결합니다.
    • PostgreSQL ODBC 드라이버가 필요합니다.

간단히 말하면:

  1. PostgreSQL용 ODBC 드라이버를 설치.
  2. Oracle 서버에서 ODBC 연결을 구성.
  3. Oracle에서 Heterogeneous Services를 통해 DB 링크 생성 및 사용.

2. 구현 단계

1) PostgreSQL용 ODBC 드라이버 설치

ODBC(Open Database Connectivity)는 PostgreSQL과 Oracle 간의 다리를 놓는 도구입니다.

(1) 드라이버 다운로드

(2) 설치

구성 옵션은 기본값으로 두고 설치를 진행합니다.

 

728x90

2) ODBC 데이터 소스 설정

Windows의 경우 ODBC 데이터 소스를 설정해야 합니다.

(1) ODBC 데이터 소스 관리자 실행

  • 64비트 관리자: C:\Windows\System32\odbcad32.exe
  • 32비트 관리자: C:\Windows\SysWOW64\odbcad32.exe

(2) 데이터 소스 추가

  1. "추가(Add)" 버튼 클릭.
  2. PostgreSQL용 ODBC 드라이버 선택.
  3. PostgreSQL서버 정보 입력:
    • 데이터 소스 이름(DSN): pg_dsn (임의로 지정 가능)
    • 서버 이름: PostgreSQL 서버의 IP 주소 (예: 192.168.1.100)
    • 데이터베이스 이름: PostgreSQL의 DB 이름
    • 사용자 이름: PostgreSQL 사용자 이름
    • 비밀번호: 데이터베이스 비밀번호
    • 포트 번호: PostgreSQL의 포트 (기본값: 5432)
    설정 후, "Test Connection" 버튼으로 연결 성공 여부 확인.

3) Oracle Gateway 구성

PostgreSQL과 연결하기 위해 Oracle의 Heterogeneous Services를 사용하여 ODBC를 지원합니다.

(1) hs_odbc 초기화 파일 생성

Oracle 서버의 $ORACLE_HOME/hs/admin 디렉터리에 초기화 파일을 생성합니다.

  • 파일 이름: initpg_dsn.ora
  • 파일 내용:
    • HS_FDS_CONNECT_INFO: ODBC DSN 이름과 동일해야 합니다 (위에서 설정한 pg_dsn).
  • HS_FDS_CONNECT_INFO = pg_dsn HS_FDS_TRACE_LEVEL = OFF

4) Oracle Listener 설정

PostgreSQL에 대한 listener 서비스를 추가해야 합니다.

(1) listener.ora 파일 수정

Oracle Listener 구성 파일 ($ORACLE_HOME/network/admin/listener.ora)에 PostgreSQL을 위한 항목을 추가합니다.

SID_LIST_LISTENER =
  (SID_LIST =
      (SID_DESC =
         (SID_NAME = pg_dsn)
         (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
         (PROGRAM = hsodbc)
      )
  )
 
  • SID_NAME: PostgreSQL에 대한 별칭(예: pg_dsn) → init<SID_NAME>.ora와 동일해야 함.
  • PROGRAM = hsodbc는 ODBC를 통해 heterogeneous 서비스를 사용함을 나타냅니다.

(2) Listener 재시작

lsnrctl stop
lsnrctl start
 

5) Oracle Net 서비스 이름(TNSNAMES) 등록

Oracle의 TNSNAMES 파일($ORACLE_HOME/network/admin/tnsnames.ora)에 원격 데이터베이스(PostgreSQL)를 위한 항목을 추가합니다.

pg_dsn =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA = (SID = pg_dsn))
    (HS=OK)
  )
 
  • HS=OK는 Heterogeneous Services를 사용하겠다는 설정.

6) Oracle DB 링크 생성

이제 PostgreSQL과 통신할 DB 링크를 오라클에 생성합니다.

CREATE DATABASE LINK pg_link
CONNECT TO "postgres_user" IDENTIFIED BY "postgres_password"
USING 'pg_dsn';
 
  • USING 'pg_dsn': TNSNAMES에 정의된 이름(위에서 추가한 pg_dsn).

7) DB 링크 테스트

PostgreSQL 데이터베이스에 연결하고 데이터를 조회해봅니다.

SELECT * FROM some_table@pg_link;
 
  • 이제 PostgreSQL 테이블이 Oracle에서 마치 로컬 테이블처럼 동작합니다.

3. 주의사항

  1. 성능 고려:
    • Oracle에서 PostgreSQL 데이터를 조회할 때 네트워크 및 ODBC 변환 비용이 발생하므로 대량 데이터 처리 시 성능 이슈가 있을 수 있습니다.
    • 가능한 한 원격 DB에서 데이터를 미리 필터링(예: WHERE 조건)하여 가져오는 것이 좋습니다.
  2. PostgreSQL 드라이버 버전:
    • 사용하는 PostgreSQL 버전과 ODBC 드라이버가 호환되는지 확인하세요.
  3. 권한 관리:
    • PostgreSQL 사용자에게 오라클이 접근하려는 테이블에 대한 적절한 권한(SELECT, INSERT 등)을 부여해야 합니다.
  4. Heterogeneous Services 라이센스:
    • Oracle Heterogeneous Services는 별도의 라이센스가 필요할 수 있으니, Oracle 지원팀에 확인하시기 바랍니다.

728x90

Oracle의 DB 링크를 통해 PostgreSQL과 연결하려면:

  1. PostgreSQL용 ODBC 드라이버를 설치하고 구성.
  2. Heterogeneous Services와 Oracle Listener를 설정.
  3. DB 링크 구성 및 테스트.
728x90
728x90