8
votes

ODP.NET est-il requis pour le client Oracle 11G?

Je poserai peut-être la mauvaise question ici, je suis prêt à le changer si oui.

J'ai un projet qui utilise le fournisseur Microsoft.Net Oracle (notre plan consiste à passer à ODP, mais nous ne l'avons pas encore fait).

J'essaie d'obtenir ce projet de construire sur un serveur de construction Windows 2008 (X64). Il construit simplement bien, mais nos tests de l'unité échouent lorsqu'ils frappent des trucs sur la base de données Oracle.

J'avais initialement installé le client 32bit Oracle 9i, ce que nous utilisons actuellement sur nos boîtes WinXP Dev et le serveur de construction 2003 précédent. Mais maintenant, cela reçoit un message comme: tenter de charger les bibliothèques des clients Oracle a lancé BadimageFormatException. Ce problème se produira lors de l'exécution en mode 64 bits avec les composants 32 bits Oracle Client installés.

Nous avons essayé de compiler la plate-forme X86 mais qui n'a pas changé le message d'erreur.

Je dispose maintenant du client 11G 64 bits installé mais je reçois un message disant System.Data.OracLeclient nécessite la version du logiciel client Oracle 8.1.7 ou plus.

Alors qu'est-ce que l'installation Oracle devrais-je utiliser?

EDIT:

J'ai pu obtenir cela pour travailler. Il est avéré que c'était le test causant le problème, en forçant Nunit à exécuter en mode 32bit: http://geekswithblogs.net/lance/archive/2006/12/28/102191.aspx J'ai pu obtenir les tests pour travailler à l'aide de l'ancien pilote 32 bits. Ce serait une réponse de merde à la question de sorte que je ne l'utilise pas, mais sera volontiers attribuer la bonne réponse à quiconque mettant de bonnes informations sur la transition vers les pilotes 64 bits Oracle.


0 commentaires

6 Réponses :


0
votes

J'ai trouvé plusieurs fois que l'erreur "nécessite Oracle Client Logiciel version 8.1.7.7 ou plus" est une erreur notoirement trompeuse. De la mémoire lointaine, je semble vous rappeler que cela indique généralement un problème d'autorisations de fichier IO. Je pense qu'il est peut-être que le processus de travailleur ASP.NET (ou quelle que soit l'identité une application en cours de fonctionnement) nécessite une sorte d'autorisation de lecture ou d'écriture dans un dossier de la hiérarchie du dossier Oracle Client ...


0 commentaires

1
votes

Je pense que le message "system.data.oracleclient nécessite la version du logiciel client Oracle 8.1.7 ou plus" Il est similaire à "Oracle Client non installé, installé mais non trouvé ou installé mais non trouvé ou installé mais Il est nécessaire 8.1.7 ou plus ".

Vérifiez REGEDIT si les valeurs sont juste sous la clé: xxx

oraodac11g_home1 dépend du nom de la maison Oracle pour votre installation.

En outre, essayez de vous connecter via Visual Studio pour voir si possible.


0 commentaires

0
votes

Cela peut être une cause de plusieurs maisons Oracle dans l'environnement. Supprimez la version ancienne Oracle Home dans votre système de construction. Essayez de générer la construction à nouveau avec la seule maison. Il existe des problèmes avec la version 9i version ODP.NET et 10G / 11G Connectivité


0 commentaires

1
votes

J'ai eu un problème qui pourrait se rapporter à ce que vous voyez.

J'ai initialement eu le juste le client Oracle 10G installé sur ma machine et le numéro de version de composant .NET.DataAccess était de 10.2.0.100 - ceci était destiné à .NET Runtime V1.0.3705

J'ai installé ODP.net et la version de composant Oracle.DataAccess sont désormais v2.102.2.20 et fonctionne sur .NET Runtime V2.0.50727 - Je ne peux pas trouver la référence sur laquelle Oracle a fait ceci - c'était quelque chose à voir avec apporter des numéros de version conformes à la version d'exécution

Cela m'a pris une journée pour y travailler. Nous n'utilisons pas encore le client 11G et je n'ai pas utilisé le client 8i depuis des âges, donc je ne sais donc pas ce que les numéros de la version seraient pour ces clients, mais je le vérifierais si j'étais vous quoi.

En bref, Oracle Back-a suivi les numéros de version des composants qui pourraient créer votre composant de 11g incluse par opposition aux composants Oracle 8i


0 commentaires

9
votes

En ce qui concerne Oracle, j'aime utiliser Oracle Instant Client :

  • Vous n'avez rien d'installer sur les machines cible (y compris les boîtes de devis!).
  • Vous pouvez vous assurer que votre application fonctionnera avec le client spécifique que vous avez choisi.
  • Vous pouvez même que plusieurs applications fonctionnent avec différentes versions client sur le même ordinateur.
  • comme un inconvénient, il ajoute un poids important à votre application (~ 19 Mo minimum).

    vérifier Quelle est l'empreinte minimale client requise pour connecter C # à une base de données Oracle? pour plus d'informations. Pour savoir comment configurer un projet Visual Studio qui fonctionnera sur X86 ainsi que sur les machines X64, consultez mon blog POST Client Instant Oracle dans Visual Studio .


0 commentaires

3
votes

J'ajoute une nouvelle réponse depuis à partir de cet automne (2012), la bêta du code géré ODP est disponible. Voir Ce lien pour plus d'informations. C'est pour nous hautement stable et nous l'utilisons dans la production, principalement à cause de ces raisons:

  • Aucune installation (à l'exception du cadre d'entité où une simple inscription est nécessaire)
  • Il est plus petit que la version non gérée, l'empreinte est d'environ 6 Mo.
  • Il n'est pas "sensible au bit", c'est-à-dire que tout CPU fonctionnera enfin avec ODP :)
  • Mappage plus intuitif C # Types C # <-> Oracle Types (et il a résolu certains problèmes avec EF et la génération de modèles de base de données)
  • prend en charge EZConnect (toutes les versions de l'ODP non gérées non gérées), c'est-à-dire que pas plus de tracas Tnsnames.ora.

    Mais pour la transition à 64 bits, téléchargez le pilote ODP géré et modifiez le oracle.dataaccess référence à oracle.managedDataaccess et recompiler :)


0 commentaires