Comment faire odp.net 12c de travailler avec d'autres clients oracle
J'ai client oracle 10g(plein) et 11g instant client installé sur ma machine.
Je suis en train d'utiliser ODP.NET 12c. Voici ce que j'ai fait.
- Ajouté Oracle.DataAccess.dll pour les Références.
- Copié OraOps12.dll dans le dossier où mon exécutable.
Lors de l'exécution j'ai "Impossible de charger la DLL 'OraOps12.dll': Le module spécifié est introuvable. (Exception de HRESULT: 0x8007007E)".
Je pense qu'il pourrait être due à un problème de dépendance. J'ai donc plus copié de la 12c
- oci.dll
- oraociei12.dll
- orannzsbb12.dll
Je puis encore d'autres problèmes de dépendances. Je ne veux pas de copier l'ensemble du InstantClient.
Mon objectif est d'obtenir l'application de travailler avec d'autres versions du client Oracle.
Nos clients ont différentes version du client Oracle installé. Donc, de toute façon, pour obtenir l'application (ODAC12c) travailler avec les clients de la version actuelle du client d'Oracle, sans avoir à installer 12c client?
Merci,
Mise à jour:
J'ai oublié de mentionner quelques petites choses
- mon ODAC est 32 bits et j'ai compilé mon application sur l'architecture x86.
- Je n'ai pas utilisé Oracle.ManagedDataAccess.dll parce qu'il ne comprend pas BULKCOPY classs. Si quelqu'un connait une version de Oracle.ManagedDataAccess.dll qui comprend bulkcopy classe s'il vous plaît laissez-moi savoir.
- Nos clients déjà a différentes versions de client Oracle installé d'autres applications, et ils ne veulent pas changer leur environnement pour cette nouvelle application. Donc, mon objectif est de faire une version de l'ODAC dans mon application de travailler avec de différentes versions d'Oracle client (l'environnement de chaque client est différent). Est-ce possible et si oui, comment?
OriginalL'auteur Shawn | 2015-02-20
Vous devez vous connecter pour publier un commentaire.
Vous le savez, je viens de passer 5 minutes à chercher le gars que je me rappelle avoir essayé cela avant...et il s'est avéré être vous shawn ;).
Honnêtement, à s'appuyer sur ce que le client a installé est une merde-pousse. Je voudrais utiliser le plein xcopy paquet, obtenir ce travail, et ensuite travailler vers l'arrière, la suppression de ce qui n'est pas nécessaire.
Exemple:
Exemple:
Cet article fait quelque chose de similaire:
http://dbaportal.eu/2013/02/22/true-xcopy-runtime-for-oracle-odp-net-application/
Il ajoute même une politique de redirection dans le cas où il a référencés projets qui font référence à une version particulière de Oracle.DataAccess.dll
Ajoute-t-il son oracle à la maison avec un fichier de commandes. La partie que je ne suis pas si sûr, c'est qu'il ajoute également sa nouvelle xcopy installer pour le chemin d'accès avec le même fichier de commandes. DllPath doit prendre soin de cela, mais si je me trompe, vous pouvez aussi le faire au moment de l'exécution:
À partir d'ici, j'avais l'installation de base des tests unitaires à l'aide de tous les ODP.net les fonctionnalités que vous utilisez et obtenir des résultats positifs et ensuite travailler vers l'arrière - commencer la suppression de ce que vous n'avez pas besoin, l'exécution de vos tests à chaque fois. Vous pourriez être en mesure d'utiliser sysinternals procexp pour montrer dll chargées (ou procmon de montrer que l'accès aux fichiers). Juste le chargement de vos tests peuvent être assez pour verrouiller les fichiers de sorte que vous pouvez supprimer tous ceux qui ne sont pas verrouillées.
Je ne suis pas sûr que cela est pris en charge. Puis, de nouveau, Oracle ne liste "l'application actuelle du répertoire" dans le non géré ordre de recherche de sorte qu'ils n'ont pas fermé la porte.
EDIT:
Trouvé sur l'un des liens à d'autres personnes qui font ce:
http://alderprogs.blogspot.com/2009/04/deploying-odpnet-with-oracle-instant.html
Je ne suis pas sûr pourquoi, mais qu'télécharger le client instant séparément (c'est déjà une partie de la xcopy package).
MODIFIER 4/15/2016: Si vous êtes la lecture de ce ces jours remarque deux choses. 1) je ne pense pas que la définition de l'environnement de variables sont nécessaires si vous êtes déjà DllPath. 2) je ne pense pas que ce soit la peine de le faire lorsque le fournisseur géré maintenant ne nécessite qu'une ou deux dll.
b_levitt, vous, l'homme bro. m'a sauvé la vie. merci
"Je ne pense pas que ce soit la peine de le faire lorsque le fournisseur géré maintenant ne nécessite qu'une ou deux dll." Le client géré est largement supérieur... à moins que vous vous connectez à un 11g ou inférieur serveur à partir d'une machine avec le mode FIPS est activé. Ensuite, c'est largement inférieures, car il ne fait qu'exploser.
J'ai installé l'odac géré, cela ne devrait pas être nécessaire.
vous avez besoin de lire la mise à jour shawn posté pour ses critères. Vous ne pouvez pas installer l'odac si vous essayez de le laisser inchangé.
OriginalL'auteur b_levitt
C'est une mauvaise idée de copier DLL unique pour différents répertoires et espère que cela va fonctionner.
En général ODP.NET fournisseur fonctionne uniquement en association avec un correspondant du Client Oracle, c'est à dire pour l'utiliser ODP.NET 12 vous devez également installer le Client Oracle 12. De même pour la version 11 ou 10.
Seule exception, l'ODP.NET Géré Pilote, là, vous avez seulement besoin d'une seule DLL (Oracle.ManagedDataAccess.dll).
En outre, l'architecture (32 bits /64 bits) doit correspondre.
Dans le cas où vous utilisez le fournisseur ole db c'est même pas possible d'avoir plus d'un fournisseur installé (pour chaque architecture) - à moins que vous pirater votre système en manipulant
PATH
variable de Registre et de tous les temps.Ma proposition serait: Supprimer tous les Oracle Clients à partir de votre ordinateur et d'installer uniquement un (ou architecture) Oracle Client correctement. Il est très peu probable qu'une application fonctionne avec une version du Client Oracle. Il est également une bonne approche pour installer à la fois 32 bits et 64 bits sur un même ordinateur, suivre les instructions pour le faire: Installer Oracle x86 et X64 sur une machine
Dans le cas où vous avez vraiment besoin de tester votre application avec différentes version du Client Oracle, l'installation d'un couple de test-PC (peut-être dans un Virtual-Box) chacune avec une autre version du Client. Sinon, il sera très difficile à gérer.
Mise à jour:
Je pense que chacun (non géré) ODP.NET version ne fonctionne qu'avec des selon la version du Client Oracle. Peut-être par hasard il y a quelques combinaisons de travail, mais en général les versions de match.
Je vois deux solutions:
(1) Demandez à votre client pour l'installation du Client Oracle, y compris ODP.NET. Il peut choisir la version de base, l'architecture (32 bits ou 64 bits) doit correspondre. Ensuite, vous n'avez pas fourni les ODP.NET avec votre application.
Dans votre
*.csproj
, resp.*.vbproj
fichier à définir votre référence comme ceci:Attributs comme
Version=...
ouprocessorArchitecture=...
ne sont pas nécessaires. Ensuite, votre application devrait fonctionner avec n'importe quel Oracle/ODP.Version NET.Votre client peut télécharger ODP.NET fournisseur de: Oracle Data Access Components (ODAC) pour Windows Téléchargements et l'installer sur le dessus de l'existant de l'installation du Client Oracle. Dans
readme.txt
il est dit "Les fichiers de ce fichier zip n'est PAS d'être installé sur le dessus de l'existantOracle Universal Installer (OUI) à base Oracle installation à Domicile.", cependant, je ne vois pas pourquoi ne pas le faire. Il fonctionne bien, vous avez juste à soigneusement fournir le bon dossier existant de l'installation d'Oracle et de corriger
ORACLE_HOME
nom et de ne pas installer les dépendances.(2) Dans votre script d'installation/exe déterminer la Version du client Oracle installé Client et copiez selon ODP.NET à la machine du client.
Afin de déterminer la version du Client Oracle, vous pouvez rechercher le fichier
oci.dll
dans les dossiers fournis parPATH
de l'environnement.oci.dll
est normal .NET de l'assemblée, de sorte que vous pouvez lire la version facilement.Pour une installation correcte de ODP.NET suivez le fichier
configure.bat
qui fait partie de téléchargé ODP.NET XCopy version. À mon avis, ce fichier de commandes est facile à comprendre.Fondamentalement, il ne
1 - Copier le fichier
Oracle.DataAccess.dll
à la machine cible2 - Copie des fichiers de ressources différents
*\Oracle.DataAccess.resources.dll
pour cible machen3 - Ajouter ces DLL dans le GAC. Cela peut être fait par
gacutil.exe
ouOraProvCfg.exe
(inclus dans downloader fichier ZIP) ou votre application de configuration fournit cette opération.4 - Faire un peu de Regristy entrées. Plus récente ODP.NET les versions de lecture/écriture dans
HKLM\SOFTWARE\Wow6432Node\Oracle\ODP.NET
(32 bits), resp.HKLM\SOFTWARE\Oracle\ODP.NET
(64 bits). Les plus âgés ODP.NET utilisent des versionsHKLM\SOFTWARE\Oracle\KEY_{ORACLE_HOME_KEY}\ODP.NET\
(64 bits), respHKLM\SOFTWARE\Wow6432Node\Oracle\KEY_{ORACLE_HOME_KEY}\ODP.NET\
(32 bits) au lieuQue c'est, vous devriez être en mesure de l'inclure dans votre programme d'installation.
Vous voulez dire que vous fournir une copie de
Oracle.DataAccess.dll
avec votre demande?Merci de voir mon jour de réponse
OriginalL'auteur Wernfried Domscheit