Wie Sie bestimmen die version von "Oracle.DataAccess.dll" zu gehören
Während die Bereitstellung von meine .NET 3.5 Windows form, die in verschiedenen Umgebungen wir liefen eine Menge von ungültigen Probleme mit dem Anbieter.
Funktioniert es bei einigen und nicht an anderen arbeiten.
Könnte mir bitte jemand helfen, wie kann ich feststellen, welche version von "Oralce.DataAccess.dll" zu verwenden, D. H. 9 oder 10 oder 11 oder 9,1.* oder 10.1.* oder 11.* oder 12 etc.
-
Kommt es auf dem server wo ich bin der Installation einer Anwendung? ODER
-
Hängt es ab, back-end-oracle-Datenbank?
- Was genau meinen Sie mit Fragen und, dass es nicht funktioniert? Welche Fehler treten hierbei auf? Ist die application server auf derselben Maschine wie der Datenbankserver oder tun Sie installieren Oracle-client auf dem Anwendungsserver?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich, die zweite Vorstellung mit der 100% managed provider. Es entfällt die Notwendigkeit, zu wissen, details, die ich bin, zu diskutieren. Das einzige Problem hier ist, ich glaube, müssen Sie möglicherweise ein upgrade durchführen wollen .net 4.0.
TLDR Version:
Vollversion:
Ersten, können Sie sicherstellen, dass wir verstehen, die Komponenten der alten unmnaged-provider (nicht der neue 12c 100% managed provider). Es besteht aus zwei teilen:
Einfach gesagt, Oracle.DataAccess.dll ist fast nur ein wrapper, es zu übersetzen .net-Anweisungen in ORACLE-NET-Anweisungen für die nicht verwalteten client.
Sagte, dass, wenn Sie Last Oracle.DataAccess gibt es eine Reihenfolge, in der Sie versucht, suchen Sie die nicht verwaltete client-dlls, die es braucht. Aus der Oracle-Dokumentation:
Diese kommt ins Spiel, wenn Sie mehr als einen client auf dem Rechner installiert, so könnte dies Teil des Problems. Wenn ja, ist die einfache Sache zu tun ist, verwenden Sie die: dllPath Konfigurations-Variablen in deiner config:
Nun, um Ihre Frage zu beantworten direkt - ich glaube nicht, dass Oracle unterstützt nicht übereinstimmende Oracle.DataAccess.dll mit client (zumindest nicht rückwärts). Ihre beste Wette ist entweder zu installieren ODP.net mit Ihrer app installieren - die xcopy-version ist die kleinste und enthält das "instant client", Oder, sollten Sie denken über die system-Mindestanforderungen - ie. Das system muss mindestens die version X von odp.net installiert. Sie könnten dann das kompilieren gegen die minimale dll und verlassen Sie sich auf publisher-Politik Umleitung, wenn ein target-system wurde eine NEUERE version des client.
Natürlich auch aufgefordert, mich zu Fragen, über Architektur. Planen Sie auf Aufforderung des Benutzers für die Oracle-Konto? Wenn nicht, haben Sie, vorsichtig zu sein, wie Sie schützen den shared-service-Konto, das Ihre Anwendung verwenden. Sie können es besser telefonieren zu einem webservice, der macht das Orakel fordert die Kunden Auftrag - geben Sie eine weitere security-Schicht und vereinfachen Sie Ihre client-Bereitstellung.
Meisten version ODP.net rückwärts kompatibel mit dem Datenbank-server - Sie können sicherlich mit dem 11g-Anbieter mit einer 10g-Datenbank.
Zunächst eine Klarstellung:
Sie haben eine Oracle-Datenbank Server (Sie nannte es "back-end-oracle-Datenbank") und eine Oracle - Client (egal, ob diese installiert ist, auf eine Anwendung server, aus Oracle-Sicht, es ist der client)
Die version von ODP.NET (Oracle Data Provider für .NETTO, D. H. die Oracle.DataAccess.dll und einige weitere Dateien) definiert werden, indem Sie die Oracle-Client. Sie können fast jeden ODP.NET version zu verbinden, um jede Oracle Datenbank version - mehr oder weniger.
Die Fehlermeldung "Der Anbieter ist nicht kompatibel mit der version von Oracle client" könnte auch bedeuten, es gibt keine ODP.NET Anbieter installiert ist. In diesem Fall die Fehlermeldung ist in der Tat ein wenig irreführend. Also, zuerst prüfen, ob ODP.NET installiert ist, ist es nicht zum standard-Lieferumfang des Oracle Instant-Client-installation.
Wenn ich alle verfügbaren downloads von Oracle-Sie haben ODP.NET version
9.? und 10.? bezieht sich auf die version von Oracle, 1.x, 2.0 und 4.0 bezieht sich auf die version von Microsoft .NET Framwork (seltsame Nummerierung, aber das ist, wie es ist). Version 9.? und 10.? sind sehr alt, ich glaube nicht, dass es keinen Sinn macht, Sie zu benutzen. 1.x unterstützt wurde, bis Oracle-client version 11.1.
Version 1.x und 2.0 sind nicht kompatibel zueinander, d.h. perhpaps Sie haben, um zwei verschiedene setup-Dateien Ihrer Anwendung an Ihren Kunden und hat der Kunde wählen Sie die richtige ist, abhängig von seiner lokalen oracle-client-installation.
Ich weiß nicht, die situation für 2.0 oder 4.0, die ich noch nie verwendet, 4.0 so weit.
Es ist nicht erforderlich, um eine lokale Kopie des Oralce.DataAccess.dll in Ihr Anwendungsverzeichnis. Es wird von GAC (Global Assembly Cache), wo es installiert ist.
In Ihrer Entwicklung, Sie müssen nur darauf achten, nur diese Bürgermeister-version, z.B. 2.0.
Dann ist dein loal GAC weiß aufgrund von policy-Dateien, die genaue version geladen wird, z.B. 2.0.10.2.0.2.20 oder 2.0.11.1.0.6.20 oder 2.0.11.1.0.7.20 oder 2.0.11.2.0.1.2 oder was auch immer.
Oben auf dieser alles, was Sie haben, um zu wissen, ob Ihre Oracle-client (32bit oder 64bit) und beinhalten ODP.NET entsprechend.
Hier können Sie weitere Informationen erhalten: Oracle Data Provider für .NET-FAQ
wenn Sie client-oder oracle-Instanz in Ihrem system installiert. überprüfen Sie die Ordner-Namen
ORACLE_HOME\product\11.2.0\dbhome_1\ODP.NET\bin\2.x
hier finden Sie die Datei - Oracle.DataAccess.dll
gehören einfach in Ihre reference.
In der Tat glaube ich, es gibt keine richtige Antwort.
Es hängt alles von der Prozessor-Architektur (also bits) die Anwendung läuft mit der version des OCI-client, den Sie verwenden, etcetera.
Fand ich es sinnvoll, wickeln Sie die Oracle-Interaktion in einer Klasse, mit der Spiegelung zu finden, die verfügbare version zu verwenden.
Bezüglich der Versionsnummer: die version des ODP.net Baugruppen müssen mit denen der OCI-client-installation. Es ist eine schlechte Idee, zu mischen, 12.* OCI client mit der 10.* ODP.net Baugruppen.
Vielleicht dieser Artikel ist auch nützlich für Sie.
Wenn Ihr Oracle-server version 10.2 oder höher, kann man einfach mithilfe des verwalteten ODP.NET version, die kam, verfügbar mit Oracle 12.
Anscheinend ist es eine Abhängigkeit, unter 10 MB. Sollte es der Bereitstellung Ihrer Anwendung auf verschiedene Systeme viel einfacher im Vergleich zu den ODP.NET Versionen, hängt von Oracle (instant) Client. Es sollten auch vermeiden, dass Sie die Pflege über alle installierten Oracle-Client.
Aber, Sie nicht zu erwähnen, es funktioniert auf "die neueste version des .NET Framework 4.5.1", also von dem, was ich verstehe, müssen Sie aktualisieren Sie Ihre Anwendung 4.5.1, vielleicht ist das aber auch nur, wenn Sie verwenden möchten, die bestimmte Funktionen (wie das Entity Framework-Unterstützung).
http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
Manchmal hat man das
Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies.
in der Erwägung, dass Sie das Recht haben, die dll und das problem ist irgendwo anders.Es mir passieren (und dieses Thema hat mir sehr geholfen, um es herauszufinden) und es war die Konfiguration meiner Anwendungspool in IIS, wer würde nicht zulassen, dass 32 bit-Anwendungen (erweiterte Einstellungen).