La Corp

À propos d’Oracle-l’entreprise, cela fait longtemps que j’ai dit tout le bien mal que j’en pensais. Support plus pressé de fermer un appel que de le résoudre, prix délirants, mentalité de vampires conscients que la clientèle a peu de choix croit ne pas avoir le choix, technique de prédation plutôt que de concurrence (il n’y a qu’à voir le nombre d’entreprises concurrentes rachetées en peu de temps : Siebel, Peoplesoft/JDEdwards, Sunopsis...), délocalisations massives en Inde…

Même Microsoft est plus sympathique, et même Bill Gates est moins mégalo que Larry Ellison.

Les softs

Oracle-le middleware est une collection impressionnante de logiciels sur un peu tous les thèmes informatiques : deux ETL (Warehouse Builder, le boulet maison et Sunopsis, renommé Data Integrator[1]), un serveur web (Apache en fait), un serveur d’application, une distribution de Linux (piquée à RedHat), des solutions de sécurité (douteuses, vu le passif pire que microsoftien de l’entreprise sur le sujet), un requêteur (SQLDeveloper, lourd mais pas mal ; il est juste arrivé une décennie trop tard pendant laquelle il a fallu se limiter au néolithique SQL*Plus ou investir dans l’excellent et dispendieux Toad), un outil de développement graphique qu’ils ont oublié de maintenir depuis le siècle dernier (Forms), etc.

Le pire côtoie des bijoux, et la tendance générale est au « ça marche mais qu’est-ce que c’est lourd ! », « c’est quoi cette limite débile ? », « tiens, ils l’ont réécrit en Java, c’est dix fois plus moche qu’avant », « quelle ergonomie de merde [2] »

Le joyau de la couronne

Oracle-la base était jusque là préservée de mon mépris. Depuis des années que je la matraque, je l’ai rarement prise en défaut. Il y a bien le bug occasionnel qui fait rire et douter de sa proverbiale solidité (j’ai littéralement tué une base un jour avec un TRUNCATE TABLE suivi d’un Ctrl-C - Dieu merci ce n’était pas en production), ou les optimiseurs de performance qui pètent facilement un câble quand le nombre de jointures devient « intéressant », ou encore le langage maison (le PL/SQL) qui est par certains côtés un peu limité mais n’est pas mal pensé…

Globalement il n’y a pas de quoi se plaindre. Surtout par contraste avec SAP.

À mon nouveau poste, la maintenance d’une base Oracle déjà installée et paramétrée depuis six mois ne s’était pas non plus révélée trop pénible. Enterprise Manager, l’interface graphique d’administration de la version 9i, a le mérite d’exister, contrairement à il y a quelques années, et si elle n’est pas un modèle d’ergonomie, elle permet de faire son travail. Certes, certaines options un peu avancées (du genre compactage de tablespaces pour récupérer quelques gigaoctets de disque) ne sont pas disponibles sans invoquer un outil non installé par défaut, mais je me suis amusé à générer en PL/SQL les ordres du genre ALTER DATABASE nécessaires. Il est bon de savoir mettre les mains dans le cambouis de temps à autre…

De toutes façons, EM a disparu en version 10g, remplacé par une interface web beaucoup plus lourde et anti-ergonomique.

Installation

L’installation d’une base, même moderne (version 10g), c’est parfois autre chose. Certes, je complique les choses, il y avait déjà sur le serveur une autre instance (9i) que je ne tiens pas à détruire, et il y avait une autre installation 10g, bancale.

D’entrée, la base Oracle ne veut pas être réinstallée sous le même répertoire (ORACLE_HOME) qu’une précédente installation. Cette ancienne instance peut être dans la corbeille depuis longtemps, la corbeille vidée, tous les fichiers de config connus purgés[3], et la base de registres de Windows nettoyée, Oracle refuse de réutiliser le nom et l’emplacement. Quelque part dans le .XML maintenu par le programme d’installation universel d’Oracle[4], il y a la mention de l’ancienne instance. Il faut donc relancer le programme d’installation pour désinstaller ce qui n’existe plus. Bref.

Je m’étais déjà pris le second écueil en pleine face à l’époque où je testais la version Mac OS X d’Oracle 10g (immonde bouse dont aucun script n’était adapté au dialecte maison d’Unix courant des Mac ; c’était une bêta mais tout de même...) : il lui faut une IP fixe ! Il se contrefiche que ce soit une fausse IP, qu’on lui enlève ensuite, mais pour installer, désolé, faut pas de DHCP. Sublime. La magouille pour contourner est documentée, mais ça sent quand même le bricolage (avec forcément un effet de bord par-ci ou par-là quand on fait joujou avec le DNS).

Finalement on arrive au cœur du problème système, et on est libre de nommer, dimensionner, paramétrer, sa toute nouvelle base et de se poser des questions sur la nécessité d’avoir l’option OLAP, sur comment répartir la mémoire entre SGA et PGA, etc. grâce à plusieurs assistants qui s’enchaînent les uns les autres.

Il y eut juste un petit hoquet pendant la mise en place de la base (elle était DÉJÀ dans le TNSNAMES.ORA, oh insulte suprême !). Problème qui n’en était pas un, vite corrigé. La suite se passe correctement. Mais l’installateur (celui qui a lancé l’assistant de configuration de base précédemment perturbé), lui, repère une ligne dans un log d’erreur (Oracle adore laisser des fichiers de logs partout, comme mon fils laisse traîner ses dessins dans tout l’appartement). Il se plaint qu’il y a eu un problème, que je dois relancer l’assistant fautif. Puis tout se fige. Je n’ai jamais repris la main.

Quant à relancer le programme d’installation pour reprendre cette main et compléter, impossible : le ORACLE_HOME est en mémoire, il est hors de question d’installer par dessus. Désinstallation du truc mal installé d’abord obligatoire... :-( Et c’est long, une installation de 10g...[5]

C’est bien simple : j’ai eu le temps de taper tout ce que vous lisez ci-dessus depuis que j’ai cliqué sur Enlever pour désinstaller un Oracle 10g. Le CPU est à 100% depuis le début (et la barre de progression à 99% depuis presque aussi longtemps), je n’ai aucune idée de ce qu’il fait réellement, mais toutes les minutes il indique supprimer un morceau différent. Je suspecte qu’il sous-traite en Inde par Internet pour être aussi lent, c’est pas possible autrement. Même la désinstallation de Norton sur le portable tout neuf de ma voisine a été plus courte.

Bien sûr, un programme de désinstallation figé supprimé ne peut pas forcément être relancé : apparemment il se supprime lui-même avant la fin de la désinstallation. Comment désinstallé-je sans programme de désinstallation ? (Ouf, il était encore sur le CD).

Moralité : pour désinstaller un ORACLE_HOME, le plus rapide est :
- de le détruire par l’explorateur,
- de lancer l’installateur universel et de lui faire supprimer la référence à ce Home.

Il faut savoir être bourrin parfois.

PS : Ah, j’ai cru être plus finaud que lui en repartant de zéro, en créant l’instance d’abord, et en créant la base de données dans un deuxième temps. Au premier abord (longtemps après, c’est dingue le temps qu’il lui faut pour créer une base vide), cela fonctionne. Au deuxième abord on s’aperçoit qu’il n’y a ni listener actif, ni TNSNAMES.ORA renseigné. Trop compliqué à rajouter spontanément je suppose. Les docs de formation confirment que c’est à bibi de se taper le boulot. Bravo !

Finalement, après avoir joué un temps avec les TNSNAMES.ORA et les LISTENER.ORA, le $PATH et toutes ces sortes de choses, fouillé sur le web, j’ai mes bases fonctionnelles, et utilisables depuis les deux versions (9i et 10g) de SQL*Plus. Même l’interface web d’administration fonctionne. Par contre, iSQL*Plus refuse de s’installer, il plante en demandant d’envoyer au support une poignée de fichiers vides. On fera sans.

PS bis : Depuis que j’ai brouillonné les lignes ci-dessus, j’ai également dépanné un collègue pas très porté sur la technique à se dépêtrer de son installation. J’ai découvert qu’une 9i installée après désinstallation (sauvage ?) d’une 8 utilisait les fichiers de configuration (TNSNAMES.ORA et LISTENER.ORA) laissés par ladite 8, mais installait quand mêmes les siens. C’est toujours sympa les fichiers en double. SQL*Plus fonctionnait très bien, mais impossible de lancer la console d’administration. Ce n’est pas la cause qui m’a fait braire (un SERVICE_NAME au lieu d’un SID), mais le message d’erreur totalement absent. Il est rare qu’une application ne réagisse pas du tout après un clic sur OK.

Quand je pense qu’il paraît que le libre à la réputation d’être compliqué et difficile à installer...

Notes

[1] Du même nom que le concurrent détenu racheté par Business Objects, rien que pour tenter de lui ravir la première place sur Google.

[2] À propos d’ergonomie : depuis que je connais Oracle, SAP et Business Objects, je peste beaucoup moins contre les outils Microsoft. C’est pas Apple certes.

[3] Pour ceux qui ne connaissent pas, Oracle est un grand amateur de très nombreux fichiers de configuration répartis un peu partout sur le disque dur : config du listener, config des services réseaux, fichiers de contrôle de la base, fichier d’initialisation d’icelle, fichier binaire de configuration... Une véritable orgie née du louable mais ici débile souci de ne surtout pas changer les habitudes des anciens DBA maison au prix de la santé mentale de milliers de clients.

[4] Vous avez vu ? Encore un programme qui croit qu’il fait mieux que les outils d’administration du système d’exploitation et qu’une norme simple et stricte à partir du système de fichiers pour gérer ce qui est installé sur une machine.

[5] Moins que Business Objects version XI, mais celui-là est hors concours.