L’absence de documentation et le non-respect des normes sont souvent la source d’une inutile perte de temps. L’installation d’Oracle sous Linux (Mandriva en particulier), une fois que l’on connait la procédure à suivre est un jeu d’enfant (si tout se passe comme prévu bient entendu). La perte de temps est occasionné par le fait que contrairement à la plupart des logiciels, Oracle ne propose pas de dépôt (alors que même Google le fait !). Il est donc nécessaire de tout installer manuellement, y compris les dépendances. La documentation étant inexistante, et le logiciel à installer monstrueusement complexe, il est presque impossible de trouver tout seul la procédure (à moins d’être le dieu du système).

J’ai pour ma part passé un temps considérable sur cette installation, et force est de constater que j’ai perdu beaucoup de temps parce que les informations dont j’avais besoin étaient difficiles à trouver, parce qu’il n’existe qu’un seul tutoriel décrivant de façon propre la procédure à suivre, et que j’ai mis beaucoup de temps à le trouver. Avant de vous décrire les étapes de l’installation, je vais vous décrire les symptômes que j’ai rencontré.

L’installation du rpm oracle-xe-10.2.0.1-1.0.i386.rpm se fait fort aisément avec la commande (ne le faites pas tout de suite, il y a des étapes à exécuter au préalable)

rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm

C’est cependant loin d’être suffisant pour qu’Oracle fonctionne. Si vous essayez de vous connecter sur http://127.0.0.1:8080/apex, vous avez un magnifique connexion refusée. Et si vous arrivez à lancer sqlplus en ligne de commande, vous aurez droit à :

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory

Le tutoriel que j’avais utilisé dans un premier temps était totalement muet sur cette erreur, j’en suis venu à me demander si je n’étais pas le seul à avoir ce problème. J’ai alors scruté le net à la recherche d’une solution. Et cela en vain. On me décrivait sur les forums des symptômes proches, mais résultant malheureusement d’erreurs différentes.

J’ai fini par trouver une partie de la solution sur le site (site aujourd’hui disparu) de Gilles Briard. Il y a ensuite diverses bidouilles à faire pour que le tout fonctionne. Avant de lire la suite, vous devriez désinstaller oracle :

urpme oracle-xe

Installation du rpm

Pour fonctionner, Oracle nécessite quelques rpms. Si Oracle, comme tout le monde utilisait des dépôts et gérait les dépendances, ça nous simplifierait grandement la vie. Comme ce n’est pas le cas, il est nécessaire d’installer manuellement les deux packageslibaio et bc, en root :

urpmi libaio bc

Il faut ensuite d’ajouter les lignes suivantes à la fin du fichier /etc/sysctl.conf :

###########
# Valeurs pour Oracle XE
###########
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

Puis lancer la commande

sysctl -p

Vous pouvez ensuite lancer l’installation d’Oracle avec la commande :

rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm

Vous pouvez conserver tous les paramètres par défaut.

Si tout se passe comme prévu, il est possible pour vous d’utiliser oracle en passant parhttp://127.0.0.1:8080/apex/. Si vous souhaitez utiliser sqlplus en ligne de commande, il y a quelques manipulations supplémentaires à effectuer. Elles sont décrites dans la page suivante de l’article.

Utilisation de sqlplus en ligne de commande

Certaines personnes, ont tout comme moi un goût prononcé pour la ligne de commande. Grande doit être leur frustration lorsqu’on les force à utiliser Oracle via un navigateur. Les étapes suivantes vous permettront d’utiliser sqlplus depuis la console.

Tout d’abord, il vous faut localiser sqlplus dans votre arborescence. Sur mon système, il se trouve ici :

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin

Il est possible que cela diffère légèrement sur votre système, vous ne devriez néanmoins pas avoir trop de difficultés à le localiser. Si une fois cela fait, vous lancez sqlplus, vous obtenez ce magnifique message d’erreur :

[klaus@localhost bin]$ ./sqlplus
Error 6 initializing SQL*Plus
Message file sp1.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

A moins que vous souhaitiez perdre autant de temps que j’en ai perdu, ne vous conformez pas au message que vous lisez. Il existe dans le même répertoire un script appelé oracle_env.sh et contenant les instructions suivantes :

[klaus@localhost bin]$ more oracle_env.sh
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_HOME
ORACLE_SID=XE
export ORACLE_SID
NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export NLS_LANG
PATH=$ORACLE_HOME/bin:$PATH
export PATH
if [ $?LD_LIBRARY_PATH ]
then
        LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
else
        LD_LIBRARY_PATH=$ORACLE_HOME/lib
fi
export LD_LIBRARY_PATH

Il s’agit d’un script qui positionne correctement toutes les variables d’environnement nécessaires au bon fonctionnement d’Oracle. Exécutez le script :

[klaus@localhost bin]$ ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
[klaus@localhost bin]$ export ORACLE_HOME
[klaus@localhost bin]$ ORACLE_SID=XE
[klaus@localhost bin]$ export ORACLE_SID
[klaus@localhost bin]$ NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
[klaus@localhost bin]$ export NLS_LANG
[klaus@localhost bin]$ PATH=$ORACLE_HOME/bin:$PATH
[klaus@localhost bin]$ export PATH
[klaus@localhost bin]$ if [ $?LD_LIBRARY_PATH ]
> then
>         LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
> else
>         LD_LIBRARY_PATH=$ORACLE_HOME/lib
> fi
[klaus@localhost bin]$ export LD_LIBRARY_PATH

Je l’ai pour ma part exécuté comme un boucher : en copiant-collant dans la console le contenu du script. Libre à vous d’utiliser des méthodes plus fines. Il est aisé de vérifier si ça a fonctionné, il suffit pour ce faire d’afficher le contenu de la variable d’environnement $PATH :

[klaus@localhost bin]$ echo $PATH
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin:/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/usr/lib/qt4/bin:/usr/bin:/opt/kde3/bin:/home/klaus/bin

Pour que vos variables d’environnement soit toujours bien positionnées. Il faut éditer le fichier ~/.bashrc et ajouter dedans soit le contenu du fichier oracle_env.sh, soit une commande qui va exécuter les intructions de ce fichier. Une fois cela fait vous pouvez exécuter :

[klaus@localhost bin]$ cd
[klaus@localhost ~]$ sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Avr. 26 05:15:51 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Entrez le nom utilisateur : system
Entrez le mot de passe :

Connecté à :
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

SQL>