Quel est le nombre minimum de clients requis pour connecter C# à une base de données Oracle?

j'ai réussi à me connecter à une base de données Oracle (10g) à partir de C# (Visual Studio 2008) en téléchargeant et en installant les outils d'administration client et Visual Studio 2008 sur mon ordinateur portable.

L'empreinte de l'installation des outils Client Oracle était de plus de 200 Mo, et assez longue enroulée.

est-ce que quelqu'un sait ce qu'est l'empreinte minimale réalisable? J'espère que c'est une simple DLL et une commande de registre, mais j'ai le sentiment que j'ai besoin de installez une maison oracle et définissez diverses variables d'environnement.

J'utilise Oracle.DataAccess dans mon code.

71
demandé sur Jonathan 2008-09-16 13:11:44

8 réponses

vous avez besoin d'un Client Oracle pour vous connecter à une base de données Oracle. La manière la plus simple est d'installer les composants Oracle Data Access Components .

pour minimiser l'empreinte, je suggère ce qui suit :

  • utiliser le Microsoft provider pour Oracle (System.Données.OracleClient), qui expédie avec le cadre.
  • télécharger le Oracle Instant Client Package - Basic Lite: this est un fichier zip avec (presque) le strict minimum. Je recommande la version 10.2.0.4, qui est beaucoup plus petite que la version 11.1.0.6.0.
  • Décompresser les fichiers suivants dans un dossier spécifique :
    • v10 :
      • ici.dll
      • orannzsbb10.dll
      • oraociicus10.dll
    • v11 :
      • ici.dll
      • orannzsbb11.DLL
      • oraocie11.dll
  • sur une plate-forme x86, ajouter la DLL pour Visual Studio 2003 (msvcr71.dll) à ce dossier, comme Oracle guys oublié de lire ce ...
  • ajouter ce dossier à la variable D'environnement PATH.
  • utilisez la méthode nom de connexion facile dans votre application pour se débarrasser de l'infâme TNSNAMES.Ora fichier de configuration. On dirait: sales-server:1521/sales.us.acme.com .

cela représente environ 19Mb (v10).

si vous ne vous souciez pas de partager ce dossier entre plusieurs applications, une alternative serait d'envoyer les DLLs mentionnés ci-dessus avec vos binaires d'application, et de sauter l'étape de définition du chemin.

Si vous devez absolument utiliser le fournisseur Oracle (Oracle.DataAccess), vous aurez besoin de :

  • ODP .NET 11.1.0.6.20 (la première version qui fonctionnerait avec Instant Client).
  • client instantané 11.1.0.6.0, évidemment.

notez que je n'ai pas testé cette dernière configuration...

69
répondu Mac 2009-09-09 08:51:08

à partir de 2014, le OPD.NET, Managed Driver is the smallest footprint.

voici une comparaison de l'utilisation du code avec les versions non gérées suggérées dans les réponses précédentes (périmées).: http://docs.oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148

vous aurez besoin de télécharger ces dlls et la référence Oracle.ManagedDataAccess.dll dans votre projet: Télécharger le ODP.NET, pilote géré version Xcopy seulement

Voici une empreinte de pied typique que vous devrez empaqueter avec votre version:

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

tous ensemble, un whopping 6,4 MO pour .Net 4.0.

16
répondu ecoe 2014-10-21 12:09:23

j'utilise la méthode suggérée par Pandicus ci-dessus, sur Windows XP, en utilisant ODAC 11.2.0.2.1. Les étapes sont les suivantes:

  1. Téléchargez le paquet" ODAC 11.2 Release 3 (11.2.0.2.1) with Xcopy Deployment " à partir de oracle.com (53 MB), et extraire le ZIP.
  2. collecter les DLLs suivantes: oci.dll (1 Mo), oraocie11.dll (130 Mo!), OraOps11w.dll (0.4 MB), Oracle.DataAccess.dll (1 MB). Le reste peut être supprimé, et rien ne doit être installer.
  3. ajouter une référence à Oracle.DataAccess.dll, ajouter using Oracle.DataAccess.Client; à votre code et maintenant vous pouvez utiliser des types comme OracleConnection , OracleCommand et OracleDataReader pour accéder à une base de données Oracle. Voir la documentation de classe pour plus de détails. Il n'est pas nécessaire d'utiliser le tnsnames.ora fichier de configuration, seul le connection string doit être réglé correctement.
  4. les 4 DLLs ci-dessus doivent être déployés le long avec votre exécutable.
15
répondu kol 2011-07-07 10:07:38

de cette façon vous permet de vous connecter avec ODP.net en utilisant 5 fichiers redistribuables à partir d'oracle:

Chris's blog entry: Using the new ODP.Net pour accéder à Oracle à partir de C# avec un déploiement simple

Edit: Dans le cas où le blog tous les descend, voici un bref résumé...

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

assurez-vous que vous obtenez tous ces DLL de la même ODP.Net distribution / ODAC pour éviter les conflits de numéros de version, et les mettre tous dans le même dossier que votre EXE

14
répondu Fidel 2012-06-25 16:05:04

DevArt http://www.devart.com / , anciennement CoreLab (crlab.com) fournit un client pur-c # Oracle. C'est une seule dll, et ça marche très bien.

8
répondu 2008-09-16 09:34:16

Voici une mise à jour pour Oracle 11.2.0.4.0 . J'ai eu du succès avec la procédure suivante sur Windows 7 en utilisant System.Data.OracleClient .

1. Télécharger Instant Package Client - Base Lite : Windows 32 Bits ou 64 Bits .

2. copier les fichiers suivants à un endroit dans votre chemin du système:

32 Bits

 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 Bits

   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. construisent une chaîne de connexion qui omet la nécessité de noms.ora .

(voir exemples dans le programme d'essai ci-dessous).)

4. Run ce programme C # minimum pour tester votre installation:

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);
    }
}

conseil Final: si vous rencontrez l'erreur " système.Données.OracleClient nécessite Oracle client software version 8.1.7" , voir cette question .

5
répondu DavidRR 2017-05-23 11:54:09

ODAC xcopy vous permettra de vous en sortir avec environ 45MB. http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

3
répondu 2008-09-16 09:27:23

j'ai trouvé ce post sur le forum Oracle très utile aussi bien:

comment configurer Oracle Instant Client avec Visual Studio

Remarque: Le ADO.NET l'équipe dévalorise le système.Données.OracleClient ainsi pour les projets futurs que vous devez utiliser ODP.NET

Reproduction:

configurer les variables d'environnement suivantes:

  1. marque bien sûr, aucun autre répertoire oracle n'est dans votre chemin
  2. paramétrez votre chemin pointez vers votre client immédiat
  3. définissez votre TNS_ADMIN pour indiquer où vous donnez des noms.le fichier ora est situé
  4. définir votre NLS_LANG
  5. réglez votre ORACLE_HOME à votre client instantané

pour moi, J'ai mis NLS_LANG à

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

j'ai vérifié que c'était en utilisant le bon logiciel client en utilisant l'add-on sqlplus pour le client instantané.

pour moi, j'ai mis: SET NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

Note: avant toute modification, sauvegardez votre clé de registre Oracle (si exist) et sauvegarder la chaîne de caractères pour toutes les variables d'environnement.

lire la FAQ Oracle Instant Client ici

2
répondu Vincent De Smet 2009-10-07 03:11:54