Tags:,,, Posted in bugs, windows 5 Comments

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+

25 May 2009