문제

여기서 잘못된 질문을 할 수 있습니다. 그렇다면 기꺼이 변경하려고합니다.

Microsoft.net Oracle 제공 업체를 사용하는 프로젝트가 있습니다 (우리의 계획은 ODP로 변경하는 것이지만 아직 그렇게하지 않았습니다).

이 프로젝트가 Windows 2008 (x64) 빌드 서버를 구축하기 위해 노력하고 있습니다. 그것은 잘 구축되지만 Oracle 데이터베이스에서 물건을 누르면 단위 테스트가 실패합니다.

처음에는 32 비트 오라클 9i 클라이언트를 설치했습니다.이 클라이언트는 현재 WinXP Dev 박스와 이전 2003 빌드 서버에서 사용하고 있습니다. 그러나 이제 이것은 다음과 같은 메시지를 얻습니다. Oracle 클라이언트 라이브러리를로드하려고 시도하면 BadImageFormateXception을 던졌습니다. 이 문제는 32 비트 Oracle 클라이언트 구성 요소가 설치된 상태에서 64 비트 모드로 실행될 때 발생합니다.

X86 플랫폼으로 컴파일을 시도했지만 오류 메시지는 변경되지 않았습니다.

이제 11g 64 비트 클라이언트가 설치되었지만 System.Data.oracleClient라는 메시지가 표시됩니다. Oracle Client Software 버전 8.1.7 이상이 필요합니다.

그렇다면 어떤 Oracle 설치를 사용해야합니까?

편집하다:

나는 이것을 작동시킬 수 있었다. Nunit이 32 비트 모드에서 실행하도록 강요함으로써 문제를 일으키는 테스트로 밝혀졌습니다. http://geekswithblogs.net/lance/archive/2006/12/28/102191.aspx 이전 32 비트 드라이버를 사용하여 테스트를 수행 할 수있었습니다. 이것은 질문에 대한 엉뚱한 답이 될 것이므로 나는 그것을 사용하지 않지만 Oracle 64 비트 드라이버로의 전환에 대한 좋은 정보를 제공하는 사람에게 기꺼이 정답을 수여 할 것입니다.

도움이 되었습니까?

해결책

오라클에 관해서는 사용하는 것을 좋아합니다 오라클 인스턴트 클라이언트 :

  • 대상 기계에 아무것도 설치할 필요가 없습니다 (개발자 상자 포함).
  • 선택한 특정 클라이언트와 함께 응용 프로그램이 실행되도록 할 수 있습니다.
  • 동일한 컴퓨터에서 다른 클라이언트 버전에서 여러 응용 프로그램이 쉽게 작동 할 수도 있습니다.
  • 단점으로 응용 프로그램에 상당한 무게가 추가됩니다 (~ 19MB 최소값).

확인하다 C#을 Oracle 데이터베이스에 연결하는 데 필요한 최소 클라이언트 풋 프린트는 무엇입니까? 자세한 내용은. x86과 x64 기계에서 작동하는 Visual Studio 프로젝트를 설정하는 방법을 알고 있으려면 내 블로그 게시물을 확인하십시오. Visual Studio의 Oracle Instant Client.

다른 팁

올 가을 (2012)부터 ODP 관리 코드 베타를 사용할 수있는 이후 새로운 답변을 추가하고 있습니다. 보다 이 링크 자세한 내용은. 그것은 우리에게 매우 안정적이며 우리는 주로 다음과 같은 이유 때문에 생산에 사용하고 있습니다.

  • 설치 없음 (간단한 등록이 필요한 엔티티 프레임 워크 제외)
  • 관리되지 않는 버전보다 작고 발자국은 약 6MB입니다.
  • "비트 민감한"것은 아닙니다. 즉, 모든 CPU는 마침내 ODP와 함께 작동합니다 :)
  • 보다 직관적 인 매핑 c# type <-> Oracle 유형 (그리고 데이터베이스에서 EF 및 모델 생성에 문제가 해결되었습니다)
  • ezconnect (관리되지 않은 ODP의 모든 버전은 그렇지 않았습니다)를 지원합니다. 즉, 더 이상 tnsnames.ora 번거 로움은 없습니다.

그러나 64 비트로 전환하려면 관리되는 ODP 드라이버를 다운로드하고 변경하십시오. Oracle.DataAccess 참조 Oracle.ManagedDataAccess 그리고 다시 컴파일 :)

나는 메시지를 생각한다 "System.Data.OracleClient는 Oracle Client Software 버전 8.1.7 이상이 필요합니다." 그것은 비슷합니다 "Oracle Client는 설치, 설치되었지만 찾거나 설치되지 않았지만 8.1.7 이상이 필요합니다.".

값이 키 바로 아래에있는 경우 regedit를 확인하십시오.

 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraOdac11g_home1

어디에 OraOdac11g_home1 설치의 Oracle Home 이름에 따라 다릅니다.

또한 Visual Studio를 통해 연결하여 가능했는지 확인하십시오.

나는 당신이보고있는 것과 관련된 문제가있었습니다.

처음에는 내 컴퓨터에 Oracle 10G 클라이언트가 설치되어 있었으며 .NET Oracle.DataAccess 구성 요소 버전 번호는 10.2.0.100입니다. 이것은 .NET 런타임 V1.0.3705입니다.

ODP.NET과 Oracle.DataAccess 구성 요소 버전을 설치했으며 이제 v2.102.2.20이며 .NET 런타임 v2.0.50727에서 실행됩니다. Oracle이 왜 그렇게했는지에 대한 참조를 찾을 수 없습니다. 버전 번호를 가져 오는 것과 관련이있었습니다. 런타임 버전과 일치합니다

이것을 해결하는 데 하루가 걸렸습니다. 우리는 아직 11G 클라이언트를 사용하지 않고 8I 클라이언트를 연간 사용하지 않았으므로 해당 클라이언트의 버전 번호가 무엇인지 알지 못하지만, 내가 당신 이었는지 확인합니다.

요컨대, Oracle 8i 구성 요소와 달리 11G 구성 요소가 나이가 아닌 것으로 보일 수있는 구성 요소 버전 번호를 백 트랙했습니다.

오류가 "Oracle Client Software 버전 8.1.7 이상이 필요하다"는 오류가 악명 높은 오류라는 것을 여러 번 발견했습니다. 먼 메모리에서 나는 일반적으로 파일 IO 권한 문제를 나타내는 것을 기억합니다. ASP.NET Worker 프로세스 (또는 응용 프로그램이 실행중인 신원이든)에 Oracle Client 폴더 계층 구조의 폴더에 대한 일종의 읽기 또는 쓰기 권한이 필요하다고 생각합니다.

이것은 환경에서 여러 오라클 주택의 원인이 될 수 있습니다. 빌드 시스템에서 이전 버전의 Oracle 주택을 제거하십시오. 단일 주택으로 빌드를 다시 생성 해보십시오. 9I 버전 ODP.NET 및 10G/11G 연결에 문제가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top