Description d’un bug qui m’a valu quelques heures de recherche galère sur Google.
Contexte
- Sur un Windows Server 2003 64 bits – ça doit être pareil sur un XP 64
- ODBC Oracle (version je sais pas quoi ; il semblerait que des versions plus récentes corrigent le bug ; pas sûr et pas facile dans mon cas de faire l’upgrade du client Oracle)
- Office 2007 pour faire du « reporting façon tableau croisé dynamique depuis Excel en tapant directement dans la base ». Oui c’est une méthode assez discutable, mais pratique pour l’utilisateur lambda, habitué d’Excel,
Le bug qui tue
Si Office (ou n’importe quelle application) est installée dans C:\Program Files (x86)
qui est le répertoire par défaut pour les applications 32 bits sur un OS Windows 64 bits, l’appel du client Oracle via ODBC échoue à cause du fait que : le-programme-appelant-est-installé-dans-un-répertoire-contenant-une-parenthèse ™. C’est pas beau ça ?
Le symptôme est que toute la connectivité fonctionne (NET assistant, SQLPlus), mais qu’Office (Excel) ou une autre application installée dans c:\blabla(x86) génère une erreur ORA-06413
Ne pas confondre avec l’erreur ORA-12154 qui elle indique plutôt que votre tnsnames.ora est foireux.
C’est vaguement expliqué dans un forum Oracle parlant de TOAD.
A noter que dans le sqlnet.log
, vous verrez vaguement un message indiquant que C:\Program Files (x86)\bla\excel.exe
a généré une erreur ORA-06413, mais c’est tout.
Contournement
Version facile pour tester
Lancez excel depuis une fenêtre DOS (ou modifiez son chemin de lancement), depuis le répertoire C:\PROGRA~2\Office\Office12\EXCEL.EXE
Le fait d’utiliser le « nom court » PROGRA~2 (PROGRA~1 est le c:\Program Files
« normal », pas le x86) suffit à faire fonctionner la chose. C’est pas énorme ça ????
Version moyenne
Installer Office dans C:\bugdemerde\Office
Version durable
Upgradez le client Oracle.
Je n’ai aucune idée de la version éradiquant le bug, si tant est qu’elle existe. Je suis preneur d’infos
A+
c’est fou ça que l’on soit encore aujourd’hui em.merdé par ces histoires de caractères dans les chemins d’accès relatifs ou absolus : c’est effectivement très sensible sous windows, mais y’a aussi quelques fois des surprises sous Linux. Mais bon, ça a au moins le mérite de donner une plus value à l’interface chaise/clavier. Comme dirait les anciens de l’informatique, un bug comme ça, c’est du à l' »historique »…
Merci pour ton blog et surtout pour le fais de partager des infos sur ton retour d’expériences.
Merci encore
Cordialement,
E.G.
Bah de rien, ça fait plaisir d’avoir ce genre de retours
En même temps, comme il m’est déjà arrivé de me prendre 2 fois les mêmes erreurs, ça me sert d’aide-mémoire. Et j’aime bien partager (sauf ma femme 😉
Grandement merci pour avoir pris le temps d’en faire économiser aux autres ! Cela m’a évité des heures de recherche et de tests. Encore merci et bravo pour le détail des informations. Bonne journée !
Un grand merci également pour ce billet très détaillé et très constructif. J’interviens sur une migration d’application vers une plate-forme cible Windows 64 bits + Oracle client 64 bits avec un écosystème 32 bits autour. En lisant ce billet je me dis que je ne suis pas au bout de mes surprises.
Au fait, dernier truc crucial oublié :
La gestion des ODBC est évidemment pourrie car on découvre 2 notions : les « ODBC créées en 64 bits » et « les ODBC créées en 32 bits ».
Donc. Quand tu passes par le menu normal des outils d’admin, tu crées des connexions ODBC-64-bits-que-ton-excel-32-ne-pourra-pas-utiliser.
Il faut les créer depuis c:\windows\syswow64\odbcad32.exe
On y voit la même chose, on ne sait pas si telle connx est crée en 32 ou 64, mais la différence est là.
C’est tout simplement, euh… génial… profondément débile ? je sais pas, j’hésite
Salut,
Tu l’as dit bouffi ! c’est similaire sur du XP x64 avec de l’Office 2003 32 bits.
Font chier Crosoft …
Merci et bonne journÈe.
Salut,
J’ai le même prob deux ans plus tard, peut être que quelqu’un à une solution de mise à jour?
Merci et bonne journée
Bonjour à tous,
le problème vient plus de l’emplacement de l’odbc que du nom du dossier.
Les utilisateurs de Office 2007 et 2010 rencontrerons des problèmes si l’ODBC est installé dans Programmes ou C:\programmes ou C:\Program Files (x86).
Le plus simple et c’est résolu en 3 minutes:
Copiez vos fichiers de l’ODBC dans un dossier à la racine du disque c:\MESODBC p.ex.
à l’intérieur de ce dossier créez ODBC_32BIT et ODBC_64BIT comme sous dossiers.
Maintenant copiez les contenus de vos dossiers de pilotes ODBC dans ces 2 emplacements respectifs.
LISTE DES PILOTES ODBC 32 BITS POUR ORACLE
16.12.2008 09:03 1’600’090 classes12.jar
03.11.2011 14:48 0 controle32.txt
16.12.2008 09:31 1’060’864 MFC71.dll
16.12.2008 09:31 348’160 msvcr71.dll
03.11.2011 14:27 NETWORK
16.12.2008 09:03 352’256 oci.dll
16.12.2008 09:03 77’824 ocijdbc10.dll
16.12.2008 09:03 18’432 ociw32.dll
16.12.2008 09:03 93’273 ODBCRelnotesJA.htm
16.12.2008 09:03 59’488 ODBCRelnotesUS.htm
16.12.2008 09:03 22’457 ODBC_IC_Readme_Win.html
16.12.2008 09:03 40’960 odbc_install.exe
16.12.2008 09:03 40’960 odbc_uninstall.exe
16.12.2008 09:03 1’545’954 ojdbc14.jar
16.12.2008 09:03 1’093’632 orannzsbb10.dll
16.12.2008 09:03 778’240 oraocci10.dll
16.12.2008 09:04 91’295’744 oraociei10.dll
16.12.2008 09:03 215’861 sqora.chm
16.12.2008 09:03 532’480 sqora32.dll
16.12.2008 09:03 159’744 sqoras32.dll
16.12.2008 09:03 19’456 sqresus.dll
LISTE DES PILOTES ODBC 64 BITS POUR ORACLE
20.07.2010 19:35 334 BASIC_README
29.06.2010 07:35 1’621’357 classes12.jar
03.11.2011 14:48 0 controle64.txt
20.07.2010 19:31 1’470’464 mfc42.dll
03.11.2011 14:27 NETWORK
20.07.2010 19:33 516’096 oci.dll
29.06.2010 07:34 72’704 ocijdbc10.dll
20.07.2010 17:20 465’920 ociw32.dll
16.06.2006 00:03 59’488 ODBCRelnotesUS.htm
16.06.2006 00:03 22’457 ODBC_IC_Readme_Win.html
20.07.2010 17:12 51’200 odbc_install.exe
20.07.2010 17:12 48’128 odbc_uninstall.exe
29.06.2010 07:35 1’569’169 ojdbc14.jar
29.06.2010 01:16 1’472’000 orannzsbb10.dll
20.07.2010 17:20 1’239’552 oraocci10.dll
20.07.2010 17:19 94’894’592 oraociei10.dll
12.03.2004 13:52 215’861 sqora.chm
20.07.2010 17:13 636’416 sqora32.dll
20.07.2010 17:13 109’568 sqoras32.dll
20.07.2010 17:13 21’504 sqresus.dll
Quand ceci est terminé
vous n’avez plus qu’à changer votre connecteur ODBC dans la base de registre directement en prenant garde aux fautes de frappes:
a)
ODBC.INI, le nom de votre connexion doit être corrigé pour les valeurs
driver : c:\MESODBC\ODBC_32Bit\SQORA32.dll
b)
Oracle in instantclient10_2 : corriger l’emplacement de la clé
driver : c:\MESODBC\ODBC_32Bit\SQORA32.dll
Terminez par ajouter à la variable d’environnement PATH: l’emplacement de vos ODBC
;c:\MESODBC\ODBC_32Bit;c:\MESODBC\ODBC_64Bit;
bonne chance…
Après cette adaptation, le lieu d’exécution de XLS n’à pas d’importance
et
setup: c:\MESODBC\ODBC_32Bit\SQORAS32.DLL
DBA Oracle Suisse
Ducati964
simple comme |30|\|j0|_|4
Merci cependant, je testerai ça si l’occasion se présente
Le correctif Oracle normalement est celui-ci: 5059238 à passer sur le serveur ET le client.
++
(je sais ça date mais ça peut aider)
Oh bah merci, si la situation se présente à nouveau, j’y penserai
Il date de quand ce patch ? récent ? ce serait marrant
Mille fois merci.
@+