Je ressens votre douleur, je viens de vivre quelque chose de similaire dans une situation de déploiement. Vous avez probablement plusieurs clients installés et votre environnement extrait des dll pour des versions plus anciennes (même si vous avez un dernier oracle.dataaccess.dll correctement référencé dans votre projet). Résoudre ce problème sur votre environnement de développement est une chose, un serveur de déploiement prod en est une autre. Je ne sais pas quelle est votre situation de déploiement, mais voici ce qui a fonctionné pour moi.
Après avoir lutté pour essayer de mettre à niveau odp.net dans la maison oracle existante, ajouter une nouvelle maison oracle, etc., j'ai trouvé le moyen le plus simple de tout réparer est de télécharger le dernier odac avec déploiement xcopy d'Oracle et suivez le fichier readme (et consultez ici pour un article plus ancien à ce sujet également). Fondamentalement, vous allez exécuter un fichier install.bat à configurer localement (dans un dossier séparé, le mien était c:\oracle_odac), puis modifier la référence de votre projet pour pointer vers oracle.dataaccess.dll dans ce nouveau dossier (j'ai utilisé 4 au lieu de 2.x) et ajoutez les répertoires bin du nouveau dossier devant votre chemin (c:\oracle_odac\bin et c:\oracle_odac\odp.net\bin\4). Sur votre serveur de déploiement, il vous suffira de copier l'intégralité du dossier c:\oracle_odac (via xcopy ou cependant) et de configurer le chemin.
Cela dit, j'attends avec impatience la sortie en production du entièrement géré odp.net d'Oracle (en version bêta maintenant).
EDIT:Juste pour ajouter que vous pouvez éviter de jouer avec les PATH si vous configurez dans votre application ou votre fichier de configuration Web le dllpath. Par exemple :
<configuration>
...
<configSections>
<section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
...
<oracle.dataaccess.client>
<settings>
<add name="DllPath" value="c:\oracle_odac\bin"/>
</settings>
</oracle.dataaccess.client>
...
Cela remplacera d'autres paramètres tels que le registre ou machine.config. Et cela permettra à plusieurs configurations odp.net d'exister pacifiquement et permettra à chaque application de pointer vers la version dont elle a besoin sur le même serveur.