프린트 하기

OS환경 : Oracle Linux 7.6, Windows Server 2012 (64bit)


DB 환경 : Oracle Database 12.1.0.2, SQL Server 2012


방법 : Windows Server 2012 에 SQL Server 2012에서 Oracle Linux 7.6 에 12c R1 db 링크

Windows Server 2012 에 SQL Server 2012에서 Oracle Linux 7.6 에 12c R1 db 링크를 연결하는 방법을 설명함



환경정보

Oracle Linux 7.6 + Oracle Database 12.1.0.2 서버 호스트명, IP : oel7, 192.168.137.50

Windows Server 2012 + SQL Server 2012 서버 호스트명, IP : WIN-P5KNTBRVB79, 192.168.137.12



접속 방법에 대해 간단하게 설명하자면 MS to Oracle 연결을 위해선 

Windows Server에 오라클 클라이언트를 설치하여

클라이언트의 tnsnames.ora 파일을 이용해 접속정보를 확인하고 

OraOLEDB.Oracle 공급자를 이용해 DB 링크를 만들어 오라클DB로 접속함



오라클 DB에 테스트 데이터 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
SQL> conn system/oracle
Connected.
SQL> create table test (c1 number);
 
Table created.
 
SQL> insert into test values (1);
 
1 row created.
 
SQL> commit;
 
Commit complete.



Windows Server에 오라클 클라이언트 다운로드

https://www.oracle.com/database/technologies/oracle-database-software-downloads.html



접속하려는 Oracle DB 버전 확인 후 Microsoft Windows x64 버전 - See All 선택



Oracle Database Client - Download



클라이언트 설치파일 압축 해제 후 setup 실행



원하는 클라이언트 유형 선택 후 다음




Windows 내장 계정 사용 선택 후 다음



클라이언트 설치 경로 지정 후 다음



설치



설치중



설치 완료 후 닫기



클라이언트 설치 경로로 이동

1
C:\app\client\Administrator\product\12.2.0\client_1\network\admin



tnsnames 텍스트 파일 생성



tnsnames 파일 수정 후 저장

1
2
3
4
5
6
7
8
ORACLE12 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.50)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORACLE12)
    )
  )

오라클 DB 서버 IP와 sid 입력



폴더상단 - 보기 - 파일 확장명 체크



tnsnames.txt에서 tnsnames.ora 로 확장자 변경



예 선택



cmd 실행



tnsping 시도

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\Users\Administrator>tnsping oracle12
 
TNS Ping Utility for 64-bit Windows: Version 12.2.0.1.0 - Production on 06-8월 -
2020 14:03:09
 
Copyright (c) 19972016, Oracle.  All rights reserved.
 
사용된 매개변수 파일:
C:\app\client\Administrator\product\12.2.0\client_1\network\admin\sqlnet.ora
 
 
별칭 분석을 위해 TNSNAMES 어댑터 사용
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.50)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORACLE12)))에 접속하려고 시
도하는 중
확인(10밀리초)
 

확인이 나오면 정상적으로 신호가 가는것



sqlplus 접속 테스트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
C:\Users\Administrator>sqlplus system/oracle@oracle12
 
SQL*Plus: Release 12.2.0.1.0 Production on 목 8월 6 14:04:36 2020
 
Copyright (c) 19822016, Oracle.  All rights reserved.
 
마지막 성공한 로그인 시간: 목 8월  06 2020 14:04:25 +09:00
 
다음에 접속됨:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing opt
ions
 
SQL> select instance_name, version, status from v$instance;
 
INSTANCE_NAME    VERSION           STATUS
---------------- ----------------- ------------
oracle12         12.1.0.2.0        OPEN

정상적으로 oracle db에 접속됨



SQL Server Management Studio 실행



서버에 접속



서버 개체 - 연결된 서버 - 공급자 - OraOLEDB.Oracle 이 있는지 확인 후 속성 선택



Inprocess 허용 체크 후 확인



서버 개체(우클릭) - 새로 만들기 - 연결된 서버 선택



일반 탭 - 연결된 서버에 DB 링크 이름 입력 - 기타 데이터 원본에 Oracle Provider for OLE DB 선택

제품 이름, 데이터 원본에 tnsnames.ora에 적은 tnsname 입력(ORACLE12)



보안 탭 - 다음 보안 컨텍스트를 사용하여 연결 선택 후 오라클 유저명, 패스워드 입력



서버 옵션 탭 - RPC, RPC 내보내기 모두 True로 설정 후 확인



연결된 서버에 ORA_LINK 가 만들어진것을 확인가능함



쿼리 입력 및 결과 확인

1
SELECT [C1] FROM [ORA_LINK]..[SYSTEM].[TEST];

정상적으로 결과가 나옴



쿼리 입력 및 결과 확인(오픈쿼리 이용)

1
SELECT * FROM OPENQUERY(ORA_LINK, 'SELECT * FROM system.test');

정상적으로 결과가 나옴



개체 탐색기에서 다른 테이블들도 확인 가능함




참조 : 

https://wishkjh.tistory.com/entry/ORACLE-MSSQL%EC%97%90%EC%84%9C-%EC%A0%91%EC%86%8D%ED%95%98%EA%B8%B0

https://jasmintime.com/322

https://positivemh.tistory.com/626