2013-06-25 4 views
1

은 oracle db에 연결하기 위해 ODP을 사용하는 응용 프로그램입니다. ODP 설치는 32 비트입니다. Win 7 64 bit machine에서 응용 프로그램을 개발 중입니다. 나는 개발 용 컴퓨터에서 플랫폼 타겟을 x86으로 설정하고있다. 하지만 Win Server 2003 64 bit machine에서 응용 프로그램을 테스트 할 때 예외Win 7 64 비트 및 Windows Server 2003 64 비트에 대한 ODP.NET 32 비트

The type initializer for 'Oracle.DataAccess.Client.OracleCommand' threw an exception.            

UNHANDLED EXCEPTION STACK TRACE:at Oracle.DataAccess.Client.OracleCommand.Dispose(Boolean disposing) 
at System.ComponentModel.Component.Finalize() 

UNHANDLED EXCEPTION SOURCE: Oracle.DataAccess 

UNHANDLED EXCEPTION INNER EXCEPTION: Oracle.DataAccess.Client.OracleException The provider is not compatible with the version of Oracle client at Oracle.DataAccess.Client.OracleInit.Initialize() 
at Oracle.DataAccess.Client.OracleCommand..cctor() 

UNHANDLED EXCEPTION DATA: System.Collections.ListDictionaryInternal 

UNHANDLED EXCEPTION MESSAGE: The type initializer for 'Oracle.DataAccess.Client.OracleCommand' threw an exception. 

을했다 그리고 난 윈도우 7에 Any CPU에 플랫폼 목표를 설정할 때 64 비트는 예외 제공 : 개발에

Could not load file or assembly 'Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was made to load a program with an incorrect format. 

ODP 버전을 machine (Win 7 64 bit)이 11.2.0이고 테스트 컴퓨터 (Win Server 2003 64 bit)도 11.2.0

두 컴퓨터에서 응용 프로그램을 실행하려면 어떻게해야합니까? 어떤 생각?

+0

ODP 설치시 'ORACLE_BASE \ ORACLE_HOME \ odp.net \ bin \ 2.x'가 있지만 ORACLE_BASE \ ORACLE_HOME \ odp.net \ bin \ 4 디렉토리가 없습니다. – gesus

답변

0

는 IMO가 몇 가지 옵션이 있습니다 : x86 용

  1. 컴파일하고 ORACLE_HOME, TNS_ADMIN ... 시스템 변수를 변경하면 나란히 실행할 수 있습니다 (당신의 64 비트 서버에서 32 비트 Oracle 클라이언트를 설치);
  2. x86 용으로 컴파일하고 모든 DLL을 바이너리와 함께 32 비트 으로 압축합니다 (그렇지 않으면 TNS_ADMIN 시스템 변수가 설정되어 있는지 확인하십시오. 그렇지 않으면 LDAP 또는 tnsnames를 사용할 수 없습니다).
  3. 모든 CPU에 대해 응용 프로그램을 컴파일하지만 x64 및 x86 비트에 대해 다른 dll 세트를 만듭니다 (Oracle.DataAcess.dll은 특정 아키텍처 용으로 컴파일되었으며 x64 용 버전과 x86 용 버전이 있음).
  4. 오라클은 a managed Oracle driver에서 작업 중입니다. 오라클 클라이언트는 더 이상 필요하지 않습니다. 대부분의 코드베이스는 쉽게 변환 할 수 있지만 기능이 아직 완료되지 않았으며 Oracle 11+ 데이터베이스 만 지원한다는 사실을 알고 있어야합니다.
+0

나는 대부분 동의한다. # 1에서는 oracle_home 또는 tns_admin을 변경할 필요가 없습니다. 새 버전의 공급자는 먼저 레지스트리를 사용하여 관리되지 않는 dll을 찾습니다. 둘째 - # 3 - dev 컴퓨터에 64 비트 버전을 설치하기 만하면됩니다. 여기에서 Oracle.DataAccess.dll을 시스템간에 복사하지 않고 대신 GAC에 등록 된 것을 사용합니다. –