71 Stimmen

Was ist der minimale Client-Footprint, der erforderlich ist, um eine Verbindung zwischen C# und einer Oracle-Datenbank herzustellen?

Ich habe erfolgreich eine Verbindung zu einer Oracle-Datenbank (10g) von C# (Visual Studio 2008) durch Herunterladen und Installieren der Client-Administrations-Tools und Visual Studio 2008 auf meinem Laptop.

Die Installation der Oracle Client Tools war über 200 MB groß und ziemlich langwierig.

Weiß jemand, was die minimale praktikable Grundfläche ist? Ich hoffe, dass es eine einzige DLL und ein Register-Befehl ist, aber ich habe das Gefühl, dass ich ein Oracle-Home installieren und verschiedene Umgebungsvariablen setzen muss.

Ich verwende Oracle.DataAccess in meinem Code.

22 Stimmen

Als Oracle-Neuling war es auch für mich ein Alptraum, alle benötigten Komponenten und Bibliotheken zu finden und zu installieren. Ich kann nicht verstehen, wie Oracle so einen "mittelmäßigen" Support für .NET-Entwickler nicht anbieten konnte...

0 Stimmen

@ecoe Danke, dass Sie diese Frage erneut aufgreifen. Deine Antwort stackoverflow.com/a/26469797/6910 scheint bisher der kleinste Fußabdruck zu sein.

4 Stimmen

@splattne: Fühlen Sie sich nicht schlecht, Oracle stellt allen Entwicklern und Kunden mittelmäßige Software zur Verfügung.

15voto

kol Punkte 26274

Ich verwende die von Pandicus oben vorgeschlagene Methode unter Windows XP, mit ODAC 11.2.0.2.1. Die Schritte sind wie folgt:

  1. Laden Sie das Paket "ODAC 11.2 Release 3 (11.2.0.2.1) mit Xcopy Deployment" von oracle.com herunter (53 MB) und entpacken Sie das ZIP.
  2. Sammeln Sie die folgenden DLLs: oci.dll (1 MB), oraociei11.dll (130 MB!), OraOps11w.dll (0,4 MB), Oracle.DataAccess.dll (1 MB). Der Rest kann gelöscht werden, und es muss nichts installiert werden.
  3. Fügen Sie einen Verweis auf Oracle.DataAccess.dll hinzu, fügen Sie using Oracle.DataAccess.Client; in Ihren Code einfügen und Sie können nun Typen wie OracleConnection , OracleCommand y OracleDataReader um auf eine Oracle-Datenbank zuzugreifen. Siehe die Klassendokumentation für Details. Es besteht keine Notwendigkeit, die Konfigurationsdatei tnsnames.ora zu verwenden, nur die Verbindungszeichenfolge muss richtig eingestellt sein.
  4. Die oben genannten 4 DLLs müssen zusammen mit Ihrer ausführbaren Datei bereitgestellt werden.

15voto

ecoe Punkte 4486

Ab 2014 ist der OPD.NET, Managed Driver der kleinste Footprint.

Hier ist ein Vergleich der Codeverwendung mit den nicht verwalteten Versionen, die in früheren (veralteten) Antworten vorgeschlagen wurden: http://docs.oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148

Sie müssen diese DLLs herunterladen und referenzieren Oracle.ManagedDataAccess.dll in Ihrem Projekt: Laden Sie die ODP.NET, nur Managed Driver Xcopy Version

Hier ist ein typischer Fußabdruck, den Sie zusammen mit Ihrer Veröffentlichung verpacken müssen:

  1. Oracle.ManagedDataAccess.dll
  2. Oracle.ManagedDataAccessDTC.dll

alles zusammen, ein . 6,4 MB für .Net 4.0.

14voto

Fidel Punkte 6363

Auf diese Weise können Sie sich mit ODP.net verbinden, indem Sie 5 weiterverteilbare Dateien von Oracle verwenden:

Chris' Blogeintrag: Verwendung des neuen ODP.Net für den Zugriff auf Oracle von C# aus mit einfacher Bereitstellung

Edit: Für den Fall, dass der Blog einmal ausfällt, hier eine kurze Zusammenfassung...

  • oci.dll
  • Oracle.DataAccess.dll
  • oraociicus11.dll
  • OraOps11w.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • ociw32.dll

stellen Sie sicher, dass Sie ALLE DLLs aus derselben ODP.Net / ODAC-Distribution beziehen, um Versionsnummernkonflikte zu vermeiden, und legen Sie sie alle in denselben Ordner wie Ihre EXE

8voto

DevArt http://www.devart.com/ , ehemals CoreLab (crlab.com), bietet einen reinen C#-Oracle-Client. Das ist eine einzelne dll, und es funktioniert gut.

5voto

DavidRR Punkte 16458

Hier ist ein Update für Oracle 11.2.0.4.0 . Ich hatte Erfolg mit dem folgenden Verfahren bei Windows 7 mit System.Data.OracleClient .

1. Herunterladen Instant Client-Paket - Basic Lite : Windows 32-Bit o 64-Bit .

2. Kopieren Sie die folgenden Dateien an einen Ort in Ihrem Systempfad:

32-Bit

 1,036,288  2013-10-11  oci.dll
   348,160  2013-10-11  ociw32.dll
 1,290,240  2013-09-21  orannzsbb11.dll
   562,688  2013-10-11  oraocci11.dll
36,286,464  2013-10-11  oraociicus11.dll

64-Bit

   691,712  2013-10-09  oci.dll
   482,304  2013-10-09  ociw32.dll
 1,603,072  2013-09-10  orannzsbb11.dll
 1,235,456  2013-10-09  oraocci11.dll
45,935,104  2013-10-09  oraociicus11.dll

3. Konstruieren Sie eine Verbindungszeichenfolge, die entfällt die Notwendigkeit für tnsnames.ora .

(Siehe Beispiele im Testprogramm unten).

4. Führen Sie dieses minimale C#-Programm aus, um Ihre Installation zu testen:

using System;
using System.Data;
using System.Data.OracleClient;

class TestOracleInstantClient
{
    static public void Main(string[] args)
    {
        const string host = "yourhost.yourdomain.com";
        const string serviceName = "yourservice.yourdomain.com";
        const string userId = "foo";
        const string password = "bar";

        var conn = new OracleConnection();

        // Construct a connection string using Method 1 or 2.
        conn.ConnectionString =
            GetConnectionStringMethod1(host, serviceName, userId, password);

        try
        {
            conn.Open();
            Console.WriteLine("Connection succeeded.");
            // Do something with the connection.
            conn.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine("Connection failed: " + e.Message);
        }
    }

    static private string GetConnectionStringMethod1(
        string host,
        string serviceName,
        string userId,
        string password
        )
    {
        string format =
            "SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" +
            "(HOST={0})(PORT=1521))" +
            "(CONNECT_DATA=(SERVER=DEDICATED)" +
            "(SERVICE_NAME={1})));" +
            "uid={2};" +
            "pwd={3};"; // assumes port is 1521 (the default)

        return String.Format(format, host, serviceName, userId, password);
    }

    static private string GetConnectionStringMethod2(
        string host,
        string serviceName,
        string userId,
        string password
        )
    {
        string format =
            "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" +
            "(HOST={0})(PORT=1521))" +
            "(CONNECT_DATA=(SERVER=DEDICATED)" +
            "(SERVICE_NAME={1})));" +
            "User Id={2};" +
            "Password={3};"; // assumes port is 1521 (the default)

        return String.Format(format, host, serviceName, userId, password);
    }
}

Letzter Tipp: Wenn Sie die Fehlermeldung "System.Data.OracleClient erfordert Oracle Client Software Version 8.1.7" siehe diese Frage .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X