상세 컨텐츠

본문 제목

HSODBC 를 이용하여 Oracle -> MSSQL 이기종 간에 DB Link

DataBase/Oracle

by 탑~! 2012. 9. 26. 13:29

본문

Oracle -> MSSQL 이기종 간에 DB Link로 연결하기 위해선 2가지 방법이 있습니다.

 


첫번째가

오라클에서 제공하는 [Transparent Gateway for MS SQL Server제품을 이용하는 건데,

오라클 Enterprise 버전의 별도 옵션이라 돈이 들어가네요.

 

 

두번째는

HSODBC(Heterogeneous Services open database connectivity)를 이용하는 건데,

NT(Win2000 이상)는 관련 ODBC 드라이버를 OS에서 기본적으로 지원하는데, UNIX(Linux, AIX, Solaris, HP-UX) 계열은

서드파티 업체에서 상용으로 판매하고 있네요.

<?xml:namespace prefix = o /> 

일단, HSODBC를 이용한 Oracle -> MSSQL 간의 DB Link를 테스트 하기 위해 
다음과 같이
 NT 환경에서 작업
을 진행하였습니다.

 

임시장비1 : Win XP + Oracle 10.2.0.4

임시장비2 : Win XP + MSSQL 2000

 



# HSODBC 
설정 방법

 

1. ODBC 설정

 오라클이 설치된 NT 장비에서 [제어판 [관리도구 [데이터원본(ODBC)] 메뉴 선택

 . ODBC 데이터 원본 관리자 창에서 [시스템 DSN] 탭메뉴 선택 후 추가 버튼 클릭

 새 데이터 원본 만들기 창에서 [SQL Server드라이버 선택

 SQL Server에 새로운 데이터 원본 만들기 창의 이름 항목에 ‘hsodbctest설명 항목은 생략
     
서버 항목에 임시장비2 IP 입력

 . Microsoft SQL Server DSN 구성 창에서 ‘사용자가 입력한 로그인 ID 및 암호를 사용하는 SQL Server 
     
인증 사용’에 체크 하고,
 하단의 ‘추가 구성 옵션의 기본 설정을 얻기 위해 SQL Server에 연결’에도 체크 후 
     ID 
및 암호 항목에 임시장비2에 설치된 
MSSQL DB의 계정 정보를 입력

 그 이후 단계는 디폴트로 진행

 

 

2. 오라클 HSODBC 설정

 . $oracle_home\network\admin\tnsnames.ora 파일 수정 (붉은색 부분 추가)


hsodbc =

      (DESCRIPTION=

        (ADDRESS=(PROTOCOL=tcp)

        (HOST=127.0.0.1)

        (PORT=1521))

        (CONNECT_DATA=(SID=hsodbc))

        (HS=OK)

      )

 

 . $oracle_home\network\admin\listener.ora 파일 수정 (기존 리스너 환경에 붉은색 부분만 추가)


SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)

      (PROGRAM = extproc)

    )

    (SID_DESC=

      (SID_NAME=hsodbc)

      (ORACLE_HOME=C:\oracle\product\10.2.0\db_1)

      (PROGRAM=hsodbc)

    )

  )

 

 . $oracle_home\hs\admin\inithsodbc.ora 파일 수정 (기존 parameter 항목에 붉은색 부분 반영)


HS_FDS_CONNECT_INFO = 
hsodbctest

HS_FDS_TRACE_LEVEL = off

 

 오라클 리스너 restart

  - cmd 창에서 lsnrctl 입력 후 stop -> start 명령어 입력

 

 

3. 오라클 DB Link 생성

 . cmd 창 또는 SQLPLUS 프로그램을 통해 오라클 DB 접속 (DBA 권한이 있는 계정으로 접속)

 다음과 같은 쿼리문으로 DB Link 생성 (ID/PW는 오라클 DB가 아닌 MSSQL DB의 계정의 ID/PW )


CREATE PUBLIC DATABASE LINK 
hsodbc

CONNECT TO <MSSQL-ID> IDENTIFIED BY <MSSQL-PW> USING 'hsodbc';

 

 

4. 검증

 오라클 DB 접속

 . DB Link를 통해 MSSQL DB 내 특정 객체(테이블/조회


select count(*) from 
테이블
@hsodbc;

 

 ===================================================================================================


Oracle 제품인 TG4MSQL (Transparent Gateway for MS SQL Server) 을 사용하려면 별도 라이센스 비용이 발생하므로, HSODBC(Heterogeneous Services open database connectivity) 를 이용하여 구성하고자 한다.
 
1. ODBC 설정
 오라클 DB 가 설치된 서버에서 [제어판] → [관리도구] → [데이터원본(ODBC)] → 시스템 DSN → 추가
 
 
 
 
 
 
 
 
 
2. Oracle DB 서버의 LISTENER 설정
 C:\oracle\product\10.2.0\db_1\network\ADMIN\tnsnames.ora 에 내용 추가
POVMSQL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1.5.117)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = POVMSQL)
    )
 (HS=OK)
  )
 C:\oracle\product\10.2.0\db_1\network\ADMIN\listener.ora 에 내용 추가
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = POVMSQL)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (PROGRAM = hsodbc)
    )
  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ORGADBTEST)(PORT = 1521))
    )
  )
 C:\oracle\product\10.2.0\db_1\hs\admin\inithsoledb.ora 를 이용하여 initPOVMSQL.ora 로 복사 후 내용 수정
HS_FDS_CONNECT_INFO = POVMSQL
HS_FDS_TRACE_LEVEL = off
4. DB LISTENER 서비스 재시작
 
5. DB LInk 생성
 SQL> create database link 링크명 connect to mdctest identified by mdctest using 'POVMSQL';
 
6. MS-SQL DB 의 테이블 조회
 SQLsqlplus * from AAA@링크명

관련글 더보기