database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 1791 게시물 읽기
No. 1791
[질문]SQL Server와 Oracle간 OpenQuery실행시 오류
작성자
궁그미
작성일
2005-02-22 10:38ⓒ
2005-02-22 10:48ⓜ
조회수
11,089

안녕하세요?

SQL Server 가 설치된 Server에서 Oracle DB의 자료를 OpenQuery를 통해서 가져오려고 합니다.
그래서, addlinkedserver를 시켜주는 과정에서 아래와 같은 오류가 뜹니다.
원인이 무엇인지 ㅠ.ㅠ
고수님들의 의견 부탁드립니다. 고맙습니다.

[작업환경]
Source : SQL Server 2000, Oracle for Client 8.1

=> sql-plus에서는 정상적으로 접속됩니다.
Destination : Oracle 8.1.5

[작업수행과정]
1. server 생성
EXEC sp_addlinkedserver
@server = 'dper',
@srvproduct = 'Oracle 8.1.5',
@provider = 'MSDAORA',
@datasrc = 'dper'

2. SQL Server와 Link시켜준다
EXEC sp_addlinkedsrvlogin 'dper', 'false', 'sa', 'scott', 'tiger'

3. 정상적으로 server 등록되었는지 확인한다 => 정상적으로 등록되었다고 뜨네요.
sp_helpserver

 

4. OpenQuery 실행시 에러메세지가 뜹니다.

SELECT * FROM OPENQUERY(dper, 'SELECT * FROM table')

[에러메세지]
OLE DB 공급자 'MSDAORA'이(가) 오류를 보고했습니다.
[OLE/DB provider returned message: Oracle client and networking components were not found. These
components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 or later client software
installation.

Provider is unable to function until these components are installed.]
OLE DB 오류 추적 [OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80004005: ].

이 글에 대한 댓글이 총 3건 있습니다.

os : windows 2000, windows2003

dbms : mssql2000

oracle : oracle8, oracle 9

테스트 환경은 위와 같습니다.

 

저는 다이렉트로 접속을 하려고 하니 에러가 나서

oracle ODBC를 통해 접속을 했습니다.

 

EXEC sp_addlinkedserver
   'ora',  --linkServername
   '',
   'MSDAORA.1', --provider
   NULL,
   NULL,
   'DRIVER={Oracle ODBC Driver};SERVER=localoracle;UID=scott;PWD=tiger;'

-- server : odbc dsn

-- Uid / pwd : 계정

 

위는 링크 서버를 추가하는 과정입니다.

odbc의 설정은 적지 않았습니다.

 


EXEC sp_addlinkedsrvlogin 'ora', 'false', NULL, 'scott', 'tiger'

--링크 서버에 로그인

 

이 두과정을 마쳤다면 실행하시는 것은 openQuery를 쓰셔도 되지만

오히려 그것보다는 이게 더 낫지 않을까 싶습니다.

select 의 명령 구조는 아래와 같습니다.

 

Select [col_name] From [ServerName].[Database_name].[Dbo_name].[table_name]

이렇습니다.

흔히들 명령을 내릴때는

select col_name from table_name 으로 바로 씁니다.

이는 mssql에서는 server로긴과 동시 servername, database_name, dbo_name이 결정되었기 때문입니다.

 

그런데 RemoteServer에서는 다른 문제가 발생하게 되었습니다.

우선 Servername이 다르게 되고 DBO_name이 다르고 등등..

Oracle에서는 Database가 없고 스키마(mssql에서는 DBO)가 있으므로

이렇게 명령을 써보세요

 

Select * From ora..SCOTT.EMP

 

주의하실 점은 스키마와 Table name은 대소문자를 구분하는 것입니다.

참고로 아래는 그렇게 하여 나온 결과를 텍스트로 잡았습니다.

EMPNO  ENAME      JOB       MGR    HIREDATE                                               SAL       COMM      DEPTNO
------ ---------- --------- ------ ------------------------------------------------------ --------- --------- ------
7369   SMITH      CLERK     7902   1980-12-17 00:00:00.000                                800.00    NULL      20
7499   ALLEN      SALESMAN  7698   1981-02-20 00:00:00.000                                1600.00   300.00    30
7521   WARD       SALESMAN  7698   1981-02-22 00:00:00.000                                1250.00   500.00    30
7566   JONES      MANAGER   7839   1981-04-02 00:00:00.000                                2975.00   NULL      20
7654   MARTIN     SALESMAN  7698   1981-09-28 00:00:00.000                                1250.00   1400.00   30
7698   BLAKE      MANAGER   7839   1981-05-01 00:00:00.000                                2850.00   NULL      30
7782   CLARK      MANAGER   7839   1981-06-09 00:00:00.000                                2450.00   NULL      10
7788   SCOTT      ANALYST   7566   1987-04-19 00:00:00.000                                3000.00   NULL      20
7839   KING       PRESIDENT NULL   1981-11-17 00:00:00.000                                5000.00   NULL      10
7844   TURNER     SALESMAN  7698   1981-09-08 00:00:00.000                                1500.00   .00       30
7876   ADAMS      CLERK     7788   1987-05-23 00:00:00.000                                1100.00   NULL      20
7900   JAMES      CLERK     7698   1981-12-03 00:00:00.000                                950.00    NULL      30
7902   FORD       ANALYST   7566   1981-12-03 00:00:00.000                                3000.00   NULL      20
7934   MILLER     CLERK     7782   1982-01-23 00:00:00.000                                1300.00   NULL      10

(14개 행 적용됨)

 

 

여리님이 2005-02-22 12:58에 작성한 댓글입니다. Edit

답글 정말 감사드립니다.

그런데, 님이 알려주시는 대로 했는데, 아래와 같은 오류가 또 뜨네요.

DB 셋팅의 문제인지...ㅠ.ㅠ

다시한번 고견 부탁드리겠습니다. 고맙습니다.

 

1. server 생성
EXEC sp_addlinkedserver
   'dper',  --linkServername
   '',
   'MSDAORA.1', --provider
   NULL,
   NULL,
   'DRIVER={Oracle ODBC Driver};SERVER=dper;UID=scott;PWD=tiger;'
  
EXEC sp_addlinkedsrvlogin 'dper', 'false', NULL, 'scott', 'tiger'

 

SELECT * FROM dper..BOOKS.VW_TIMECARD

 

OLE DB 공급자 'MSDAORA.1'이(가) 오류를 보고했습니다. 
[OLE/DB provider returned message: ORA-12560: TNS:프로토콜 어댑터 오류
]
OLE DB 오류 추적 [OLE/DB Provider 'MSDAORA.1' IDBInitialize::Initialize returned 0x80004005:   ].

궁그미님이 2005-02-22 15:02에 작성한 댓글입니다. Edit

그렇습니까?

그럼 'MSDAORA.1'를 'MSDAORA' 로 고쳐 다시 해보세요.

그렇게 해도 되지 않으면 멀리 떨어져 있어 답을 하기가 힘이 드는 걸요 ^^

여리님이 2005-02-22 23:07에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1794mssql의 초기 사용자 계정이 뭐죠? [1]
초보
2005-02-23
4000
1793구분자로 잘라오기 [3]
석이
2005-02-22
3584
1792[질문] 유형/모듈 사이에 순환되는 종속성이 있습니다???
블루빈
2005-02-22
2943
1791[질문]SQL Server와 Oracle간 OpenQuery실행시 오류 [3]
궁그미
2005-02-22
11089
1790모든 컬럼이 공백이나 널인 로우 1개를 출력하는 쿼리는 어떻게 만들어야하지요 [1]
청년재벌
2005-02-22
2589
1789ms sql 2000 korean wow설치할떼요,,오류가나는데 [급해용.ㅠㅠ] [1]
전영진
2005-02-21
3484
1788stored procedure에서 에러가 발생합니다 도움 부탁드립니다 [2]
화사한봄날
2005-02-21
3104
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다