SQL Server에서 Oracle에 연결된 서버 설정 및 문제 해결 방법

기술 자료 번역 기술 자료 번역
기술 자료: 280106
중요 이 문서에서는 레지스트리 수정 방법을 설명합니다. 레지스트리를 수정하기 전에 레지스트리를 백업하는 것이 좋습니다. 문제가 발생하는 경우 레지스트리를 복원하는 방법을 알고 있어야 합니다. 레지스트리 백업, 복원 및 수정 방법은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
256986 Microsoft Windows 레지스트리 설명
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Microsoft SQL Server를 실행 중인 컴퓨터에서 Oracle 데이터베이스에 연결된 서버를 설정하는 방법을 단계별로 설명하고 Oracle에 연결된 서버를 설정할 때 발생할 수 있는 일반 오류의 기본적인 해결 방법에 대해서도 설명합니다.

Oracle에 연결된 서버를 설정하는 단계

  1. 연결된 서버가 설정되는 SQL Server 컴퓨터에 Oracle 클라이언트 소프트웨어를 설치해야 합니다.
  2. SQL Server 컴퓨터에 원하는 드라이버를 설치합니다. Microsoft는 Oracle용 Microsoft OLE DB 공급자와 Oracle용 Microsoft ODBC 드라이버만 지원합니다. 타사 공급자나 타사 드라이버를 사용하여 Oracle에 연결하는 경우 공급자나 드라이버를 사용하여 발생할 수 있는 문제에 대해서는 각 공급업체에 문의해야 합니다.
  3. Oracle용 Microsoft OLE DB 공급자와 Oracle용 Microsoft ODBC 드라이버를 사용하는 경우 다음 사항을 고려해야 합니다.
    • Microsoft Data Access Components(MDAC)와 함께 제공되는 ODBC 드라이버와 OLE DB 공급자를 모두 사용하려면 SQL*Net 2.3.x 이상이 있어야 합니다. 클라이언트 컴퓨터에 Oracle 7.3.x 이상의 클라이언트 소프트웨어를 설치해야 합니다 클라이언트 컴퓨터는 SQL Server 컴퓨터입니다.
    • MDAC 2.5 이상이 SQL Server 컴퓨터에 설치되어 있어야 합니다. MDAC 2.1 이하가 설치되어 있으면 Oracle 8.x 이상을 사용하는 데이터베이스에 연결할 수 없습니다.
    • Oracle 클라이언트 소프트웨어에서 작동하도록 MDAC 2.5 이상을 설정하려면 SQL Server를 실행하는 클라이언트 컴퓨터의 레지스트리를 다음 표에 표시된 대로 수정해야 합니다.
                 Microsoft Windows NT,
      Oracle     Microsoft Windows 95,
      클라이언트   Windows 98 및 Windows 98 SE    Microsoft Windows 2000 
      --------------------------------------------------------------------------
      
      7.x        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE  
                 \Microsoft\TransactionServer     Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="xa73.dll"
                 "OracleXaLib"="xa73.dll"         "OracleSqlLib"="SQLLib18.dll"
                 "OracleSqlLib"="SQLLib18.dll"    "OracleOciLib"="ociw32.dll"
                 "OracleOciLib"="ociw32.dll"   
      
      8.0        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE
                 \Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="xa80.dll"
                 "OracleXaLib"="xa80.dll"         "OracleSqlLib"="sqllib80.dll" 
                 "OracleSqlLib"="sqllib80.dll"    "OracleOciLib"="oci.dll"
                 "OracleOciLib"="oci.dll" 
      
      8.1        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE
                 \Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="oraclient8.dll" 
                 "OracleXaLib"="oraclient8.dll"   "OracleSqlLib"="orasql8.dll"  
                 "OracleSqlLib"="orasql8.dll"     "OracleOciLib"="oci.dll"
                 "OracleOciLib"="oci.dll"
  4. Oracle 클라이언트 소프트웨어를 설치한 후 SQL Server 컴퓨터를 다시 시작합니다.
  5. SQL Server 컴퓨터에서 다음 스크립트를 사용하여 연결된 서버를 설정합니다.
    -- Adding linked server (from SQL Server Books Online):
    /* sp_addlinkedserver [@server =] 'server' 
        [, [@srvproduct =] 'product_name']
        [, [@provider =] 'provider_name'] 
        [, [@datasrc =] 'data_source'] 
        [, [@location =] 'location'] [, [@provstr =] 'provider_string'] 
        [, [@catalog =] 'catalog']
    */ 
    
    EXEC sp_addlinkedserver   'Ora817Link',  'Oracle',  'MSDAORA',  'oracle817'
    
    -- Adding linked server login:
    /* sp_addlinkedsrvlogin [@rmtsrvname =] 'rmtsrvname'
        [,[@useself =] 'useself']
        [,[@locallogin =] 'locallogin']
        [,[@rmtuser =] 'rmtuser']
        [,[@rmtpassword =] 'rmtpassword']
    */ 
    
    EXEC sp_addlinkedsrvlogin 'Ora817Link', 'FALSE',NULL, 'scott', 'tiger'
    
    -- Help on the linked server:
    EXEC sp_linkedservers
    EXEC sp_helpserver
    select * from sysservers
참고 Oracle용 Microsoft ODBC 드라이버를 사용하는 경우 @datasrc 매개 변수를 사용하여 DSN 이름을 지정할 수 있습니다. DSN을 사용하지 않는 연결의 경우 공급자 문자열이 @provstr 매개 변수를 통해 제공됩니다. Oracle용 Microsoft OLE DB 공급자를 사용하는 경우에는 @datasrc 매개 변수에 대해 TNSNames.Ora 파일에 구성된 Oracle 서버 별칭을 사용하십시오. 자세한 내용은 SQL Server 온라인 설명서의 "sp_addlinkedserver" 항목을 참조하십시오.

일반 오류 메시지 및 해결 방법

경고 레지스트리 편집기나 다른 방법을 사용하여 레지스트리를 잘못 수정하는 경우 심각한 문제가 발생할 수 있습니다. 이 문제를 해결하려면 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 이러한 문제에 대해 해결을 보증하지 않습니다. 레지스트리의 수정에 따른 모든 책임은 사용자에게 있습니다.

다음 두 가지 방법 중 하나를 사용하여 분산 쿼리를 실행할 때 발생하는 오류에 대한 자세한 정보를 검색할 수 있습니다.
  • 방법 1
    쿼리 분석기에서 다음 코드를 실행하여 추적 플래그 7300을 설정합니다.
    DBCC Traceon(7300)
  • 방법 2
    SQL 프로필러에서 "오류 및 경고" 이벤트 범주에 표시되는 "OLEDB 오류" 이벤트를 캡처합니다. 오류 메시지 형식은 다음과 같습니다.
    Interface::Method failed with hex-error code.
    MDAC Software Development Kit(SDK)와 함께 제공되는 Oledberr.h 파일에서 16진수 오류 코드를 검색할 수 있습니다.
다음은 10개의 일반 오류 메시지와 이러한 문제를 해결하는 방법에 대한 정보를 보여 주는 목록입니다.

참고 성능 관련 문제에 대한 내용을 보려면 SQL Server 온라인 설명서에서 "분산 쿼리 최적화" 항목을 검색하십시오.
  • 메시지 1
    오류 7399: OLE DB 공급자 '%ls'이(가) 오류를 보고했습니다. %ls
    추적 플래그 7300을 설정하거나 SQL 프로필러를 통해 "OLEDB 오류" 이벤트를 캡처하여 자세한 OLEDB 오류 정보를 검색하십시오.
  • 메시지 2a
    "ORA-12154: TNS:could not resolve service name."
    메시지 2b
    "Oracle(tm) 클라이언트 및 네트워킹 구성 요소를 찾을 수 없습니다. 이 구성 요소는 Oracle에서 제공하며 Oracle 버전 7.3.3(또는 그 이상) 클라이언트 소프트웨어 설치에 포함됩니다.
    Oracle 연결 문제를 해결하는 방법은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    259959 INFO: ODBC 드라이버 및 OLE DB 공급자를 사용하여 Oracle 서버에 대한 연결 문제를 디버깅하는 방법
  • 메시지 3
    오류 7302: OLE DB 공급자 'MSDAORA'의 인스턴스를 만들 수 없습니다.
    MSDAORA.dll 파일이 제대로 등록되어 있는지 확인합니다. MSDAORA.dll 파일은 Oracle용 Microsoft OLE DB 공급자 파일입니다. RegSvr32.exe를 사용하여 Oracle용 Microsoft OLE DB 공급자를 등록합니다. 등록이 실패하면 Microsoft Data Access Components(MDAC)를 다시 설치합니다. MDAC에 대한 자세한 내용을 보려면 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하십시오.
    http://msdn.microsoft.com/data/Default.aspx
    참고 타사 Oracle 공급자를 사용하는 경우 SQL Server 프로세스 외부에서 해당 Oracle 공급자를 실행할 수 없으면 공급자 옵션을 변경하여 프로세스 내부에서 실행될 수 있도록 설정합니다. 공급자 옵션을 변경하려면 다음 방법 중 하나를 사용하십시오.
    • 방법 1
      아래 레지스트리 키를 찾습니다. 그런 다음 AllowInProcess (DWORD) 항목의 값을 1로 변경합니다. 이 레지스트리 키는 해당 공급자 이름 아래에 있습니다.
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
    • 방법 2
      새로운 연결된 서버를 추가할 때 SQL Server 엔터프라이즈 관리자를 통해 직접 InProcess 허용 옵션을 설정합니다. 공급자 옵션을 누른 다음 InProcess 허용 확인란을 눌러 선택합니다.
  • 메시지 4
    오류 7303: OLE DB 공급자 'MSDAORA'의 데이터 원본 개체를 초기화할 수 없습니다. [OLE/DB provider returned message: ORA-01017: invalid username/password; logon denied] OLE DB 오류 추적 [OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80040e4d].
    이 오류 메시지는 연결된 서버에 정확한 로그인 매핑이 없음을 나타냅니다. sp_helplinkedsrvlogin 저장 프로시저를 실행하여 로그인 정보를 제대로 설정할 수 있습니다. 또한 연결된 서버 구성에 대해 정확한 매개 변수를 지정했는지 확인하십시오.
  • 메시지 5
    오류 7306: OLE DB 공급자 'MSDAORA'에서 ' %ls' 테이블을 열 수 없습니다. 지정한 테이블이 없습니다. [OLE/DB provider returned message: Table does not exist.][OLE/DB provider returned message: ORA-00942: table or view does not exist] OLE DB 오류 추적 [OLE/DB Provider 'MSDAORA' IOpenRowset::OpenRowset returned 0x80040e37: The specified table does not exist.].
    오류 7312: OLE DB 공급자 '%ls'의 스키마 및/또는 카탈로그 사용이 잘못되었습니다. 네 부분으로 된 이름을 제공했지만 공급자가 카탈로그 및/또는 스키마를 사용하는 데 필요한 인터페이스를 표시하지 않습니다.
    오류 7313: '%ls' 공급자에 지정한 스키마나 카탈로그가 잘못되었습니다.
    오류 7314: OLE DB 공급자 '%ls'에 '%ls' 테이블이 없습니다.
    이러한 오류 메시지가 나타나면 Oracle 스키마에 테이블이 없거나 해당 테이블에 대한 사용 권한이 없을 수 있습니다. 대문자를 사용하여 스키마 이름을 입력했는지 확인합니다. 테이블과 열의 대/소문자는 Oracle 시스템 테이블에 지정된 것과 같아야 합니다.

    Oracle 쪽에서 큰따옴표 없이 생성된 테이블이나 열은 대문자로 저장됩니다. 큰따옴표로 묶인 테이블이나 열은 있는 그대로 저장됩니다.

    다음 호출은 Oracle 스키마에 테이블이 있는지 보여 주며 정확한 테이블 이름도 보여 줍니다.
    sp_tables_ex  @table_server=Ora817Link, @table_schema='your_schema_name'
    오류 메시지 7306에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    240340 Oracle을 사용한 SQL 분산 쿼리로 인해 "테이블을 열 수 없습니다." 오류가 발생한다
  • 메시지 6
    오류 7413: 위임을 사용할 수 없으므로 Windows NT 인증 로그인을 수행할 수 없습니다.
    메시지 18456, 수준 14, 상태 1, 줄 1 '\' 사용자의 로그인이 실패했습니다.
    다음은 SQL Server 온라인 설명서에 있는 정보입니다.
    이 오류 메시지는 명시적인 로그인 매핑 없이 Microsoft Windows에서 인증된 로그인에 대해 분산 쿼리를 실행했음을 표시합니다. 보안 위임이 지원되지 않는 운영 체제 환경에서는 Windows NT에서 인증된 로그인에 sp_addlinkedsrvlogin을 사용하여 만든 원격 로그인 및 암호에 대한 명시적인 매핑이 필요합니다.
  • 메시지 7
    오류 7354: OLE DB 공급자 'MSDAORA'이(가) '%ls' 열에 대해 잘못된 메타데이터를 제공했습니다. 데이터 형식이 지원되지 않습니다.
    이 오류 메시지가 나타나면 Microsoft 기술 자료의 다음 문서에서 설명하는 버그가 발생한 것일 수 있습니다.
    243027 FIX: Oracle의 숫자 열로 인해 오류 7354가 발생한다
  • 메시지 8
    오류 7356: OLE DB 공급자 'MSDAORA'이(가) 열에 대해 일관성 없는 메타데이터를 제공했습니다. 런타임 시 메타데이터 정보가 변경되었습니다.
    연결된 서버 쿼리에서 Oracle 보기를 사용하면 Microsoft 기술 자료의 다음 문서에서 설명하는 문제가 발생한 것일 수 있습니다.
    251238 PRB: 분산 쿼리가 MSDAORA에서 오류 7356을 반환한다
  • 메시지 9
    오류 7391: OLE/DB 공급자 'MSDAORA'이(가) 분산 트랜잭션을 지원하지 않으므로 작업을 수행할 수 없습니다. OLE DB 오류 추적 [OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]
    OCI 버전이 이 문서의 앞부분에서 설명한 대로 제대로 등록되어 있는지 확인합니다.

    참고 레지스트리 항목이 모두 올바르면 MtxOCI.dll 파일이 로드됩니다. MtxOCI.dll 파일이 로드되지 않으면 Oracle용 Microsoft OLE DB 공급자나 Oracle용 Microsoft ODBC 드라이버를 사용하여 Oracle에 대한 분산 트랜잭션을 수행할 수 없습니다. 타사 공급자를 사용하고 있는 경우 오류 7391이 발생하면 사용하고 있는 OLE DB 공급자가 분산 트랜잭션을 지원하는지 확인하십시오. OLE DB 공급자가 분산 트랜잭션을 지원하지 않으면 Microsoft Distributed Transaction Coordinator(MSDTC)가 실행 중인지 확인하십시오.
  • 메시지 10
    오류 7392: OLE DB 공급자 'MSDAORA'의 트랜잭션을 시작할 수 없습니다. OLE DB 오류 추적 [OLE/DB Provider 'MSDAORA' ITransactionLocal::StartTransaction returned 0x8004d013: ISOLEVEL=4096].
    다음은 SQL Server 온라인 설명서에 있는 정보입니다.
    이 세션에 대해서는 단 하나의 트랜잭션만 활성화할 수 있으므로 OLE DB 공급자가 오류 7392를 반환합니다. 이 오류는 연결이 명시적 또는 암시적 트랜잭션에 있는 경우에 OLE DB 공급자에 대해 데이터 수정 문을 시도했다는 것과 OLE DB 공급자가 중첩된 트랜잭션을 지원하지 않는다는 것을 표시합니다. SQL Server는 특정 오류 조건에서 이 지원이 필요하므로 트랜잭션을 계속하는 반면 데이터 수정 문의 영향을 종료합니다.
    SET XACT_ABORT가 ON인 경우에는 SQL Server가 OLE DB 공급자에게 중첩 트랜잭션 지원을 요구하지 않습니다. 따라서 암시적 또는 명시적 트랜잭션에서 원격 테이블에 대해 데이터 수정 문을 실행하기 전에 SET XACT_ABORT ON을 실행하십시오. 사용하고 있는 OLE DB 공급자가 중첩 트랜잭션을 지원하지 않는 경우에 이렇게 하십시오.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
244661 INFO: Microsoft Oracle ODBC 드라이버 및 OLE DB 공급자의 제한 사항
259959 INFO: ODBC 드라이버 및 OLE DB 공급자를 사용하여 Oracle 서버에 대한 연결 문제를 디버깅하는 방법
239719 INFO: Oracle 8.x에서의 Oracle용 Microsoft ODBC 드라이버/OLE DB 공급자의 지원 가능성
193893 Microsoft Transaction Server 및 COM+ 구성 요소에서의 Oracle 사용에 관한 정보
191168 INFO: 오류 "-2147168246 (8004d00a)" Failed to Enlist on Calling Object's Transaction
DB2에서 연결된 서버를 사용하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
218590 INF: Microsoft OLE DB Provider for DB2에 대한 데이터 원본 구성
216428 Microsoft ODBC Driver for DB2 구성




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 280106 - 마지막 검토: 2011년 2월 15일 화요일 - 수정: 7.3
키워드:?
kbsqlmanagementtools kbhowtomaster KB280106

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com