Oracle 9i

07 Apr. 2007
Auteur : lecharcutierdelinux
Responsable : Jul
Score ( voter ) :
Connexes : Même auteur | Même responsable | Historique
Oracle est ce qu'on appelle un système de gestion de bases de données relationnelles (SGBDR pour les intimes). C'est en 1977 que Lawrence Ellison, Bob Miner et Ed Oates fondent la société "Relational Software Incorporated (RSI)". Ils conçoivent un RDBMS appelé Oracle, le premier système commercial relationnel disponible sur le marché. Aujourd'hui Oracle est le leader du marché des SGBDR, il détient près de 40 % des parts du marché professionnel et permet de gérer des bases de données de l'ordre du To. Il est disponible pour de nombreuses saveurs d'Unix, pour Linux et pour Windows. Dans ce document je détaille l'installation de la version 9iR2 (i pour Internet) d'Oracle, et ce bien que la version 10g (g pour grid ou grappe en Français) soit disponible. Oracle 9i supporte pleinement la norme SQL3 et propose l'approche objet-relationnelle la plus aboutie actuellement. Le tutorial a été testé sur une Mandriva 9.1, il se peut qu'il fonctionne tel quel sur une autre distribution, mais je ne donne aucune garantie.

1. Configuration matérielle nécessaire

Pour fonctionner oracle a besoin d'au minimum ceci :

2. Configuration logicielle nécessaire

Vous devez avoir les logiciels suivants installés : awk, sort et basename dans le répertoire /bin/. S'ils ne sont pas installés, installez-les. S'ils sont installés dans /usr/bin/ par exemple au lieu de /bin/ faîtes, les liens suivants :
ln -s /usr/bin/awk /bin/awk ln -s /usr/bin/sort /bin/sort ln -s /usr/bin/basename /bin/basename
Il vous faut également les paquetages : gcc, glibc, binutils, db, perl et les -dev(el) correspondant quand il y'en a. Pour les utilisateurs de Mandriva, il s'agit de : Tous ces paquetages se trouvent sur les cdroms de votre distribution. Si votre distribution en propose, préférez l'outil de gestion efficace des dépendances (apt-get pour Debian, urpmi pour Mandriva).

3. Préparez Linux pour Oracle

Pour fonctionner correctement, Oracle à besoin que votre noyau soit dans une certaine configuration. Toutes les commandes qui suivent s'exécutent en root.

4. Utilisateur et groupes pour Oracle

Pour commencer, créez les groupes "dba" pour les droits sur "SYSDBA" pour gérer le SGBDR, "oper" pour les droits sur "SYSOPER" pour le démarrage et l'arrête du SGBDR et enfin "oinstall" pour les droits sur "ORAINVENTORY" pour accéder au répertoire de l'installateur java oraInventory. Toutes les commandes qui suivent s'exécutent en root.
groupadd dba groupadd oinstall groupadd oper
Il est également important de créer un utilisateur spécifique à Oracle : "oracle". Cet utilisateur aura des droits limités mais suffisant pour lancer/arrêter/gérer Oracle. C'est une question de sécurité. useradd -d /u01/app/oracle/product -g oinstall -G dba,oper -m -k /etc/skel -s /bin/bash oracle Attribuez-lui un mot de passe:
passwd oracle
Tapez et confirmez, le mot de passe. En principe, le répertoire /u01/app/oracle/product devrait être créé, si ce n'est pas le cas, vous pouvez le créer par :
mkdir -p /u01/app/oracle/product
Créez ou éditez le fichier /u01/app/oracle/product/.bash_profile et rajoutez-y ceci :
export LD_ASSUME_KERNEL=2.2.5
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product
export ORACLE_TERM=xterm
export ORACLE_SID=ORTD
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=${ORACLE_HOME}/JRE:${ORACLE_HOME}/jlib:${ORACLE_HOME}/rdbms/jlib
export CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/network/jlib
export CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/classes.zip
export NLS_LANG=french_france.WE8ISO8859P15
export VAROPT=/u01/app/oracle/log

if [ "${LD_LIBRARY_PATH:-}" == "" ]; then
LD_LIBRARY_PATH=${ORACLE_HOME}/lib:/usr/lib:/usr/local/lib
else
LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${ORACLE_HOME}/network/lib
fi
export LD_LIBRARY_PATH
Finissez en adaptant l'arborescence nécessaire à Oracle :
chown -R oracle.dba /u01/app/oracle chown -R oracle.oinstall /u01/app/oracle/product mkdir -p /u01/app/oracle/log chown -R oracle.oinstall /u01/app/oracle/log
Tout oracle se trouvera dans /u01/app/oracle/ . /u01/app/oracle/product sera le répertoire personnel de l'utilisateur oracle et les logs seront dans /u01/app/oracle/log. Le jour où vous souhaiter désinstaller oracle, rien de plus simple, il suffira de supprimer le contenu de /u01/app/oracle/.

5. Télécharger et démarrer l'installation d'Oracle

Peu de gens le savent, mais Oracle 9iR2 est disponible gratuitement pour un Usage "éducatif". Ce document n'est pas une incitation à la transgression des règles dictées par les concepteurs du logiciel. N'utilisez ce logiciel que dans les limites définies par Oracle. Cette mise au point faîtes, rendez-vous sur technet.oracle.com. Là téléchargez les 3 fichiers de la version 9.2.0 "standard-entreprise" : lnx_920Disk1.cpio.gz, lnx_920Disk2.cpio.gz et lnx_920Disk3.cpio.gz. Vous pouvez graver ces fichiers sur des cdroms pour une future réinstallation ou si vous êtes limité en espace disque. Dans la suite, je supposerais que vos 3 fichiers soient dans /home/math/Oracle, adaptez à votre cas. Pour décompresser les archives, tapez dans un terminal :
cd /home/math/Oracle gunzip *.gz cpio -idmv lnx_920_disk1.cpio cpio -idmv lnx_920_disk2.cpio cpio -idmv lnx_920_disk3.cpio
A la suite de quoi vous devriez trouver les 3 répertoires suivants : Disk1/, Disk2/, Disk3/ dans /home/math/Oracle. Maintenant, autorisez l'accès à votre DISPLAY et devenez oracle. Concrètement tapez :
xhost +localhost su oracle
Vous pouvez lancer l'installation (en étant oracle) :
/home/math/Oracle/Disk1/install/linux/runInstaller

6. Présentation des versions

Lors de l'installation d'oracle (qui se fait sous l'identité oracle), il est possible de choisir entre trois propositions :

7. L'Installation en image

L'installation se fait sous l'identité d'orcale. La fenêtre de bienvenue apparaît :
Cliquer sur suivant et spécifier le chemin d'installation qui mène vers l'inventaire :
Ici vous devez saisir le groupe Unix qui pourra ajouter des composants logiciels, comme nous l'avons vu plus haut il s'agit du groupe "dba" :
Certaines opérations ont besoin des pouvoirs de root:
Ouvrez un terminal exécuter le script comme je l'ai fait dessous. Une fois celui-ci achevé, vous pourrez reprendre l'installation en revenant sur la fenêtre et cliquer "continuer" :
Etape importante, vous devez spécifier les sources des fichiers d'installation (il trouvera automatiquement) mais aussi le répertoire maison d'Oracle. Si vous avez suivi mon arborescence, nous installerons cela dans /u01/app/oracle/product/, on vous demandera de créer le sous-répertoire "product" accepter-le :
Le moment est venu de choisir, bien sûr j'ai pris le premier pour ce how-to :
Nous opterons ensuite pour la version la plus complète qui est la "Entreprise Edition". Comme vous le voyez, il vous faudra au moins 2Go :
Le choix qui suit permet de pré-configurer une base selon des modèles, je ne me pencherai pas sur le sujet car cela dépend totalement de ce que vous souhaitez faire. Sachez que certains progiciels, comme SAP sont composé de 24.000 tables. C'est pour cela qu'Oracle propose un type de base de donnée modèle, cela permettra d'optimiser le logiciel en fonction de vos besoins et de la taille des données à stocker. Pour ma part j'ai opté pour le choix "General".
Maintenant nous allons donner un nom de type FQDN (Full Qualified Domain Name) à notre base. Je lui ai donné le même nom que le nom d'hôte de ma machine. Le SID est un identifiant unique de la base, je l'ai laissé tel quel car je n'accéderai à ma base que par le FQDN de toute façon.
Voici l'endroit où seront stockés les tablespaces. C'est un petit peu la même architecture qu'avec SAP, seulement SAP impose un standard qui sapdata1, sapdata2 etc... Ici nous aurons oradata qui est par défaut le standard Oracle.
Il faut aussi indiquer le type d'encodage de la base. L'installeur Java a détecté par rapport à mon système d'exploitation mon type. De plus nous avons aussi éditer les variables d'environnement utilisateurs plus tôt et nous avons déjà indiqué la valeur pour la france. Vous pouvez donc cliquer sur suivant :
Un bref résumé de ce que nous venons de choisir et paramètre :
Pendant la phase d'installation et selon sa puissance votre PC, va mouliner un moment. Vous comprendrez aussi l'intérêt d'avoir copié les sources sur le disque dur et non sur un CDROM. Une fois l'installation terminée, l'installeur effectue les liaisons d'oracle avec ses composants. Et c'est à ce moment qu'intervient le premier bug :
Ne vous inquiétez pas car ce problème a été résolu par la technet d'Oracle. Ouvrez un terminal, et sous l'identité oracle éditez le fichier suivant :
vi $ORACLE_HOME/ctx/lib/env_ctx.mk
Une fois dans le fichier déplacer vous jusqu'en bas, il s'y trouve une longue ligne commençant par "INSO_LINK", virez-la (echap+d+d), et remplacer-la par celle ci-dessous : INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl $(LDLIBFLAG)sc_ca $(LDLIBFLAG)sc_fa $(LDLIBFLAG)sc_ex $(LDLIBFLAG)sc_da $(LDLIBFLAG)sc_ut $(LDLIBFLAG)sc_ch $(LDLIBFLAG)sc_fi $(LLIBCTXHX) $(LDLIBFLAG)c -Wl,-rpath,$(CTXHOME)lib $(CORELIBS) $(COMPEOBJS) Elle est presque pareille, il n'y a que ce qui est en rouge qui est ajoutée. Une fois cette opération passée, revenez sur le message d'erreur et cliquer sur "réessayer", par miracle l'installation repart :
Vous devrez encore une fois exécuter un script depuis un terminal qui nécessite les droits de root :
Procéder comme ceci, il vous sera demandé le local bin directory, ne répondez rien et valider :
Vous croyez alors que vous avez réussi ? Et bien non, il y'a encore un problème avec un composant : le dbca.
En lisant de plus près les détails de l'erreur du composant, on se rend compte que c'est un problème lié à la gestion de la mémoire et des threads. Technet a résolu le problème en procédant de la sorte. Ouvrez un terminal et connectez-vous sous root, puis taper :
touch /etc/rac_on
Revenez ensuite à l'écran d'erreur, cliquer sur le composant qui a échoué puis sur "réessayer". Et encore une fois, l'installation est sauvée et repart :
Par la suite un l'assistant de configuration de base de donnée, vous demandera des informations sur les comptes oracle par défaut :
Voilà ! c'est terminé :
Voici un test du serveur web concluant :

8. Liens

Pour plus d'informations consulter la technet d'Oracle, elle regorge d'informations précieuses. Si vous recevez un code d'erreur, n'hésitez pas à le taper dans google, vous tomberez sans doute sur une page de la technet expliquant les causes d'un bug et sa résolution.

9. Ressources papiers

Les livres sur Oracle ne manquent pas, en revanche de bons livres d'Oracle sous Linux sont plutôt rares. Je vous conseille toutefois ce bouquin d'environ 900 pages : "Oracle 9i sous Linux" des éditions EYROLLES. Attention toutes fois, ce livre est splendide mais il ne vous aidera pas à résoudre les bugs d'installation. C'est pourquoi j'ai décidé de créer cette page car j'ai énormément buté pour installer ce SGBDR. A part cela c'est un ouvrage indispensable pour comprendre et administrer Oracle sous Linux.

10. Précisions

Je souhaite remercier toutes les personnes sur les newsgroups qui donnent des coups de mains aux autres. En effet, la version 9i d'oracle a fait explosé certains forum (notamment celui de la technet-linux) de messages de détresse. La version d'avant la 9iR1 était encore plus difficile à installer à cause des problèmes de compatibilité java. Heureusement cette dernière version, vous installe la version adéquate du JRE. En espérant que ce how-to vous servira.

11. Dernière MAJ: Oracle 10g sous Fedora Core 1

Il s'agit juste d'un pense-bête pour une installation rapide et sans problème sur cette nouvelle version. Oracle a fait beaucoup d'effort pour les installations Linux, celle-ci se passe sous Fedora Core 1. Liste des paquetages nécessaire: nutils-2.14.90.0.6-3.i386.rpm mpat-db-4.0.14-2.i386.rpm mpat-gcc-7.3-2.96.118.i386.rpm mpat-gcc-c++-7.3-2.96.118.i386.rpm mpat-libstdc++-7.3-2.96.118.i386.rpm mpat-libstdc++-devel-7.3-2.96.118.i386.rpm c-3.3.2-1.i386.rpm c-c++-3.3.2-1.i386.rpm ibc-devel-2.3.2-101.i386.rpm ibc-headers-2.3.2-101.i386.rpm ibc-kernheaders-2.4-8.36.i386.rpm bstdc++-3.3.2-1.i386.rpm bstdc++-devel-3.3.2-1.i386.rpm enmotif21-2.1.30-8.i386.rpm enmotif-2.2.2-16.1.i386.rpm enmotif-devel-2.2.2-16.1.i386.rpm tarch-1.0-1.i386.rpm xtraction du CD d'install: pio -idmv < ship.db.cpio ernel tuning: sctl -w kernel.sem="250 32000 100 128" ho "kernel.sem=250 32000 100 128" >> /etc/sysctl.conf ho "kernel.shmmax=`expr \( 512 \/ 2 \) \* 1024 \* 1024`" >> /etc/sysctl.conf ho 65536 > /proc/sys/fs/file-max imit -n 65536 imit -u 16384 imit -f réation de l'User et groups: roupadd dba roupadd oinstall roupadd oper seradd -d /oracle/product/10g -G oinstall,oper -g dba oracle asswd oracle (choisissez un mot de passe) hown -R oracle:dba /oracle/ diter Fichier de profile: i /home/oracle/.bash_profile ller dans le fichier du profile ce qui suit: Get the aliases and functions [ -f ~/.bashrc ]; then ~/.bashrc User specific environment and startup programs TH=$PATH:$HOME/bin port PATH set USERNAME port LD_ASSUME_KERNEL=2.2.5 port ORACLE_BASE=/oracle/product port ORACLE_HOME=/oracle/product/10g port ORACLE_TERM=xterm port ORACLE_SID=MAT port PATH=$PATH:$ORACLE_HOME/bin ASSPATH=${ORACLE_HOME}/JRE:${ORACLE_HOME}/jlib:${ORACLE_HOME}/rdbms/jlib port CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/network/jlib port CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/classes.zip port NLS_LANG=french_france.WE8ISO8859P15 port VAROPT=/oracle/product/10g/log [ "${LD_LIBRARY_PATH:-}" == "" ]; then _LIBRARY_PATH=${ORACLE_HOME}/lib:/usr/lib:/usr/local/lib se _LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH} _LIBRARY_PATH=${LD_LIBRARY_PATH}:${ORACLE_HOME}/network/lib port LD_LIBRARY_PATH diter Fichier /etc/redhat-release pour "berner" l'installateur Oracle, il doit contenir uniquement cette ligne: d Hat Linux release 2.1 (drupal) érif de l'installation u - oracle qlplus /nolog onnect / as sysdba tartup base doit démarrer..... hutdown base doit se stopper.... installation est maintenant terminée.