none
Möglichkeiten vom Einbinden des Oracle Clients. RRS feed

  • Frage

  • Hallo Liebe Gemeinschaft

    Ich bin gerade am Testen ob man die .dll vom Oracle Client in men Project einbinden kann.

    Ausgangssituation:
    1. Windows Forms mit VS 2013 Pro
    2. Oracle 12 Client Home 32Bit
    3. SAPdnConnector

    Meine Frage ist:
    Wie sit es möglich/Ist es Überhaupt mäglich die benötigten Dateien ohne Installation des Oracle Clients zu verwirklichen?

    Bereits Probiert:
    Die Oracle.ManagedDataAccess.dll Ins Project einzubinden. Leider weis ich (noch) nicht was ich übersehen habe.
    Vielleicht hat ja wer eine gute Anleitung (Englisch/Deusch ist egal), falls ich wieder auf so ein ähnliches Problem stoße dieses effizient zu  lösen.

    Mittwoch, 4. Mai 2016 06:38

Antworten

  • Hallo Loki,

    ich würde auf jeden Fall auch noch die DTC DLL mit kopieren. Die wird benötigt, sobald verteilte Transaktionen benötigt werden. Und die Aussage der Dokumentation ist auf jeden Fall, dass diese auch aus dem Programmverzeichnis geladen werden kann.

    Solange keine verteilte Transaktionen verwendet werden, ist es egal, aber wenn im Rahmen von der weiteren Entwicklungsarbeit sowas benutzt wird, funktioniert es sonst nicht (bzw. es funktioniert ggf. auf Systemen, bei denen ODP.Net auch installiert wurde und auf Systemen ohne knallt es dann.

    Es schadet ja nicht, die paar Dateien noch mitzunehmen.

    Und ich würde darauf achten, dass die Assemblies für eine Ziel Architektur kompiliert sind. Denn die DLL gibt es für 32 und 64 bit. Wenn Du nun deine Assemblies für "Any CPU" kompilierst, dann funktioniert es solange, wie die Architektur genau die ist, für die Du die DLL mitgeben hast. Also wenn das die x64 version ist, dann würde ich die Assembly auch für X64 kompilieren.

    Viele Grüße,

    Konrad

    • Als Antwort markiert Loki_1984 Mittwoch, 25. Mai 2016 11:57
    Donnerstag, 19. Mai 2016 15:37
  • Hallo Ihr Lieben

    Ich habe eine Unkonventionelle Lösung gefunden.
    Vielleicht habt ihr noch Inspiration wie es "Besser" geht.

    Ich habe die
    OracleManagedDataAccess.dll eingebunden
    und die
    tnsnames.ora ins Programmverzeichniss kopiert.

    Damit läuft alles ohne den Oracle Client zu installieren.

    LG

    Loki aka Gandalf

    • Als Antwort markiert Loki_1984 Donnerstag, 19. Mai 2016 12:44
    Donnerstag, 19. Mai 2016 12:44

Alle Antworten

  • Hallo Loki,

    ohne Installation funktioniert ein Oracle Treiber nicht, denn neben der managed Treiber DLL kommt da noch einiges mehr zu. Siehe Installing Oracle Data Provider for .NET, Managed Driver.

    Gruß Elmar


    Mittwoch, 4. Mai 2016 07:13
    Beantworter
  • Hallo zusammen!

    Also das ODP.Net braucht keinen Oracle Client mehr. Das ODP.Net alleine reicht aus. Und die Installation ist ja auch "nur" ein Copy der Dateien + die Registrierung.

    Gerade der Link von Elmar besagt ja auch nichts anderes. Bei distributed transactions wird die DTC DLL noch benötigt und diese wird explizit auch aus dem lokalen Verzeichnis geladen und muss daher nicht im GAC sein.

    Zur IOP und zur EntityFramework DLL gibt es diesbezüglich keine Aussagen, aber wenn dies managed DLLs sind, dann sollte da auch das Gleiche gelten.

    Das Problem, welches ich sehe ist nur die Auflösung von 32 und 64 bit. Du kannst halt nur das eine oder das andere hinterlegen und nicht beide. Daher musst Du genau wissen, auf was für einer Architektur Du aufgerufen wirst. Dann sollte das aber eigentlich problemlos funktionieren. (Aber das ist jetzt natürlich ungetestet!)

    Es werden noch Einträge in der machine.config erwähnt, aber wir haben für die Installation von ODP.Net unser eigenes Paket gebaut und da bin ich mir recht sicher, dass wir nur die DLLs im GAC registriert haben und sonst nichts gemacht haben. Aber das müsste ich ggf. noch nachprüfen (Wobei es ja kein Thema sein sollte, dass man sich das configure script einmal anschaut oder einfach laufen lässt und die machine.config vorher und nachher vergleicht.

    Wenn Du da etwas  versucht hast: Was für Fehler hast Du denn bekommen? Welche Klassen wurden nicht gefunden? Was genau hast Du gemacht? Ich habe jetzt hier keine Möglichkeit, das selbst zu testen.

    Viele Grüße,

    Konrad

    Mittwoch, 4. Mai 2016 07:37
  • Hallo zusammen,

    schaut man sich die configure.bat an, die auch in der Anleitung erwähnt wird, so übernimmt die den wesentlichen Teil der Installation. Dazu kämen noch die Netzwerk-Konfiguration; da finden sich zwei Beispieldateien.

    Gruß Elmar

    Mittwoch, 4. Mai 2016 09:06
    Beantworter
  • Hallo Ihr Lieben

    Ich habe eine Unkonventionelle Lösung gefunden.
    Vielleicht habt ihr noch Inspiration wie es "Besser" geht.

    Ich habe die
    OracleManagedDataAccess.dll eingebunden
    und die
    tnsnames.ora ins Programmverzeichniss kopiert.

    Damit läuft alles ohne den Oracle Client zu installieren.

    LG

    Loki aka Gandalf

    • Als Antwort markiert Loki_1984 Donnerstag, 19. Mai 2016 12:44
    Donnerstag, 19. Mai 2016 12:44
  • Hallo Loki,

    dabei musst Du aufpassen, dass nicht DTC oder Kerberos zum Tragen kommen. Die beiden verwenden unmanaged plattformabhängige DLLs - siehe Beschreibung im bereits genannten Link.

    Gruß Elmar

    Donnerstag, 19. Mai 2016 14:13
    Beantworter
  • Hallo Loki,

    ich würde auf jeden Fall auch noch die DTC DLL mit kopieren. Die wird benötigt, sobald verteilte Transaktionen benötigt werden. Und die Aussage der Dokumentation ist auf jeden Fall, dass diese auch aus dem Programmverzeichnis geladen werden kann.

    Solange keine verteilte Transaktionen verwendet werden, ist es egal, aber wenn im Rahmen von der weiteren Entwicklungsarbeit sowas benutzt wird, funktioniert es sonst nicht (bzw. es funktioniert ggf. auf Systemen, bei denen ODP.Net auch installiert wurde und auf Systemen ohne knallt es dann.

    Es schadet ja nicht, die paar Dateien noch mitzunehmen.

    Und ich würde darauf achten, dass die Assemblies für eine Ziel Architektur kompiliert sind. Denn die DLL gibt es für 32 und 64 bit. Wenn Du nun deine Assemblies für "Any CPU" kompilierst, dann funktioniert es solange, wie die Architektur genau die ist, für die Du die DLL mitgeben hast. Also wenn das die x64 version ist, dann würde ich die Assembly auch für X64 kompilieren.

    Viele Grüße,

    Konrad

    • Als Antwort markiert Loki_1984 Mittwoch, 25. Mai 2016 11:57
    Donnerstag, 19. Mai 2016 15:37
  • Hallo Konrad

    Danke für dein Feedback.

    ich Habe das Project auf 32Bit Konzipiert und dementsprechend auch die 32Bit dll verwendet.

    Ich werde deiner Empfehlung folgen und die DTC dll auch mit ins Verzeichnis packen. Weil wie du sagst mann weis noch nicht wo das Projekt endet (Du weist ja wis ist, Jeder will Alles, ein Hoch auf die Spirale).

    LG

    Loki aka Gandalf


    • Bearbeitet Loki_1984 Mittwoch, 25. Mai 2016 11:59 Tastatur Spackt
    Mittwoch, 25. Mai 2016 11:57