OLE DB용 Oracle 공급자

업데이트: 2006년 4월 14일

Oracle Provider for OLE DB(8.1.7.3.0)에서는 Oracle 데이터베이스의 데이터에 대해 분산 쿼리를 수행할 수 있습니다. Oracle Provider for OLE DB는 다음과 같이 지원됩니다.

Oracle 32비트

Out-of-proc에만 해당

Oracle 64비트

없음

Oracle 데이터베이스 인스턴스를 액세스하기 위해 연결된 서버를 만들려면

  1. Microsoft SQL Server를 실행하는 서버의 Oracle 클라이언트 소프트웨어가 공급자에 필요한 수준이 되도록 합니다. Oracle Provider for OLE DB(8.1.7.3.0)에는 Oracle Client 8.1.7.0이 필요합니다.

  2. SQL Server를 실행하는 서버에 Oracle 데이터베이스 인스턴스를 가리키는 별칭 이름을 만듭니다. 자세한 내용은 Oracle 설명서를 참조하십시오.

  3. sp_addlinkedserver를 실행하여 OraOLEDB.Oracleprovider_name으로 지정하고 Oracle 데이터베이스의 별칭을 data_source로 지정하여 연결된 서버를 만듭니다.

    다음 예에서는 별칭이 DQORA8로 정의되었다고 가정합니다.

    exec sp_addlinkedserver @server='OrclDB', 
        @srvproduct='Oracle',
        @provider='OraOLEDB.Oracle', 
        @datasrc='DQORA8'
    
    ms190618.security(ko-kr,SQL.90).gif보안 정보:
    이 예에서는 Windows 인증을 사용하지 않습니다. 암호는 암호화되지 않은 상태로 전송됩니다. 암호는 디스크, 백업 및 로그 파일에 저장되는 데이터 원본 정의와 스크립트에 표시될 수 있습니다. 따라서 이러한 유형의 연결에는 관리자 암호를 사용하지 마십시오. 사용자의 환경과 관련된 보안 지침에 대해서는 해당 네트워크 관리자에게 문의하십시오.
  4. sp_addlinkedsrvlogin을 사용하여 SQL Server 로그인에서 Oracle 로그인으로의 로그인 매핑을 만듭니다.

    다음 예에서는 Oracle 로그인과 암호(OrclUsrOrclPwd)를 사용하여 SQL Server 로그인 Joe를 3단계에서 정의한 연결된 서버로 매핑합니다.

    sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB', 
       @useself = 'false', 
       @locallogin = 'Joe', 
       @rmtuser = 'OrclUsr', 
       @rmtpassword = 'OrclPwd'
    

Oracle의 연결된 서버에서 테이블을 참조할 때는 다음 규칙을 따르십시오.

  • 테이블 및 열 이름을 따옴표 붙은 식별자를 사용하지 않고 Oracle에서 만들었으면 모두 대문자로 된 이름을 사용합니다.

  • 테이블 및 열 이름을 따옴표 붙은 식별자를 사용하여 Oracle에서 만들었으면 이름의 모든 문자에 대해 Oracle에서 이름을 만들었을 때와 같은 대소문자를 사용합니다.

  • 테이블의 특정 열이 NULL이거나 기본값을 가질 수 있는 경우에도 INSERT 문은 테이블의 모든 열에 대해 값을 제공해야 합니다.

  • 이 공급자에서는 datetime 리터럴을 다음과 같은 형식의 인수로 직접 전달하는 것을 지원하지 않습니다.

    EXEC 'string' '<datetime-literal>' AT <oraclelinkedserver>
    

    예를 들어 datetime 리터럴 '14-sep-94'를 다음과 같이 사용하는 것은 지원되지 않습니다.

    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', '14-sep-94', 5) AT OrclDB
    

    대신 datetime 변수를 만들고 변수에 리터럴 값을 할당하고 인수로 변수를 사용하여 EXEC를 호출합니다.

    DECLARE @v1 datetime
    SET @v1 = CONVERT(datetime,'14-sep-94')
    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB
    

제한 사항

SQL Server에서는 Oracle 공급자가 OLE DB 형식 DBTYPE_VARNUMERIC을 반환하기 때문에 Oracle 테이블에 대해 AVG 집계 함수를 사용할 수 없습니다. SQL Server에서는 DBTYPE_VARNUMERIC을 지원하지 않습니다. 예를 들어 다음 코드는 오류를 반환합니다.

SELECT AVG(QTY)
FROM ORA..RPUBS.SALES

오류를 방지하기 위해 OPENQUERY를 사용합니다. 복제 모니터에서 세부 정보 창을 엽니다.

SELECT *
FROM OPENQUERY(ORA,
   'SELECT CAST (AVG(QTY) AS numeric)
   FROM ORA..RPUBS.SALES')

레지스트리 항목

OLE DB Provider for Oracle이 Oracle 클라이언트 소프트웨어와 작동하도록 하려면 명령줄에서 레지스트리 파일을 실행해 클라이언트의 레지스트리를 수정해야 합니다. 여러 개의 클라이언트 소프트웨어 인스턴스를 동시에 실행하면 안 됩니다. 다음 표에 나열된 이러한 파일은 MDAC(Microsoft 데이터 액세스 구성 요소) 설치와 동일한 디렉터리 구조에 있습니다. 일반적으로 이 위치는 C:\Program Files\Common Files\System Files\OLE DB입니다.

Oracle 클라이언트 Windows NT 또는 9x Windows 2000

7.x

mtxoci7x_winnt.reg

mtxoci7x_win2k.reg

8.0

mtxoci80_winnt.reg

mtxoci80_win2k.reg

8.1

mtxoci81_winnt.reg

mtxoci81_win2k.reg

참고 항목

개념

SQL Server로 테스트한 OLE DB 공급자
분산 쿼리

관련 자료

sp_addlinkedserver(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 4월 14일

새로운 내용
  • AVG 집계 함수의 제한 사항에 대한 해결 방법을 추가했습니다.

2005년 12월 5일

새로운 내용
  • 보안 정보를 삽입했습니다.