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 symptome 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.