네이버든 구글이든 Oracle에서 MS-SQL DB Link 생성하기는 Oracle 10g를 기준으로 작성된게 거의 대부분 입니다.
간단히 될줄 알았던게 다음과 같은 에러를 발생 시키더군여..
********************************************************************* Link : "SRCMSSQL" Error : ORA-28545: 에이전트에 접속할 때 Net8에 의해 진단된 오류 Unable to retrieve text of NETWORK/NCR message 65535 ORA-02063: 2 lines가 선행됨 (SRCMSSQL로 부터) ********************************************************************* |
10g랑 11g랑 설정에 크게 다른점은 없습니다.
딱 한군데 다른 포인트가 있는데 우선 처음부터 끝까지 설명하도록 하겠습니다.
1. ODBC 생성
제어판 > 관리도구 > 데이터 원본(ODBC) 를 실행후 시스템 DSN탭을 누르고 '추가' 버튼을 클릭합니다.
MS-SQL과 연결하기 때문에 SQL Server를 선택후 '마침' 클릭
이름에 쓰이는 항목이 실제로 Oracle을 세팅할때 연결되는 이름임으로 설정하고 기억해 두셔야 합니다.
서버는 Oracle과 MS-SQL이 같은 서버에 있어서 localhost라고 정의했습니다.
계정고 암호를 입력합니다.
DB Link가 접속했을때 어떤 DataBase와 연결할지 선택한후 다음을 클릭한다.
마침 클릭
데이터 원본 테스크 클릭
위와 같이 나오면 ODBC생성을 끝
2. Oracle에 TNSName과 Listener설정
#ORACLE_HOME#/NETWORK/ADMIN/tnsnames.ora
SRCMSSQL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SID = SRCMSSQL) ) (HS=OK) ) |
아까 위에서 ODBC를 생성할때 이름이 빨간부분으로 표시된 내용입니다.
사실 모두다 똑같이 맞출 필요는 없는데 실수를 범하지 않기 위해 우선 통일합니다.
#ORACLE_HOME#/NETWORK/ADMIN/listener.ora
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = SRCMSSQL) (ORACLE_HOME = C:\app\catchbug\product\11.2.0\dbhome_1) (PROGRAM = dg4odbc) ) ) ) |
위에 적어놓은 에러가 발생해서 이 글을 보시는 분들은 저기 dg4odbc를 유심히 보십시요.
10g에서는 hsodbc 였지만 11g는 dg4odbc 로 변경 되었다는 글을 보았습니다.
물론 영어로 써진 말이라 다 이해는 못했지만 서비스 체인지 정도 써있는거 보면 tool이 변경된듯 합니다.
반영하려는 Oracle버전이 10g라면 hsodbc 로 작성하시고, 11g면 dg4odbc 로 작성하시면 됩니다.
#ORACLE_HOME#/hs/admin/initSRCMSSQL.ora 생성
# This is a sample agent init file that contains the HS parameters that are # needed for the Database Gateway for ODBC # # HS init parameters # HS_FDS_CONNECT_INFO = SRCMSSQL HS_FDS_TRACE_LEVEL = 1 HS_DB_DOMAIN = SRCMSSQL HS_DB_NAME = SRCMSSQL # # Environment variables required for the non-Oracle system # #set <envvar>=<value> |
여기까지 세팅이 끝났으면 리스터를 재기동 해줍니다.
C:\Windows\system32>lsnrctl stop LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 03-6월 -2011 13:2 4:04 Copyright (c) 1991, 2010, Oracle. All rights reserved. (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))에 연결되었습니다 명령이 성공적으로 수행되었습니다 C:\Windows\system32>lsnrctl start LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 03-6월 -2011 13:2 4:07 Copyright (c) 1991, 2010, Oracle. All rights reserved. 시작 tnslsnr: 잠시만 기다리세요... TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production 시스템 매개변수 파일은 C:\app\catchbug\product\11.2.0\dbhome_1\network\admin\li stener.ora 입니다 c:\app\catchbug\diag\tnslsnr\Hyper2-DB\listener\alert\log.xml (으)로 로그 메시 지를 기록했습니다 리스닝이: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Hyper2-DB)(PORT=1521))) (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))에 연결되었습니다 리스너의 상태 ------------------------ 별칭 LISTENER 버전 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produc tion 시작 날짜 03-6월 -2011 13:24:11 업타임 0 일 0 시간. 0 분. 3 초 트레이스 수준 off 보안 ON: Local OS Authentication SNMP OFF리스너 매개변수 파일 C:\app\catchbug\product\11.2 .0\dbhome_1\network\admin\listener.ora 리스너 로그 파일 c:\app\catchbug\diag\tnslsnr\Hyper2-DB\listener\alert\ log.xml 끝점 요약 청취 중... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Hyper2-DB)(PORT=1521))) 서비스 요약... "SRCMSSQL" 서비스는 1개의 인스턴스를 가집니다. "SRCMSSQL" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다. 명령이 성공적으로 수행되었습니다 |
이제 마지막입니다.
DB Link를 생성해서 잘 되는지 테스트합니다.
CREATE PUBLIC DATABASE LINK SRCMSSQL CONNECT TO SA IDENTIFIED BY <PWD> USING 'SRCMSSQL'; |
DB Link까지 생성 완료 되었다면, 이제 select 쿼리를 실행해서 결과가 나오는지 확인합니다.
SELECT * FROM 테이블명@SRCMSSQL |
출처 - https://m.blog.naver.com/catchbug/20129778270
'DB > Oracle' 카테고리의 다른 글
[Oracle] DBeaver설치경로 및 설명 (0) | 2023.02.09 |
---|---|
[Oracle] MOD 및 초를 분으로 변경 (0) | 2022.09.07 |
[Oracle] Oracle 11g 설치 방법 (0) | 2022.08.24 |
[Oracle] 패스워드 만료 확인 및 만료일 삭제 방법 (0) | 2022.08.24 |
[Oracle] Import, Export 방법 (0) | 2022.08.24 |