programing

공급자가 Oracle을 사용할 때 Oracle 클라이언트 버전 오류와 호환되지 않습니다.데이터 클라이언트

testmans 2023. 8. 8. 20:08
반응형

공급자가 Oracle을 사용할 때 Oracle 클라이언트 버전 오류와 호환되지 않습니다.데이터 클라이언트

저는 Visual Studio 2008 Express Edition을 사용하고 있으며 Oracle을 사용하여 작은 애플리케이션을 개발하려고 합니다.데이터 클라이언트.대상 시스템의 데이터베이스에 연결하려고 할 때 위에서 언급한 오류가 발생합니다.

Oracle 10gR2용 Oracle ODP.net 프로바이더에 대한 참조를 추가했으며 대상 시스템에 Oracle 10gR2 데이터베이스 복사본이 설치되어 있습니다.그런데도 오류가 발생하고 있습니다.이 글을 올리기 전에 SO에서 글을 읽고 인스턴트 클라이언트를 설치했는데 오류가 계속 발생합니다.다음은 전체 오류 스택입니다.

************** Exception Text **************
System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an 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.OracleConnection..cctor()
   --- End of inner exception stack trace ---
   at Oracle.DataAccess.Client.OracleConnection..ctor(String connectionString)
   at Employees1.frmLogin.oralogin()
   at Employees1.frmLogin.btnTest_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
API Data Conversion Assistant
    Assembly Version: 0.0.0.1
    Win32 Version: 0.0.0.1
    CodeBase: file:///C:/Documents%20and%20Settings/3i/My%20Documents/My%20Dropbox/Sathya's%20dropbox/VisualStudio%20Releases/APIDataconversion/Application%20Files/API%20Data%20Conversion%20Assistant_0_0_0_3/API%20Data%20Conversion%20Assistant.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Oracle.DataAccess
    Assembly Version: 2.102.2.20
    Win32 Version: 2.102.2.20

내가 애플리케이션을 개발한 기계에 오라클 11g이 설치되어 있고, 거기서는 잘 작동하지만, 타겟 기계에서는 이 오류가 발생합니다.어떤 입력이든 감사합니다.

PS: 위에서 언급한 바와 같이 Oracle을 참조합니다.DataClient.dll 파일 버전은 11g이 아닌 10gR2에 해당합니다.

저는 이 문제를 더 자세히 조사해 보았는데, 당신은 다운로드된 동일한 버전의 ODP에서 모든 적절한 DLL을 가져오기만 하면 됩니다.ODP를 사용하기 때문에 인터넷을 사용하여 Exe 파일과 동일한 폴더에 저장합니다.Net은 버전 번호를 섞지 않는 것에 대해 까다로우며, 이는 당신이 보고 있는 문제입니다(그것이나 oci.dll이 완전히 누락되어 있으며, 이 경우 짜증나게도 동일한 오류를 발생시킵니다).

이 작업을 수행하는 방법에 대해 설명했습니다. http://splinter.com.au/using-the-new-odpnet-to-access-oracle-from-c 하지만 요점은 다음과 같습니다.

  • http://www.oracle.com/technology/software/tech/windows/odpnet/index1110710beta.html 다운로드
  • 파일 압축 풀기
  • 모든 JAR의 압축을 풉니다.
  • 방금 압축을 푼 dll을 가져옵니다. oci.dll('oci.dll.dbl'에서 이름 변경) Oracle.DataAccess.dll 또는 aociicus11.dll OraOps11w.dll 또는 annzsbb11.dll 또는 aocci11.dllociw32.dll('ociw32.dbl'에서 이름 변경)
  • 모든 DLL을 C# 실행 파일과 동일한 폴더에 저장

클라이언트 시스템에서 ODBC 관리자를 사용하여 연결을 생성하고 성공적으로 테스트했습니까?

이 오류를 발생시키는 9i 및 10g 클라이언트에 사용 권한 문제에 대한 패치아웃이 있습니다.10.2.0.1에 있는 경우 이 문제를 해결하려면 10.2.0.3으로 업그레이드해야 할 수 있습니다.

저는 제 앱이 Ole DB(시스템)를 사용하도록 만들었습니다.Data.Oldb 네임스페이스 ) 연결이며, 잘 작동합니다.앱이 Oracle SP를 호출하기 위한 프런트 엔드일 뿐이고 반환되는 값이 없다는 점을 고려하면, 이 접근 방식은 허용 가능한 접근 방식이라고 생각합니다. 이틀 동안 이 문제에 대한 해결책을 찾느라 노력했지만 앱에서 훨씬 더 많은 개발을 완료할 수 있었기 때문입니다.앞으로 이러한 애플리케이션에 대해 어떤 실수를 저지르는지 알 수 있기 때문에 여전히 답변을 기다리고 있습니다.

저도 같은 문제에 부딪혔습니다.11g 클라이언트를 컴퓨터에 설치한 경우 11g ODP를 사용해야 합니다.Net DLL.저는 모든 것을 완전히 제거한 다음 11g 클라이언트를 설치하고 11g ODP를 설치해야 했습니다.NET 드라이버.운전자들이 GAC에 설치되고, 그것은 일종의 고통이 될 것입니다.

*참고로 DBA는 9i 미만 버전에 연결할 필요가 없는 경우에만 이 기능이 작동하는 것으로 알고 있습니다*

서버에서도 이 작업을 수행해야 했습니다.

HTH

적절한 Oracle Client 버전을 설치한 후에도 어떤 버전이 있는지 확인해야 합니다.Net Framewark가 ODP 서버에 설치됩니다.Net은 에 지원합니다.Net Framework 3.5 - 4.5.2.

언급URL : https://stackoverflow.com/questions/1250644/the-provider-is-not-compatible-with-the-version-of-oracle-client-error-when-usin

반응형