Was ist die minimale Client Stellfläche erforderlich C # zu einer Oracle-Datenbank zu verbinden?

StackOverflow https://stackoverflow.com/questions/70602

  •  09-06-2019
  •  | 
  •  

Frage

Ich habe erfolgreich zu einer Oracle-Datenbank (10 g) von C # (Visual Studio 2008) durch das Herunterladen und die Installation der Client-Verwaltungstools und Visual Studio 2008 auf meinem Laptop verbunden ist.

Die Installation Stellfläche für Oracle Client Tools war über 200 MB, und ziemlich langatmig.

Wer weiß, was die minimale praktikable Fußabdruck ist? Ich hoffe, dass es eine einzige DLL und ein Register-Befehl, aber ich habe das Gefühl, ich brauche ein Orakel zu Hause installieren und verschiedene Umgebungsvariablen gesetzt.

Ich bin mit Oracle.DataAccess in meinem Code.

War es hilfreich?

Lösung

Sie benötigen einen Oracle-Client zu einer Oracle-Datenbank zu verbinden. Der einfachste Weg ist die Oracle Data Access Components zu installieren .

, um den Platzbedarf zu minimieren, schlage ich vor, wie folgt vor:

  • Verwenden Sie den Microsoft-Provider für Oracle (System.Data.OracleClient), die Schiffe mit dem Rahmen.
  • Laden Sie die Oracle Instant Client Package - Grund Lite: das ist eine ZIP-Datei mit (fast) dem absoluten Minimum. Ich empfehle Version 10.2.0.4, die als Version 11.1.0.6.0 viel kleiner ist.
  • Entpacken Sie die folgenden Dateien in einem bestimmten Ordner:
    • v10:
      • oci.dll
      • orannzsbb10.dll
      • oraociicus10.dll
    • v11:
      • oci.dll
      • orannzsbb11.dll
      • oraociei11.dll
  • Auf einer x86-Plattform, fügen Sie den CRT-DLL für Visual Studio 2003 (msvcr71.dll) in diesen Ordner, wie Oracle Jungs zu vergessen: lesen Sie ...
  • Fügen Sie diese Ordner in die Umgebungsvariable PATH.
  • Verwenden Sie die Easy Connect Naming Methode in Ihrer Anwendung erhalten von der berüchtigten TNSNAMES.ORA Konfigurationsdatei befreien. Es sieht wie folgt aus:. sales-server:1521/sales.us.acme.com

Dies entspricht etwa 19Mb (v10).

Wenn Sie nicht über die gemeinsame Nutzung dieser Ordner zwischen mehreren Anwendungen ist es egal, eine Alternative wäre, die oben genannten DLLs zusammen mit der Anwendung Binärdateien zu versenden sein, und lassen Sie die PATH Schritt zu setzen.

Wenn Sie unbedingt verwenden müssen Sie den Oracle-Provider (Oracle.DataAccess), benötigen Sie:

  • ODP .NET 11.1.0.6.20 (die erste Version, die angeblich mit Instant Client arbeitet).
  • Instant Client 11.1.0.6.0, natürlich.

Beachten Sie, dass ich nicht diese neueste Konfiguration getestet haben ...

Andere Tipps

Ab 2014 die OPD.NET, Managed-Treiber ist die kleinste Stellfläche.

Hier ist ein Code Nutzungs Vergleich zu den nicht verwalteten Versionen, die vorherigen (veraltet) Antworten vorgeschlagen: http://docs.oracle.com/cd/E51173_01/win.122/ e17732 / intro005.htm # ODPNT148

Sie müssen diese DLLs und Referenz Oracle.ManagedDataAccess.dll in Ihrem Projekt zum Download: Laden Sie die ODP.NET, Managed-Treiber Xcopy Version nur

Hier ist ein typisches Fußdruck müssen Sie mit Ihrem Release verpacken:

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

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

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

  1. Laden Sie die "ODAC 11.2 Release 3 (11.2.0.2.1) mit Xcopy Bereitstellung" Paket von oracle.com (53 MB) und die ZIP extrahieren.
  2. Sammeln Sie die folgenden DLLs: oci.dll (1 MB), oraociei11.dll (130 MB!), OraOps11w.dll (0,4 MB), Oracle.DataAccess.dll (1 MB). Das verbleibende Material gelöscht werden kann, und nichts installiert werden müssen.
  3. einen Verweis auf Oracle.DataAccess.dll, fügt using Oracle.DataAccess.Client; zu Ihrem Code hinzufügen und jetzt können Sie Typen wie OracleConnection, OracleCommand und OracleDataReader verwenden, um eine Oracle-Datenbank zuzugreifen. Sehen Sie die Klassendokumentation . Es gibt keine Notwendigkeit, die tnsnames.ora Konfigurationsdatei zu verwenden, werden nur die Connection String richtig eingestellt werden müssen.
  4. Der oben genannte 4-DLLs mit Ihrem ausführbaren Einsatz zusammen sein.

Auf diese Weise können Sie mit ODP.net mit 5 verteilbaren Dateien von Oracle verbinden:

Chris Blogeintrag: Mit dem neuen ODP .Net für den Zugriff auf Oracle von C # mit einfachen Einsatz

Edit: Falls das Blog nach unten jede geht, hier eine kurze Zusammenfassung ...

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

Sie, ob Sie diese DLL aus der gleichen ODP.Net / ODAC Verteilung erhalten Versionsnummer um Konflikte zu vermeiden, und sie alle im selben Ordner wie die EXE

http://www.devart.com/ , früher Corelab (crlab.com) liefert ein pure-C # Oracle-Client. Das ist eine einzelne DLL, und es funktioniert gut.

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

.

1 Download Instant Client Package - Grund Lite : Windows 32-Bit oder 64-Bit .

2 Kopieren Sie die folgenden Dateien an einem Speicherort 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. Erstellen Sie eine Verbindungszeichenfolge, die lässt die Notwendigkeit für tnsnames .ora .

(Siehe Beispiele im Testprogramm weiter unten.)

4 Führen Sie dieses minimal C # Programm, 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 den Fehler auf "System.Data.OracleClient erfordert Oracle-Client-Software Version 8.1.7" finden Sie unter this Frage .

fand ich diesen Beitrag auf dem Oracle-Forum sehr nützlich auch:

So richten Sie Oracle Instant Client mit Visual Studio

Hinweis: das ADO.NET-Team ironischen System.Data.OracleClient so für zukünftige Projekte sollten Sie ODP.NET verwenden

Repro:

  

Setup die folgenden Umgebungsvariablen:

     
      
  1. stellen Sie sicher, kein anderes Orakel-Verzeichnis in Ihrem PATH
  2.   
  3. gesetzt PATH , um Ihre Instant-Client-zu-Punkt
  4.   
  5. gesetzt TNS_ADMIN zeigen, wo Sie Datei tnsnames.ora   befindet
  6.   
  7. gesetzt NLS_LANG
  8.   
  9. gesetzt ORACLE_HOME , um Ihr Instant-Client
  10.   
     

Für mich, habe ich NLS_LANG auf

     

http://download-east.oracle.com /docs/html/A95493_01/gblsupp.htm#634282

     

Ich überprüfte dies die richtige Client-Software wurde mit durch die sqlplus Add-on zu dem Zeitpunkt Client.

     

Für mich, habe ich:   SET NLS_LANG = AMERICAN_AMERICA.WE8MSWIN1252

     

. Hinweis: bevor Sie Änderungen vornehmen, sichern Sie Ihre Oracle-Registrierungsschlüssel (falls vorhanden) und Sicherung der Zeichenfolge für alle Umgebungsvariablen

     

die Oracle Instant Client FAQ hier lesen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top