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 파일 수정 (붉은색 부분 추가)
(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 = (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_TRACE_LEVEL = off |
라. 오라클 리스너 restart
- cmd 창에서 lsnrctl 입력 후 stop -> start 명령어 입력
3. 오라클 DB Link 생성
가. cmd 창 또는 SQLPLUS 프로그램을 통해 오라클 DB 접속 (DBA 권한이 있는 계정으로 접속)
나. 다음과 같은 쿼리문으로 DB Link 생성 (ID/PW는 오라클 DB가 아닌 MSSQL DB의 계정의 ID/PW 임)
CONNECT TO <MSSQL-ID> IDENTIFIED BY <MSSQL-PW> USING 'hsodbc'; |
4. 검증
가. 오라클 DB 접속
나. DB Link를 통해 MSSQL DB 내 특정 객체(테이블/뷰) 조회
|
===================================================================================================
오라클 DB 가 설치된 서버에서 [제어판] → [관리도구] → [데이터원본(ODBC)] → 시스템 DSN → 추가
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.1.5.117)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = POVMSQL)
)
(HS=OK)
)
(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)
)
)
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ORGADBTEST)(PORT = 1521))
)
)
HS_FDS_TRACE_LEVEL = off
Tablespace 및 User 생성 (0) | 2013.03.18 |
---|---|
오라클 열(컬럼)을 행(로우)으로 변경하는 쿼리 (0) | 2012.12.27 |
Oracle 사고친 유저 찾아보자 (0) | 2012.08.23 |
오라클 달력과 관련해서... (0) | 2012.08.23 |
오라클 연단위 달력 쿼리 (0) | 2012.08.23 |