2009-07-21 8 views
8

Je pose peut-être la mauvaise question ici, je suis prêt à le changer si c'est le cas.ODP.NET est-il requis pour Oracle 11g Client?

J'ai un projet qui utilise le fournisseur Oracle Microsoft.NET (notre plan est de passer à ODP mais nous ne l'avons pas encore fait). J'essaye de faire en sorte que ce projet se base sur un serveur de construction Windows 2008 (64). Il se construit très bien, mais nos tests unitaires échouent quand ils frappent des choses sur la base de données Oracle.

J'avais initialement installé le client 32bit oracle 9i qui est ce que nous utilisons actuellement sur nos boîtes de dev winxp et le serveur de construction 2003 précédent. Mais maintenant, ceci reçoit un message du genre: Tentative de chargement des bibliothèques clientes Oracle: BadImageFormatException. Ce problème se produit lors de l'exécution en mode 64 bits avec les composants client Oracle 32 bits installés.

Nous avons essayé de compiler sur la plate-forme x86, mais cela n'a pas changé le message d'erreur.

J'ai maintenant le client 11 bits 64 bits installé mais je reçois un message disant que System.Data.OracleClient nécessite la version 8.1.7 ou supérieure du logiciel client Oracle.

Alors, quelle installation Oracle devrais-je utiliser?

Edit:

j'ai pu obtenir ce travail. Il s'est avéré que c'était le test qui causait le problème, en forçant NUnit à fonctionner en mode 32 bits: http://geekswithblogs.net/Lance/archive/2006/12/28/102191.aspx J'ai été en mesure de faire fonctionner les tests en utilisant l'ancien pilote 32 bits. Ce serait une réponse merdique à la question, donc je ne l'utilise pas, mais j'adjugerai volontiers la bonne réponse à quiconque mettra de bonnes informations sur la transition vers les pilotes Oracle 64 bits.

Répondre

9

Quand il vient à Oracle, j'aime utiliser Oracle Instant Client:

  • Vous n'avez rien à installer sur les machines cibles (y compris les boîtes de dev!).
  • Vous pouvez vous assurer que votre application s'exécutera avec le client spécifique que vous avez choisi.
  • Vous pouvez facilement faire fonctionner plusieurs applications avec différentes versions client sur le même ordinateur. En contrepartie, il ajoute un poids important à votre application (~ 19 Mo minimum).

Vérifiez What is the minimum client footprint required to connect C# to an Oracle database? pour plus d'informations. Pour savoir comment configurer un projet Visual Studio qui fonctionnera sur les ordinateurs x86 et x64, consultez mon blog en composant le Oracle Instant Client in Visual Studio.

0

J'ai trouvé plusieurs fois que l'erreur "nécessite le logiciel client Oracle version 8.1.7 ou supérieure" est une erreur notoirement trompeuse. De mémoire lointaine, je semble se rappeler que cela indique généralement un problème d'autorisations d'entrée-sortie de fichiers. Je pense qu'il se peut que le processus de travail ASP.NET (ou l'identité d'une application s'exécutant sous) nécessite une sorte d'autorisation de lecture ou d'écriture sur un dossier dans la hiérarchie du dossier client Oracle ...

1

Je pense que le message "System.Data.OracleClient requiert la version 8.1.7 ou supérieure du logiciel client Oracle" "similaire à " Le client Oracle n'est pas installé, installé mais introuvable ou installé, mais il est nécessaire d'utiliser la version 8.1.7 ou supérieure ".

Vérifiez sur regedit si les valeurs sont juste sous la clé:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraOdac11g_home1 

OraOdac11g_home1 dépend du nom Oracle Home pour votre installation.

Également, essayez de vous connecter via Visual Studio pour voir si c'est possible.

0

Cela peut être une cause de plusieurs maisons Oracle dans l'environnement. Supprimez l'ancienne version d'Oracle dans votre système de build. Essayez de générer à nouveau la construction avec la maison individuelle. Il y a quelques problèmes avec la version 9i ODP.NET et la connectivité 10G/11G

1

J'ai eu un problème qui pourrait être lié à ce que vous voyez.

j'avais d'abord juste le client Oracle 10g installé sur ma machine et le numéro de version du composant .Net Oracle.DataAccess était 10.2.0.100 - ce fut pour l'exécution .Net 1.0.3705

J'ai installé ODP.Net et la version du composant Oracle.DataAccess est maintenant v2.102.2.20 et fonctionne sur .Net runtime v2.0.50727 - Je ne trouve pas la référence pour savoir pourquoi Oracle a fait cela - c'était quelque chose à voir avec l'alignement des numéros de version sur le runtime version

Il m'a fallu une journée pour travailler cela. Nous n'utilisons pas encore le client 11g et je n'ai pas utilisé le client 8i depuis des lustres, donc je ne sais pas quels seraient les numéros de version pour ces clients, mais je vérifierais si j'étais vous quoi.

En bref, Oracle back-suivi les numéros de version des composants qui pourraient être faites votre composant 11g apparaissent hors jour par opposition aux composants Oracle 8i

3

J'ajoute une nouvelle réponse puisque depuis l'automne 2012, la version bêta du code managé ODP est disponible. Voir this link pour plus d'informations. Il est pour nous très stable et nous utilisons dans la production, principalement à cause de ces raisons:

  • Aucune installation (sauf pour le cadre de l'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 « peu sensible », à savoir tout CPU va enfin travailler avec ODP :)
  • Une cartographie plus intuitive C Types de # < -> types Oracle (et il a résolu quelques problèmes avec EF et la génération de modèles de base de données)
  • Prend en charge EZCONNECT (pas toutes les versions de l'ODP non géré), c.-à-d. Pas plus de trames tnsnames.ora.

Mais pour le passage à 64 bits, téléchargez le pilote ODP géré et changer la référence Oracle.DataAccess-Oracle.ManagedDataAccess et recompiler :)

Questions connexes