Ist ODP.NET für Oracle 11g Client erforderlich?

8

Ich kann hier die falsche Frage stellen, ich bin bereit, sie zu ändern, wenn das so ist.

Ich habe ein Projekt, das den Microsoft.NET-Oracle-Provider verwendet (unser Plan ist es, zu ODP zu wechseln, aber wir haben das noch nicht getan).

Ich versuche, dieses Projekt auf einem Windows 2008 (x64) -Build-Server aufzubauen. Es ist in Ordnung, aber unsere Komponententests schlagen fehl, wenn sie auf die Oracle-Datenbank stoßen.

Ich hatte ursprünglich den 32bit oracle 9i client installiert, den wir derzeit auf unseren winxp-dev-Boxen und dem vorherigen Build-Server 2003 verwenden. Aber jetzt erhält dies eine Nachricht wie: Versuch, Oracle-Client-Bibliotheken zu laden, warf BadImageFormatException. Dieses Problem tritt bei dem Ausführen in dem 64-Bitmodus mit den 32-Bit Oracle-Client-Komponenten auf, die installiert werden.

Wir haben versucht, auf die x86-Plattform zu kompilieren, aber das hat die Fehlermeldung nicht geändert.

Ich habe jetzt den 11g 64 Bit Client installiert, aber ich bekomme eine Nachricht, dass System.Data.OracleClient Oracle Client Software Version 8.1.7 oder höher benötigt.

Also, welche Oracle-Installation sollte ich verwenden?

Bearbeiten:

Ich konnte das zur Arbeit bringen. Es stellte sich heraus, dass das Testen das Problem verursachte, indem NUnit gezwungen wurde, im 32-Bit-Modus zu laufen: Ссылка Ich konnte die Tests mit dem alten 32-Bit-Treiber durchführen. Dies wäre eine beschissene Antwort auf die Frage, also benutze ich sie nicht, sondern gebe gerne die richtige Antwort an alle, die gute Informationen über den Übergang zu Oracle 64-Bit-Treibern machen.

    
Jeff Martin 21.07.2009, 16:17
quelle

6 Antworten

9

Wenn es um Oracle geht, verwende ich gerne Oracle Instant Client :

  • Sie müssen nichts auf den Zielmaschinen installieren (einschließlich Dev-Boxen!).
  • Sie können sicherstellen, dass Ihre Anwendung mit dem ausgewählten Client ausgeführt wird.
  • Sie können sogar problemlos mehrere Anwendungen mit verschiedenen Client-Versionen auf demselben Computer ausführen lassen.
  • Ein Nachteil ist, dass es Ihrer Anwendung ein beträchtliches Gewicht hinzufügt (~ 19 MB Minimum).

Überprüfen Sie Wie hoch ist der minimale Client-Footprint, der für die Verbindung von C # mit einer Oracle-Datenbank erforderlich ist? für weitere Informationen. Um zu wissen, wie man ein Visual Studio-Projekt einrichtet, das sowohl auf x86- als auch auf x64-Rechnern läuft, überprüfe meinen Blogbeitrag Oracle Instant Client in Visual Studio .

    
Mac 27.08.2009, 13:54
quelle
3

Ich füge eine neue Antwort hinzu, seit diesem Herbst (2012) ist der ODP Managed Code Beta verfügbar. Weitere Informationen finden Sie unter diesen Link . Es ist für uns sehr stabil und wir verwenden es in der Produktion, hauptsächlich aus diesen Gründen:

  • Keine Installation (außer für Entity-Framework, für das eine einfache Registrierung erforderlich ist)
  • Es ist kleiner als die nicht verwaltete Version, der Footprint beträgt ca. 6 MB.
  • Es ist NICHT "bitsensitiv", dh jede CPU wird endlich mit ODP arbeiten:)
  • Mehr intuitive Zuordnung von C # -Typen & lt; - & gt; Oracle-Typen (und es hat einige Probleme mit EF und Modellgenerierung aus der Datenbank gelöst)
  • Unterstützt EZCONNECT (alle Versionen des nicht verwalteten ODP nicht), dh keine tnsnames.ora mehr.

Aber für den Übergang auf 64 Bit, laden Sie den verwalteten ODP-Treiber und ändern Sie die% Co_de% -Referenz auf Oracle.DataAccess und rekompilieren Sie:)

    
flindeberg 21.12.2012 09:22
quelle
1

Ich denke, die Nachricht "System.Data.OracleClient erfordert Oracle-Client-Software Version 8.1.7 oder höher" ist ähnlich wie "Oracle-Client nicht installiert, installiert, aber nicht gefunden oder installiert, aber es wird benötigt 8.1.7 oder höher ".

Überprüfen Sie bei regedit, ob die Werte direkt unter dem Schlüssel liegen:

%Vor%

Wo OraOdac11g_home1 von dem Oracle Home-Namen für Ihre Installation abhängt.

Versuchen Sie auch, eine Verbindung über Visual Studio herzustellen, um zu sehen, ob es möglich ist.

    
FerranB 21.07.2009 21:46
quelle
1

Ich hatte ein Problem, das sich auf das beziehen könnte, was Sie sehen.

Ich hatte ursprünglich nur den Oracle 10g Client auf meinem Rechner installiert und die .Net Oracle.DataAccess Component Versionsnummer war 10.2.0.100 - das war für .Net Runtime v1.0.3705

Ich habe ODP.Net installiert und die Oracle.DataAccess-Komponente Version ist jetzt v2.102.2.20 und läuft auf .Net-Laufzeit v2.0.50727 - ich kann den Hinweis nicht finden, warum Oracle das getan hat - es hatte etwas damit zu tun Versionsnummern in Übereinstimmung mit der Laufzeitversion bringen

Ich habe einen Tag gebraucht, um das auszuarbeiten. Wir benutzen den 11g Klienten noch nicht und ich habe den 8i Klienten seit Alter nicht benutzt, also weiß ich nicht, was die Versionszahlen für diese Klienten sein würden, aber ich würde es überprüfen, wenn ich Sie was wäre.

Kurz gesagt, Oracle hat die Versionsnummern der Komponenten zurückverfolgt, was dazu führen kann, dass Ihre 11g-Komponente im Gegensatz zu Oracle 8i-Komponenten nicht mehr aktuell ist

    
Chris Gill 19.08.2009 14:46
quelle
0

Ich habe viele Male gefunden, dass der Fehler "Oracle Client Software Version 8.1.7 oder höher erfordert" ein notorisch irreführender Fehler ist. Aus dem fernen Speicher scheint ich mich zu erinnern, dass dies normalerweise ein Datei-IO-Berechtigungsproblem anzeigt. Ich denke, es kann sein, dass der ASP.NET-Arbeitsprozess (oder die Identität, unter der eine Anwendung ausgeführt wird) eine Art Lese- oder Schreibberechtigung für einen Ordner in der Oracle-Client-Ordnerhierarchie erfordert ...

    
rohancragg 21.07.2009 19:05
quelle
0

Dies kann eine Ursache für mehrere Orakelhäuser in der Umwelt sein. Entfernen Sie die ältere Version von oracle home in Ihrem Build-System. Versuchen Sie, den Build erneut mit dem Single-Home zu erstellen. Es gibt einige Probleme mit 9i-Version ODP.NET und 10G / 11G-Konnektivität

    
Govind 22.07.2009 03:45
quelle

Tags und Links