SQL Server 이야기

SQL Server 엔지니어에게 필요한 Oracle Linked Server의 모든 것

늘푸르른나 2013. 9. 16. 15:13

1. Oracle Patch에 대한 이해
 

  Oracle에서 제공되는 Patch는 SQL Server에서 Hotfix와 같은 개념입니다. Oracle의 Patch에는 크게 Patch Set과 Bundle Patch가 있는데 Patch Set은 SQL Server의 Service Pack과 같은 개념이고 Bundle Patch는 SQL Server의 Cumulative Update와 같은 개념입니다. 따라서, Patch Set을 설치하려면 이미 설치된 RTM 버전의 Oracle이 있어야 하며 Patch Set을 설치하면 버전 정보의 4번째 자리 숫자가 달라집니다. 예를 들어, 요즘 많이 사용되고 있는 Oracle 11g R2 버전은 11.2.0.1이며 이후 발표된 Patch Set에는 11.2.0.2, 11.2.0.3, 11.2.0.4가 있습니다.

 

  Oracle 11g R2 Patch Set 11.2.0.2부터는 RTM 버전의 Oracle이 설치되어 있지 않아도 Patch Set을 사용하여 신규 설치를 할 수 있도록 변경되었습니다. SQL Server에서 RTM + Service Pack의 Slipstream 설치 파일 형태라고 할 수 있습니다. 따라서, 현재 시점에서 Oracle 11g R2의 최신 Patch Set인 11.2.0.4를 설치하고자 한다면 Oracle 11g R2(11.2.0.1)을 먼저 설치할 필요 없이 곧바로 11.2.0.4의 Patch Set을 설치해 주면 됩니다.

 

  Oracle의 각 Patch Set에 대해서는 추가적으로 발견된 Bug에 대한 Fix를 포함하는 Bundle Patch가 주기적으로 발표됩니다. 2014년 2월 현재 11.2.0.3 Patch Set에 대해 발표된 최신 Bundle Patch는 26이며 11.2.0.4 Patch Set에 대해 발표된 최신 Bundle Patch는 1입니다. Bundle Patch는 Cumulative Update 형태이므로 최신(번호가 가장 높은)의 Bundle Patch는 그 이전에 발표된 모든 Fix를 포함하고 있습니다. Bundle Patch는 SQL Server의 Cumulative Update와 같으므로 단독으로 설치할 수 있는 것은 아니고 기반이 되는 Patch Set 위에 추가적으로 설치될 수 있으며 가능하면 최신의 Bundle Patch를 적용해 주는 것이 권장 사항입니다.

 

 

2. 64-bit Oracle Provider for OLE DB 설치

 

  Oracle Provider for OLE DB는 다음과 같이 Oracle Client 설치 파일, ODAC(OUI), ODAC(Xcopy)의 3가지 소스로부터 설치할 수 있습니다.
    • Oracle 11g R2 Patch Set 11.2.0.3 Client 설치 파일(p10404530_112030_MSWIN-x86-64_4of7.zip)

      (metalink 접속 계정 필요)
      https://support.oracle.com/epmos/faces/PatchDetail?_adf.ctrl-state=f5ekipxhu_9&patchId=10404530 &_afrLoop=262331562433842
    • 64-bit ODAC 11.2 Release 5 (11.2.0.3.20) for Windows x64 (OUI 설치, metalink 접속 계정 필요

      없음)
      http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html
    • 64-bit ODAC 11.2 Release 5 (11.2.0.3.20) Xcopy for Windows x64 (Xcopy 방식, metalink 접속 계정

      필요 없음)
      http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

   

    • Oracle 11g R2 Patch Set 11.2.0.4 Client 설치 파일 (metalink 접속 계정 필요)
       https://updates.oracle.com/Orion/Services/download/p13390677_112040_MSWIN-x86-64_4of7.zip?aru=16908159&patch_file=p13390677_112040_MSWIN-x86-64_4of7.zip

    • 64-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows x64 (Xcopy 방식, metalink 접속 계정 필요 없음)
       http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

 

  3가지 소스 중에 하나를 선택하여 설치 시 Oracle Linked Server만을 구성하여 사용할 목적이라면 Oracle Provider for OLE DB만을 선택(나머지 구성 요소는 설치할 필요 없음)하여 설치해 주면 됩니다. 어떤 소스를 사용해서 설치해도 동일한 버전의 Oracle Provider For OLE DB(OraOLEDB11.dll) 및 관련된 파일들이 설치됩니다. Xcopy 버전의 ODAC 설치 시에는 최소한의 모듈만이 설치되며 나머지 2가지 소스를 이용한 설치 때와는 다르게 SQL Plus 툴과 Oracle ODBC Driver가 설치되지 않습니다. 따라서, Oracle ODBC Driver를 설치하려고 한다면 Xcopy 버전의 ODAC 대신에 OUI 설치 방식의 ODAC이나 Patch Set에서 제공되는 Oracle Client 설치 파일을 이용하여 설치해야만 합니다. 또한, Oracle Client 설치 파일을 이용해서 Oracle Provider for OLE DB만을 사용자 정의 방식으로 설치했을 경우에는 해당 모듈의 정보가 Registry에 자동으로 등록되지 않을 수 있으므로 Linked Server 구성 시 공급자 항목에 Oracle Provider for OLE DB가 표시되지 않을 때에는 regsvr32 명령을 이용해 OraOLEDB11.dll을 Registry에 등록해 주면 됩니다.

 

  Xcopy 버전의 ODAC 설치 시에는 시스템 환경 변수 PATH에 ODAC이 설치된 폴더와 ODAC이 설치된 폴더 아래의 bin 폴더를 수작업으로 추가해 줘야 합니다. 따라서, 시스템 관리에 익숙하지 않은 사용자라면 OUI 설치 방식의 ODAC을 다운로드 받아 설치하는 것이 가장 좋은 방법이라 할 수 있습니다. 어떤 소스를 사용하여 Oracle Provider for OLE DB를 설치했더라도 SQL Server에서 정상적으로 Oracle Provider for OLE DB를 통해 Linked Server를 구성하고 사용하려면 시스템의 재시작이 반드시 필요합니다. 각각의 자세한 설치 방법은 다음의 문서에서 참고할 수 있습니다. 

 

    OraOLEDB 설치(ODAC).docx

    OraOLEDB 설치(Oracle Client 설치 파일).docx

 

 

3. Oracle Patch 적용

 

  Oracle Linked Server 사용 시 특정 쿼리문의 실행이 실패한다거나 SQL 서비스에서 Access Violation이 발생하는 등 여러 가지 문제가 발생 시 최신 버전의 Oracle Patch를 우선 적용해 보는 것이 좋습니다. 예를 들어, 다음의 Bug는 Oracle Provider for OLE DB 사용 시 Heap Corruption 및 Application Crash가 발생할 수 있는 문제에 대해 등록된 Oracle Bug로 11.2.0.3의 Bundle Patch 12에서 해당 문제가 Fix되었습니다. 따라서, 이 문제 예방을 위해서는 11.2.0.3 Bundle Patch 12 보다 상위의 최신 Bundle Patch를 적용해 주는 것이 권장됩니다.

Bug:9778542 OLEDB: Crash or heap corruption with -- style comments.

 

  2014년 2월 현재 11.2.0.3에 대한 최신 Bundle Patch는 26입니다. Oracle Patch는 Oracle Provider for OLE DB를 설치한 소스에 따라 그 적용 방식이 달라지는데 Oracle Client 설치 파일로부터 설치했을 때에는 Oracle에서 제공되는 OPatch 유틸리티(Perl script 방식의 Patch 적용 툴)를 사용하여 자동으로 Bundle Patch를 적용할 수 있으며 ODAC을 통해 설치되었을 경우(OUI 방식, Xcopy 방식 모두)에는 Bundle Patch로부터 해당되는 파일들만을 수작업으로 복사해 주는 방식으로 Bundle Patch를 적용할 수 있습니다. Bundle Patch를 적용하는 자세한 방법은 Bundle Patch 파일의 압축을 해제하면 생성되는 README.html 파일을 통해 확인해 볼 수 있는데, 예를 들어 OUI 설치 방식의 ODAC을 사용하여 Oracle Provider for OLE DB만을 선택해서 설치했을 경우에는 Bundle Patch의 압축이 해제된 폴더에서 다음과 같은 방식으로 파일 복사 작업을 수행해 주면 됩니다.

set OH=C:\app\Administrator\product\11.2.0\client_1
copy 16803769\files\bin\oci.dll %OH%\oci.dll
copy 16803769\files\instantclient\oraociei11.dll %OH%\oraociei11.dll
copy 16803769\files\instantclient\oraociei11.sym %OH%\oraociei11.sym
copy 16803769\files\instantclient\light\oraociicus11.dll %OH%\light\oraociicus11.dll
copy 16803769\files\instantclient\light\oraociicus11.sym %OH%\light\oraociicus11.sym
copy 16803769\files\bin\sqora32.dll %OH%\sqora32.dll
copy 16803769\files\bin\sqoras32.dll %OH%\sqoras32.dll
copy 16803769\files\bin\sqresja.dll %OH%\sqresja.dll
copy 16803769\files\bin\sqresus.dll %OH%\sqresus.dll
copy 16803769\files\bin\OraOLEDB11.dll %OH%\bin\OraOLEDB11.dll
copy 16803769\files\bin\OraOLEDB11us.dll %OH%\bin\OraOLEDB11us.dll
copy 16803769\files\bin\OraOLEDBgmr11.dll %OH%\bin\OraOLEDBgmr11.dll
copy 16803769\files\bin\OraOLEDBpus11.dll %OH%\bin\OraOLEDBpus11.dll
copy 16803769\files\bin\OraOLEDBrfc11.dll %OH%\bin\OraOLEDBrfc11.dll
copy 16803769\files\bin\OraOLEDBrmc11.dll %OH%\bin\OraOLEDBrmc11.dll
copy 16803769\files\bin\OraOLEDBrst11.dll %OH%\bin\OraOLEDBrst11.dll
copy 16803769\files\bin\OraOLEDButl11.dll %OH%\bin\OraOLEDButl11.dll

 

  참고적으로, Bundle Patch 적용 시에는 Oracle Client 모듈을 사용하고 있는 모든 응용프로그램을 종료한 상태에서 작업을 수행해 줘야 합니다. Windows에서 제공되는 tasklist 명령을 사용하여 Oracle Client 모듈을 로드하여 사용 중인 모든 프로세스 정보를 확인해 볼 수 있는데 다음과 같은 명령을 통해 확인된 모든 프로세스를 먼저 종료하고 Bundle Patch 적용 작업을 진행해 주면 됩니다. Oracle Linked Server 사용 시 기본적으로 SQL Server 프로세스와 MSDTC 프로세스가 Oracle Client 모듈을 사용할 수 있습니다.

tasklist /m ora*
tasklist /m oci*

 

  Bundle Patch 적용 후 DLL 파일의 속성을 보면 파일의 버전 정보는 Patch Set에 포함된 파일의 버전 정보와 동일한 것처럼 보입니다. 예를 들어, Patch Set 11.2.0.3에 포함된 OraOLEDB11.dll의 파일 버전 정보는 11.2.0.3.0인데 11.2.0.3의 Bundle Patch 21을 적용한 후에도 OarOLEDB11.dll의 버전은 계속 11.2.0.3.0입니다. 파일 생성 및 변경 일자도 해당 DLL이 Build된 날짜가 아닌 해당 파일이 설치된 날짜로 표시되므로 Bundle Patch를 통해 해당 파일이 제대로 업데이트된 것인지 여부 확인이 쉽지 않은데 이 때에는 sysinternals(http://technet.microsoft.com/en-US/sysinternals)에서 다운로드 받을 수 있는 sigcheck(Disk 상에 존재하는 DLL 파일 자체에 대한 Signature 정보 확인)나 ListDlls(프로세스에 의해 메모리에 로드된 DLL 정보 확인) 툴을 사용하여 실제 DLL 파일이 Build된 시간을 확인해 볼 수 있습니다. 고객사에서 수집된 Dump 파일이 있을 경우 WinDBG를 통해 확인해 볼 수도 있는데 다음과 같이 모듈의 정보를 조회했을 때 Tmestamp 값이 최근의 날짜로 표시되는 것으로부터 해당 모듈이 Bundle Patch에 의해서 업데이트 되었음을 판단할 수 있습니다. 참고적으로, Patch Set 11.2.0.3에 포함된 OraOLEDB11.dll 파일의 Build된 날짜는 2011년 9월 27일로 나타납니다.

0:000> lmvm oraoledb11
start             end                 module name
00000000`0d950000 00000000`0d9fc000   OraOLEDB11   (deferred)
    Image path: c:\oracle\bin\OraOLEDB11.dll
    Image name: OraOLEDB11.dll
    Timestamp:        Mon Apr 29 22:01:55 2013 (517E6F43)
    CheckSum:         000B058A
    ImageSize:        000AC000
    File version:     11.2.0.3
    Product version:  11.2.0.3
    File flags:       0 (Mask 3F)
    File OS:          4 Unknown Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4

 

 

4. Oracle Linked Server 구성

 

  64-bit 시스템에서 Oracle Linked Server는 기본적으로 2가지 방식으로 구성할 수 있습니다. 하나는 Oracle Provider for OLE DB를 사용하는 것이고 나머지 하나는 Oracle ODBC Driver와 Microsoft OLE DB Provider for ODBC Drivers를 사용하는 것입니다. 참고적으로, 32-bit 시스템에서는 Microsoft에서 제공되는 OLE DB Provider for Oracle과 ODBC Driver for Oracle를 사용 가능하지만 해당 드라이버들은 OCI 7 기반으로 개발되었고 더 이상 업데이트가 되지 않으므로 최신 버전의 Oracle 서버 접속 시 여러 가지 호환성 문제가 발생할 수 있으며 사용이 권장되지 않습니다.

 

  기본적으로 성능적인 측면에서 Oracle Linked Server 구성 시 Oracle Provider for OLE DB의 사용이 권장됩니다. Oracle ODBC Driver는 Oracle Provider for OLE DB에서 문제 발생 시 문제 발생의 원인이 OLE DB Provider의 문제인지 여부를 Isolation하는 목적이나 Oracle Provider for OLE DB에서 발생하는 문제를 우회하는 용도로만 사용하는 것이 좋습니다.

 

  Oracle Provider for OLE DB를 사용하여 Oracle Linked Server 구성 시에는 openquery 함수를 사용한 쿼리뿐만 아니라 4-part Name 쿼리도 사용 가능한 반면에 Oracle ODBC Driver 사용 시에는 openquery 함수를 사용한 쿼리만 사용 가능합니다. 물론, 이기종 DB인 Oracle 서버와의 Linked Server 쿼리 시에는 openquery 함수를 사용하는 것이 Oracle에서 최적화된 인덱스를 사용할 수 있도록 하여 성능에 좋으며 권장되는 방법입니다.

 

  Windows Server 2012에서는 11.2.0.4 버전 이상의 Oracle Provider for OLE DB를 사용하여 Oracle Linked Server를 구성해야 합니다. 이는 다음의 Oracle 공식 문서에서 확인할 수 있는 것처럼 Windows Server 2012에서 지원되는 Oracle Provider for OLE DB가 11.2.0.4 이상의 버전이기 때문입니다. Windows Server 2012에 11.2.0.4 하위 버전(예를 들어, 11.2.0.3)의 Oracle Provider for OLE DB를 설치하고 이를 사용하여 SQL Server에 Oracle Linked Server를 구성하면 정상적으로 동작하지 않으며 SQL Server 프로세스가 비정상적으로 종료되는 현상이 발생할 수 있으니 주의가 필요합니다.

    http://www.oracle.com/technetwork/database/windows/tech-info/sod-oracle-db-win8-win2012-1853201.pdf

    http://docs.oracle.com/cd/E11882_01/relnotes.112/e23557.pdf

 

  Oracle Provider for OLE DB와 Oracle ODBC Drvier를 사용하여 Oracle Linked Server를 구성하는 방법에 대한 자세한 내용은 다음의 문서를 참고할 수 있습니다.

 

    Oracle Linked Server 구성.docx

 

 

5. Oracle Provider for OLE DB 공급자 옵션 설정

 

  Oracle metalink에서 확인할 수 있는 다음의 공식 문서에는 SQL Server에서 Oracle Linked Server 구성 시 Oracle Provider for OLE DB의 공급자 옵션에서 동적 매개 변수와 Inprocess 허용 옵션을 체크해 줄 것을 권장하고 있습니다. 이런 이유로 많은 사이트에서 Inprocess 허용 옵션을 체크하여 사용 중에 있으며, 이로 인해 Oracle 모듈의 Bug로 인해 SQL Server에서 Access Violation이 발생하고 비정상적으로 종료되는 현상이 발생할 수 있습니다.
    How to Create a Sql Server Linked Server With The Oracle Provider for OLE DB or Oracle ODBC Driver [ID 191368.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=191368.1)

 

  Oracle Provider for OLE DB를 Inprocess 방식으로 사용할 경우 외부 모듈로 인해 SQL Server의 안정성이 떨어지기 때문에 SQL Server의 안정성 확보를 위해 우선 Oracle 모듈에 대해서 최신의 Bundle Patch까지 적용해 보도록 하고 이를 통해서도 문제가 해결되지 않을 시 Oracle 모듈을 Out of process 방식으로 동작하도록 설정해 줘야 합니다. 상황이 심각할 경우에는 Oracle 모듈을 Out of process 방식으로 동작하도록 우선 적용하여 SQL Server의 안정성 확보를 우선하는 작업도 필요합니다.

 

  Oracle Provider for OLE DB 설치 후 별도로 공급자 옵션에서 Inprocess 허용 옵션을 체크해 주지 않아도 Inprocess 방식으로 동작하는 현상이 발생할 수 있기 때문에 Oracle Provider for OLE DB를 Out of process 방식으로 동작하도록 설정하려면 명시적으로 Inprocess 허용 옵션이 해제되도록 해 줘야 하며 SQL Server Management Studio를 이용해서 Inprocess 허용 옵션을 해제하기 보다는 Registry에서 AllowInProcess 값을 명시적으로 0으로 설정해 주는 것이 가장 확실한 방법입니다. Oracle Provider for OLE DB를 Out of process 방식으로 동작하도록 설정하려면 레지스트리 편집기(regedit.exe)를 실행한 다음, 다음의 키(SQL Server 2008 R2 기준이며 SQL Server의 버전에 따라 키의 위치는 조금씩 다릅니다) 아래에 아래와 같이 AllowInProcess라는 이름의 DWORD 값을 0으로 설정해 주면 됩니다(AllowInProcess 값이 없으면 DWORD 값으로 생성해 줍니다). Registry 설정이 효과를 보도록 하려면 SQL Server 서비스의 재시작이 필요합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\Providers\OraOLEDB.Oracle 

 

  Windows Server 2012에서는 OLE DB Interface Proxies/Stubs DLL(msdaps.dll)의 Bug로 인해 Out of Process 방식으로 Linked Server가 동작하도록 설정했을 때 SQL Server 서비스가 비정상적으로 종료되는 문제가 발생합니다. 이는 Oracle Provider만의 문제가 아닌 모든 OLE DB Provider에 대해서 발생하는 문제로 다음의 KB 문서에서 해당 Bug에 대한 상세한 내용을 참고할 수 있습니다. 따라서, Windows Server 2012 환경이라면 Oracle Provider for OLE DB를 Out of process 방식으로 동작하도록 설정하기 전에 반드시 다음의 KB 문서에서 제공되는 Windows Server 2012 Hotfix를 먼저 설치해 줘야만 합니다. 다음의 Hotfix는 설치 후 곧바로 적용되므로 시스템을 재시작해 줄 필요가 없습니다.
     <2859413> SQL Server service crashes when you run a linked server query on a Windows Server 2012-based computer(http://support.microsoft.com/kb/2859413)

 

  간혹 SQL Server 서비스의 시작 계정에 DCOM 관련 권한이 부족할 경우 Oracle Provider for OLE DB를 Out of Process 방식으로 동작하도록 설정한 후에 Oracle Linked Server에 대한 쿼리문 수행 시 다음과 같은 형태의 오류가 발생할 수 있습니다.

메시지 7399, 수준 16, 상태 1, 줄 1
연결된 서버 "ORA11"의 OLE DB 공급자 "OraOLEDB.Oracle"에 오류가 발생했습니다. 액세스가 거부되었습니다.
메시지 7301, 수준 16, 상태 2, 줄 1
연결된 서버 "ORA11"의 OLE DB 공급자 "OraOLEDB.Oracle"에서 필수 인터페이스("IID_IDBCreateCommand")를 가져올 수 없습니다.
--- 또는 ---
메시지 7399, 수준 16, 상태 1, 줄 1
연결된 서버 "ORA11"의 OLE DB 공급자 "OraOLEDB.Oracle"에 오류가 발생했습니다. 액세스가 거부되었습니다.
메시지 7350, 수준 16, 상태 2, 줄 1
연결된 서버 "ORA11"의 OLE DB 공급자 "OraOLEDB.Oracle"에서 열 정보를 가져올 수 없습니다.

 

  상기와 같은 오류 발생 시 다음의 방법에 따라 SQL Server 서비스의 시작 계정에 필요한 권한을 부여함으로써 문제를 해결할 수 있습니다.

1. Windows의 ‘시작 – 실행’에서 dcomcnfg를 실행합니다.
2. 구성 요소 서비스 – 컴퓨터 – 내 컴퓨터 – DCOM 구성 – MSDAINITIALIZE를 차례로 선택합니다.
3. 마우스 우측 버튼으로 MSDAINITIALIZE의 ‘속성’을 선택한 다음 ‘보안’ 탭을 클릭합니다.
4. ‘시작 및 활성화 권한’, ‘액세스 권한’, ‘구성 권한’ 항목 각각에 대해 ‘사용자 지정’을 선택하고 ‘편집’ 버튼을 클릭한 다음 SQL Server 서비스의 시작 계정에 대해서 모든 권한이 부여되도록 추가해 줍니다.
5. 권한 설정 후에도 문제가 해결되지 않을 시 다음과 같이 명령 프롬프트에서 tasklist를 실행하여 이미 실행 중인 dllhost.exe 프로세스가 없는지 확인하고 해당 프로세스를 작업 관리자를 통해 강제로 종료해 주거나 시스템을 재시작해 줍니다.

 

C:\Windows\system32>tasklist /m ora*

이미지 이름                       PID        모듈
========================= ======== ============================================
dllhost.exe                       2204       OraOLEDB11.dll, OraOLEDBgmr11.dll,
                                                    OraOLEDBrst11.dll, OraOLEDButl11.dll,
                                                    OraOCIEI11.dll, Oraoledbic11.Dll,
                                                    OraOLEDB11ko.dll, OraOLEDBpus11.dll

 

  Oracle Provider for OLE DB가 Out of process 방식으로 동작하도록 명시적으로 Registry를 설정했음에도 불구하고 Oracle과 관련된 모듈들이 SQL Server 프로세스의 주소 공간에 로드 되는 현상이 발생할 수 있습니다. 이는 SQL Server Management Studio에서 연결된 서버 항목 아래에 생성되어 있는 Oracle Linked Server를 확장하고 다음과 같이 카탈로그를 확장했을 때 발생합니다. 이렇게 로드 된 Oracle 모듈들은 이 작업에 의해서만 일시적으로 사용되었을 뿐 실제 Oracle Linked Server 쿼리문이 실행될 때에는 사용되지 않으며 정상적으로 Out of process 방식으로 동작하므로 크게 우려하지 않아도 됩니다. 

 

  Oracle Provider for OLE DB가 Out of process 방식으로 잘 동작하는지 여부는 명령 프롬프트에서 다음과 같이 tasklist 명령을 실행함으로써 확인해 볼 수 있습니다. 아래의 예는 Oracle Linked Server에 대한 쿼리문을 실행한 직후에 tasklist 명령을 실행한 결과로, SQL Server Management Studio에서 Oracle Linked Server의 카탈로그를 확장함으로써 Oracle 모듈이 SQL Server 프로세스 주소 공간에 로드 되었으나 실제 Linked Server 쿼리문은 Out of process 방식으로 동작하여 dllhost.exe 프로세스가 추가적으로 생성되었고 해당 프로세스의 주소 공간에 Oracle 모듈이 로드 되어 사용되었음을 보여 줍니다. Oracle Provider for OLE DB가 Out of process 방식으로 동작하면서 생성된 dllhost.exe 프로세스는 일정 시간 경과 후 사라지게 됩니다. 만약, Oracle Linked Server에 대한 쿼리문 실행 시 dllhost.exe 프로세스가 생성되는 것이 확인되지 않고 Oracle 모듈이 SQL Server 프로세스 주소 공간에만 로드 되어 있다면 Oracle Provider for OLE DB가 Out of process 방식으로 동작하고 있지 않는 것이므로 설정이 제대로 되어 있는지 여부에 대해서 확인이 필요합니다. 참고적으로, Oracle Linked Server 사용 시 Oracle 관련 모듈들이 SQL Server의 주소 공간에 로드 되어 있는지 여부는 sys.dm_os_loaded_modules DMV를 조회해 봄으로써 확인해 볼 수도 있습니다. 

OraOLEDB 설치(ODAC).docx
0.48MB
Oracle Linked Server 구성.docx
0.19MB
OraOLEDB 설치(Oracle Client 설치 파일).docx
0.39MB