MsSQL에서 Oracle DB-Link걸기

1. 오라클 클라이언트 설치
http://www.oracle.com/technetwork/topics/winx64soft-089540.html
– 오라클 풀 패키지를 다운로드 받아서 클라이언트를 설치해도 되고, 클라이언트 패키지를 다운로드 받아서 클라이언트를 설치해도 됨
단 클라이언트 패키지에는 SQL Plus등이 없음
 

2. tnsnames.ora 파일복사

설치한 경로의 sample폴더에 있는 tnsnames.ora 파일을 복사하여 Admin 폴더 아래에 붙혀넣는다.
(예 c:\oracleexe/app/oracle/product/11.2.0/server/network/admin/sample/tnsnames.ora)
 

3. 연결정보 입력
– tnsnames.ora 파일에 연결정보를 입력 한다.

 

 *TNS명 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = *IP주소)(PORT = *포트번호))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = *DB명)
)
)

 

 

예) TNS명 : ISM / DBName : MMC / IP:222.222.222.222 / 포트번호: 1521

ISM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 222.222.222.222)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MMC )
)
)
 

 

4. Inprocess허용

링크드 서버를 등록할때 다음과 같은 에러 메시지가 나올것이다.

연결된 서버 “ISM시스템’에 대한 OLE DB공급자 “OraOLEDB.Oracle”의 인스턴스를 만들 수 없습니다.
(Microsoft SQL Server, 오류:7302)

해결방법 : Inprocess 허용을 해줘야 한다.

 

연결된 서버 > OraOLEDB.Oracle 의 속성창을 연다.

 

 

 

 

5. MSSQL에 링크드서버 등록

 

 

예) 위 예제 내용을 등록

 

 

 

6. 5번까지 했는데 링크드서버가 등록되지 않는다면 재부팅을 해야한다.

오라클 드라이버가 재부팅을 해야 적용되는 경우도 있다. (방화벽도 체크 해보시길)

 

쿼리

1. 오라클 계정의 테이블 조회

SELECT * FROM openquery(MANI, ‘SELECT EMP_NMK FROM TA_EMP_MAS WHERE EMP_NMK = ”김진만” ‘)   <-작은따옴표가 앞에 두개붙음

OR

SELECT *  FROM MANI..DSERP.TA_EMP_MAS WHERE EMP_NMK = ‘김진만’

 

2.오라클 계정의 테이블 CRUD

INSERT INTO OPENQUERY(MANI, ‘SELECT * FROM MANI2 WHERE 1=0’) SELECT MANI, MANI, MANI FROM MANI

OR

INSERT INTO MANI..DSERP.MANI2 SELECT MANI, MANI, MANI FROM MANI