none
SQL 2005 Ent에서 ORACLE로 Linked Server구성시 Error 납니다. RRS feed

  • 질문

  • SQL 2005 Ent 64Bit 에서 ORACLE로 DB Link를 위해 Linked Server를 ORACLE ODBC를 이용해서 구성 할 경우 SQL 서버가 DOWN 되는 현상이 발생 합니다.

    물론 연결된 서버로의 Query도 안되고요

    SQL이 설치된 서버는 IBM X460모델이고 OS는 MS Windows 2003 DataCenter Edition(공급자 IBM)입니다.

    Microsoft에서 제공하는 ORACLE용 ODBC는 설치되어 있지 않습니다.

     

     

    2006년 9월 7일 목요일 오후 11:45

모든 응답

  • 64bit 버전에는 MS의 Oracle용 ODBC가 없을 것입니다. 오라클 사이트에서 or 기 구입된 최신의 오라클 Client 도구를 설치하신후(64비트 OLEDB Provider선택 필수) 구성을 시도해 보십시요. (9i or 10g?)

    Oracle 서버의 버전이 Client의 버전보다 낮아도 기본적인 기능을 사용하기 위해서는 별 무리 없을 것입니다.

    2006년 9월 8일 금요일 오전 1:29
  • 당연히 ORACLE 10g R2 Client를 설치 했습니다.

    설치하고 ORACLE로 Link 하고 Query를 날리면 SQL 서버가 DOWN 됩니다.

    혹시 64Bit에서 Check, 점검 해야할 것이 있는지 알고 싶습니다.

    2006년 9월 12일 화요일 오전 5:56
  • SQL Server가 Down되었다면 Errorlog 에 ACCESS_VIOLATION이 발생하지 않았는지 체크해보시길 바랍니다.

    AV를 유발한 모듈이 Oracle Client와 관련된 것인지 Callstack에 나타난 모듈들을 확인해보세요.

    그리고, Oracle ODBC Driver로 Linked Server를 구성하셨다고 했는데, Oracle OLEDB Provider로 구성해보시길 바랍니다.

    이는 Oracle Client 설치시 Default로 설치되지 않으므로 CUSTOM 설치에서 선택해주셔야 합니다.

    1) Management Studio의 [Linked Servers]>[Providers]에서 Oracle OLEDB Provider에 대한 속성에서 다음 옵션을 체크합니다.

    - Dynamic Parameter

    - Allow inprocess

    2) Oracle Linked Server를 추가합니다.

    - Linked Server : Linked Server Name

    - Provider : Oracle OLEDB Provider 선택

    - Data Source : Oracle TNS name

    - Product : Oracle

    3) security TAB에서 Oracle Server로의 접속 ID 및 암호 지정..

    앞서 언급된 것처럼 64 비트 환경에서는 더이상 Microsoft OLEDB Provider (ODBC Driver)for Oracle가 제공되지 않습니다.

    Oracle Server로의 접속을 위해선 Oracle Native OLEDB Provider를 사용해야 합니다. 따라서, 사용하시는 Oracle Client 버전을

    가급적 최신 버전을 사용하시는 것이 좋습니다.

    감사합니다.

    2006년 9월 14일 목요일 오전 10:57
  • 개인적인 경험에 의해서 의견 드리겠습니다..

    제가 테스트 해본 장비는 x64 장비이고, 오라클은 7, 8, 9, 10 까지 테스트 해 봤습니다..

    문제는 x64용으로 제공되는 오라클 드라이버는 10g 중에서도. 10.2 버전입니다.

    이것을 설치해야 되고요.. IA용으로도 제공됩니다.

    단, 문제는 오라클의 경우 x64 시스템에는 32bit 클라이언트가 설치는 되지만, SQL Server 2005에 사용할 수는 없습니다.

    또한 오라클을 설치해주고 난뒤 In-Process 옵션을 활성화 시켜 주어야 작동을 하는 특성이 있습니다.

    또한 오라클 10g의 경우 9i까지 밖에 지원을 안하기 때문에 사용하시려면 호환성 부분도 고려를 하셔야 합니다.

    오라클 시스템을 Linked Server로 사용할 경우 보통 4-part naming 방식으로 SQL 문장을 구성하게 되는데, 대상 테이블의 양이 작은 경우에는 문제가 없으나, 대용량 테이블을 사용할 경우 SQL Sevrer가 죽는 경우가 종종 있습니다.

    이런 경우에는 OPENQUERY를 사용하셔서 질의를 하시는게 좋습니다.

    그렇지 않은 경우에도 4-part naming 방식은 지양하시는 것이 좋습니다.

    이 방식을 사용할 경우 원격 서버의 메타 데이터를 가져와서 사용하기 때문에 이에 따른 부하가 상당합니다.

    이것을 JOIN이나 재가공 할 경우 그 부하는 더더욱이 커져서 SQL Sevrer가 종종 다운되는 현상을 발견하실 수 있을 겁니다.

    이점을 참고 하셔서 구성 및 사용하시면 안정된 시스템을 구성하리라 생각됩니다.

     

    이상입니다.

    2006년 10월 12일 목요일 오전 3:02
  • SQL이 64bit 머신에 깔려 있을 경우 오라클과 DB링크가 불가능했었습니다.

    작년이 이 일로 낭패를 보고 서버를 따로 32bit 머신에 깔고 구성을 했던

    기억이 납니다. 올해는 확인을 안해봤는데요... 먼가 나오지 않았을지... hotfix라도

     

    2006년 10월 21일 토요일 오후 11:37
  • x460모델이면 x64모델이군요.

    기존 x64모델에서 oracle client 10.2를 설치하여 sql 2005 ent 64bit와 oracle 10g, 9i와 연동해서 구축한 사례가 있으므로 일단 동작에는 문제가 없어야 합니다.

    MS에서는 64bit용 oracle용 odbc를 지원하지 않습니다.  설치되어 있는듯 보이는 msora는 32bit용이고 비정상동작할 가능성이 높습니다.

    처음으로 확인해 볼 내용은 x460에 설치된 oracle client에서 sqlplus로 외부 oracle에 정상적으로 query가 되는지 확인하는 것입니다.

    sqlplus로 접근이 가능하다면 sql에서도 접근이 가능하다고 보시면 됩니다.

    그후 sql enterprise에서 linked server provider에 oracle에서 제공되는 provider가 보이는지 확인하십시요.

    msora가 아니고 ora로 시작되는 provider입니다.

    provider가 보이면 provider의 등록정보에서 in process 체크 박스를 체크합니다.

    sql server를 restart시킵니다.

    sql서버에서 openquery를 oracle로 날려봅니다. 

    아마 될겁니다.. 제가 맡았던 사이트들에서 모두 다 잘 되었었고, 지금도 잘 사용하고 있답니다. 

    2006년 10월 26일 목요일 오전 2:12