Quelle est l’empreinte client minimale requise pour connecter C # à une base de données Oracle?

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

  •  09-06-2019
  •  | 
  •  

Question

Je me suis connecté avec succès à 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'encombrement de l'installation pour les outils client Oracle était supérieur à 200 Mo, et il était plutôt long.

Quelqu'un sait-il quelle est l'empreinte minimale réalisable? J'espère que c'est une seule DLL et une commande register, mais j'ai le sentiment qu'il me faut installer une maison Oracle et définir diverses variables d'environnement.

J'utilise Oracle.DataAccess dans mon code.

Était-ce utile?

La solution

Vous avez besoin d’un client Oracle pour vous connecter à une base de données Oracle. Le moyen le plus simple consiste à installer les composants Oracle Data Access . .

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

  • Utilisez le fournisseur Microsoft pour Oracle (System.Data.OracleClient), fourni avec la structure.
  • Téléchargez le package Oracle Instant Client . - Basic Lite: c'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écompressez les fichiers suivants dans un dossier spécifique:
    • v10:
      • oci.dll
      • orannzsbb10.dll
      • oraociicus10.dll
    • v11:
      • oci.dll
      • orannzsbb11.dll
      • oraociei11.dll
  • Sur une plate-forme x86, ajoutez la DLL CRT pour Visual Studio 2003 (msvcr71.dll) à ce dossier, car les gars Oracle ont oublié de lisez ceci ...
  • Ajoutez ce dossier à la variable d’environnement PATH.
  • Utilisez le Attribution de nom Easy Connect méthode dans votre application pour vous débarrasser du fameux fichier de configuration TNSNAMES.ORA. Cela ressemble à ceci: sales-server: 1521 / sales.us.acme.com .

Cela correspond à environ 19 Mo (v10).

Si vous ne souhaitez pas partager ce dossier entre plusieurs applications, vous pouvez également expédier les DLL susmentionnées avec les fichiers binaires de votre application et ignorer l'étape de configuration PATH.

Si vous devez absolument utiliser le fournisseur Oracle (Oracle.DataAccess), vous aurez besoin des éléments suivants:

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

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

Autres conseils

Depuis 2014, le pilote géré OPD.NET est la plus petite empreinte au sol.

Voici une comparaison d'utilisation du code avec les versions non gérées pour lesquelles les réponses précédentes (obsolètes) ont été suggérées: http://docs.oracle.com/cd/E51173_01/win.122/ e17732 / intro005.htm # ODPNT148

Vous devrez télécharger ces DLL et référencer Oracle.ManagedDataAccess.dll dans votre projet: Téléchargez la version ODP.NET du pilote géré uniquement Xcopy

.

Voici une empreinte typique à empaqueter avec votre version:

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

tous ensemble, un énorme 6,4 Mo pour .Net 4.0.

J'utilise la méthode suggérée par Pandicus ci-dessus, sous Windows XP, avec ODAC 11.2.0.2.1. Les étapes sont les suivantes:

  1. Téléchargez le fichier "ODAC 11.2 Release 3 (11.2.0.2.1) avec Xcopy Deployment". package sur oracle.com (53 Mo) et extrayez le ZIP.
  2. Collectez les DLL suivantes: oci.dll (1 Mo), oraociei11.dll (130 Mo!), OraOps11w.dll (0,4 Mo), Oracle.DataAccess.dll (1 Mo). Le reste peut être supprimé et rien ne doit être installé.
  3. Ajoutez une référence à Oracle.DataAccess.dll, ajoutez à l'aide de Oracle.DataAccess.Client; à votre code. Vous pouvez désormais utiliser des types tels que OracleConnection , . OracleCommand et OracleDataReader pour accéder à une base de données Oracle. Consultez la documentation de classe pour plus de détails. Il n'est pas nécessaire d'utiliser le fichier de configuration tnsnames.ora, seule la chaîne de connexion doit être définie correctement.
  4. Les 4 DLL ci-dessus doivent être déployées avec votre exécutable.

Cette façon de faire vous permet de vous connecter à ODP.net en utilisant 5 fichiers redistribuables d’Oracle:

Entrée de blog de Chris: Utiliser le nouvel ODP .Net pour accéder à Oracle à partir de C # avec un déploiement simple

Modifier: au cas où le blog s'effondrerait, voici un bref résumé ...

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

assurez-vous que TOUTES ces DLL proviennent de la même distribution ODP.Net / ODAC pour éviter les conflits de numéros de version et mettez-les toutes dans le même dossier que votre fichier EXE

DevArt http://www.devart.com/ , anciennement CoreLab (crlab.com) fournit une Client Oracle pur-C #. C'est une simple DLL, et ça marche bien.

Voici une mise à jour pour Oracle 11.2.0.4.0 . La procédure suivante a été utilisée avec succès sur Windows 7 avec System.Data.OracleClient .

1. Téléchargez Package Instant Client - Basic Lite : Windows 32 bits ou 64 bits .

2. Copiez les fichiers suivants dans un emplacement de votre chemin 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. Construisez une chaîne de connexion qui ne nécessite pas de nom. .ora .

(Voir les exemples dans le programme de test ci-dessous.)

4. Exécutez ce programme C # minimal 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 le message d'erreur "System.Data.OracleClient nécessite le logiciel client Oracle version 8.1.7", consultez cette question .

J'ai également trouvé ce post sur le forum Oracle très utile:

Comment configurer Oracle Instant Client avec Visual Studio

Remarque: l'équipe ADO.NET désapprouve System.Data.OracleClient, vous devez donc utiliser ODP.NET

pour les projets futurs.

Reproduction:

  

Configurez les variables d'environnement suivantes:

     
      
  1. assurez-vous qu'aucun autre répertoire Oracle ne se trouve dans votre PATH
  2.   
  3. configurez votre CHEMIN pour qu'il pointe vers votre client instantané
  4.   
  5. définissez votre TNS_ADMIN de sorte qu'il se trouve là où se trouve le fichier tnsnames.ora.   situé
  6.   
  7. définir votre NLS_LANG
  8.   
  9. définissez votre ORACLE_HOME sur votre client instantané
  10.   
     

Pour moi, je règle NLS_LANG sur

     

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

     

J'ai vérifié que le logiciel client approprié était utilisé à l'aide du module complémentaire sqlplus du client instantané.

     

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

     

Remarque: avant toute modification, sauvegardez votre clé de registre Oracle (le cas échéant) et sauvegardez la chaîne pour toutes les variables d'environnement.

     

Lisez la FAQ Oracle Instant Client ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top