71 votes

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

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

L'empreinte d'installation des outils client Oracle était de plus de 200 Mo et plutôt longue.

Est-ce que quelqu'un sait quelle est l'empreinte minimale fonctionnelle ? J'espère qu'il s'agit simplement d'un seul fichier DLL et d'une commande d'enregistrement, mais j'ai l'impression que je dois installer un "oracle home" et définir diverses variables d'environnement.

J'utilise Oracle.DataAccess dans mon code.

69voto

Mac Points 4570

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 d'accès aux données Oracle.

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

  • Utilisez le fournisseur Microsoft pour Oracle (System.Data.OracleClient), qui est inclus dans le framework.
  • Téléchargez le Package Instant Client Oracle - Basic Lite : il s'agit d'un fichier zip avec (presque) le strict minimum. Je recommande la version 10.2.0.4, qui est bien plus petite que la version 11.1.0.6.0.
  • Extrayez les fichiers suivants dans un dossier spécifique :
    • v10 :
      • oci.dll
      • orannzsbb10.dll
      • oraociicus10.dll
    • v11 :
      • oci.dll
      • orannzsbb11.dll
      • oraociei11.dll
  • Sur une plateforme x86, ajoutez la DLL CRT pour Visual Studio 2003 (msvcr71.dll) à ce dossier, car les gens d'Oracle ont oublié de lire ceci...
  • Ajoutez ce dossier à la variable d'environnement PATH.
  • Utilisez la méthode de Nommage Easy Connect dans votre application pour vous débarrasser du fameux fichier de configuration TNSNAMES.ORA. Cela ressemble à ceci : serveur-ventes:1521/ventes.us.acme.com.

Cela représente environ 19 Mo (v10).

Si vous ne vous souciez pas de partager ce dossier entre plusieurs applications, une alternative serait d'inclure les DLL mentionnées ci-dessus avec vos binaires d'application, et de sauter l'étape de configuration PATH.

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

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

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

15voto

kol Points 10683

Je 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 package "ODAC 11.2 Release 3 (11.2.0.2.1) with Xcopy Deployment" 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 using Oracle.DataAccess.Client; à votre code et vous pouvez maintenant utiliser des types comme OracleConnection, OracleCommand et OracleDataReader pour accéder à une base de données Oracle. Consultez la documentation de la classe pour plus de détails. Il n'est pas nécessaire d'utiliser le fichier de configuration tnsnames.ora, seul le chaîne de connexion doit être correctement configurée.
  4. Les 4 DLL mentionnés ci-dessus doivent être déployés avec votre exécutable.

15voto

ecoe Points 382

En 2014, le Pilote Géré OPD.NET est le plus petit en terme de taille.

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

Vous devrez télécharger ces dlls et faire référence à Oracle.ManagedDataAccess.dll dans votre projet : Téléchargez la version Xcopy uniquement du Pilote Géré ODP.NET

Voici une empreinte typique que vous devrez inclure dans votre distribution :

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

au total, un étonnant 6,4 Mo pour .Net 4.0.

14voto

Fidel Points 844

De cette manière, vous pouvez vous connecter à ODP.net en utilisant 5 fichiers redistribuables d'oracle :

Article de blog de Chris : Utiliser le nouveau ODP.Net pour accéder à Oracle depuis C# avec un déploiement simple

Édition : Au cas où le blog serait hors service, voici un bref résumé...

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

Assurez-vous de récupérer TOUS ces DLL à partir de la même distribution ODP.Net / ODAC pour éviter les conflits de numéro de version, et placez-les tous dans le même dossier que votre EXE.

8voto

DevArt http://www.devart.com/, anciennement CoreLab (crlab.com), fournit un client Oracle pur en C#. C'est un seul fichier dll, et il fonctionne bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X