Windows [Server] 64 bits + ODBC Oracle + Office 32 bits = bug pourri

closeCet article a été publié il y a 14 ans 11 mois , il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

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+

13 comments

  1. 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 »…

  2. Merci pour ton blog et surtout pour le fais de partager des infos sur ton retour d’expériences.
    Merci encore

    Cordialement,

    E.G.

  3. 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 😉

  4. 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 !

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

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

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

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

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

  10. Le correctif Oracle normalement est celui-ci: 5059238 à passer sur le serveur ET le client.
    ++

    (je sais ça date mais ça peut aider)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.