새로운 클라이언트 드라이버가있는 구형 Oracle 데이터베이스에 연결하는 것이 일반적으로 문제가되지 않습니다. 12g 클라이언트를 사용하여 10g 또는 11g 데이터베이스에 연결합니다. 나머지 대답은 오라클 클라이언트가 프로그램을 실행하는 컴퓨터에 이미 설치되어있는 경우 .NET 프로그램에서 발생할 수있는 기술적 인 문제에 속합니다.
업데이트 2014 : 한편 오라클에서
는 오라클 데이터베이스에 대한 관리 닷넷 드라이버를 출시했다. 따라서 로컬 오라클 클라이언트를 설치하거나 앱과 함께 인스턴트 클라이언트를 제공하는 대신 선호되는 방법은 로컬 구성에 의존하지 않고 관리되는 드라이버 만 전달하는 것입니다. 그런 다음 설치된 클라이언트, GAC, Oracle 데이터베이스 버전 등에 문제가 없습니다. the Oracle website에서 관리되는 드라이버를 다운로드 할 수 있습니다. 관리되는 드라이버를 사용할 수없는 경우 여전히 필요
이전 대답 :
클라이언트 워크 스테이션에 설치된 Oracle 클라이언트가있는 경우 당신이 알고하지 않으면 문제가 시작 . GAC 에 대해 이야기하는 중이라면 오라클 클라이언트가 설치되어 있는지 알 수 없으며, 그렇다면 버전은입니다.
설치된 Oracle 클라이언트에 의존하지 않으려는 경우 .Net 응용 프로그램과 함께 Oracle Instant Client를 제공 할 수 있습니다. 예를 들어 ODAC 11.2 Release 4 (11.2.0.3.0) with Oracle Developer Tools for Visual Studio을 다운로드하면 개발자 워크 스테이션 (DataSet 개발 및 EntityFramework에 대한 Visual Studio 지원 포함) 및 인스턴트 클라이언트에 필요한 모든 파일에 대한 Oracle 클라이언트 설치가 제공됩니다. Oracle.DataAccess.dll
- ociw32.dll을
- OCI.DLL : 다음 파일이 (당신의 ODAC 설치의 하위 폴더를 검색 할) 필요가 즉시 클라이언트에 대한
- orannzsbb11.dll
- oraociicus11.dll (영어를 사용하는 경우 해당 .dll)
- OraOpd11w.dll
개
- 의 tnsnames.ora (필요한 경우)
또한 다음 .dll 파일은 Windows 디렉터리에서 필요하다 :
모든 파일을 응용 프로그램의 작업 디렉토리 (.exe 파일)에 복사하십시오.
어떻게 GAC에 속해 있습니까?
클라이언트 시스템에 Oracle 클라이언트가 설치된 경우 GAC에 Oracle.DataAccess.dll이 있습니다. 또한 다음과 같은 정책이 설치되어있을 수도 있습니다. Oracle.DataAccess.dll 프로그램이 참조하는 경우 GAC의 Oracle.DataAccess.dll 버전은 으로 항상을 사용해야합니다. 당신은 내가 위의 링크 된 ODAC를 설치하는 경우
C에서 해당 파일을 찾을 : \ WINDOWS \ Microsoft.NET \ 조립 \ GAC_32 \ Policy.4.112.Oracle.DataAccess \ v4.0_4.112.3.0__89b483f429c47342
결과로 Oracle.DataAccess.dll을로드하려고하면 .NET 응용 프로그램이 항상 예외를 발생시킵니다 ("Provider is not compatible ..."와 같은 오류 메시지와 함께). 클라이언트 시스템 응용 프로그램에서 참조하는 것보다 다른 버전의 Oracle Client 11이 설치되어 있습니다.
<configuration>
...
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342" />
<publisherPolicy apply="no" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
우리는 governement 기관입니다 그러므로 우리가 컴퓨터에 설치되어있는 제어 : 게시자 정책이 무시되고 항상 버전이 로딩 될 수 있도록 그것을 해결하기
, 당신은 당신의 app.conf을 구성 할 수 있습니다 . 이것은 모든 곳에서 동일한 클라이언트 버전이 될 것입니다. 그러나 나는 당신의 회신을 기록해 둡니다. 그래서 기괴한 실수를 보게되면, 어디에서부터 시작해야할지 알게 될 것입니다. 감사 ! –
@ ultraman69이 경우에는 밤에 잠 잘 수 있습니다 :) 모든 컴퓨터에서 항상 동일한 클라이언트를 사용하기 때문에 GAC 또는 정책 문제가 발생하지 않습니다. Oracle.DataAccess.dll의 표준 인터페이스를 사용하는 한 모든 DB 버전> 9.2에 연결할 수 있습니다. 물론 11g 특정 기능/SQL은 하위 버전에서는 작동하지 않습니다. – Desty
@Detsy 나는 webservice를 가지고 있으며 32 비트로 설정할 수 없다. 동일한 단계를 통해 ODC의 64 비트 인스턴트 클라이언트 버전을 사용할 수 있습니까? – Laggel